From 9058c59794771d3827eb744c12c958a5539463ab Mon Sep 17 00:00:00 2001 From: fliiiix Date: Wed, 3 Dec 2025 13:52:37 +0100 Subject: [PATCH 1/4] [Python] Better error messages on write --- include/flatbuffers/code_generators.h | 4 ++ include/flatbuffers/file_manager.h | 13 ++++++ src/file_manager.cpp | 11 +++++ src/file_name_manager.cpp | 5 +++ src/idl_gen_python.cpp | 63 +++++++++++++++------------ 5 files changed, 69 insertions(+), 27 deletions(-) diff --git a/include/flatbuffers/code_generators.h b/include/flatbuffers/code_generators.h index d284ac5a683..0e69eb8f12f 100644 --- a/include/flatbuffers/code_generators.h +++ b/include/flatbuffers/code_generators.h @@ -93,6 +93,10 @@ class BaseGenerator { public: virtual bool generate() = 0; + // Modern alternative to bool generate() as this provides a way to + // return a specific error message in case of an error and nullptr on success. + virtual const char* Generate() { return nullptr; } + static std::string NamespaceDir(const Parser& parser, const std::string& path, const Namespace& ns, const bool dasherize = false); diff --git a/include/flatbuffers/file_manager.h b/include/flatbuffers/file_manager.h index bafe6f29b97..ce7ea3237f3 100644 --- a/include/flatbuffers/file_manager.h +++ b/include/flatbuffers/file_manager.h @@ -33,10 +33,17 @@ class FileSaver { virtual bool SaveFile(const char* name, const char* buf, size_t len, bool binary) = 0; + virtual const char* AttemptSave(const char* name, const char* buf, size_t len, + bool binary) = 0; + bool SaveFile(const char* name, const std::string& buf, bool binary) { return SaveFile(name, buf.c_str(), buf.size(), binary); } + const char* AttemptSave(const char* name, const std::string& buf, bool binary) { + return AttemptSave(name, buf.c_str(), buf.size(), binary); + } + virtual void Finish() {} private: @@ -52,6 +59,9 @@ class RealFileSaver final : public FileSaver { public: bool SaveFile(const char* name, const char* buf, size_t len, bool binary) final; + + const char* AttemptSave(const char* name, const char* buf, size_t len, + bool binary) final; }; class FileNameSaver final : public FileSaver { @@ -59,6 +69,9 @@ class FileNameSaver final : public FileSaver { bool SaveFile(const char* name, const char* buf, size_t len, bool binary) final; + const char* AttemptSave(const char* name, const char* buf, size_t len, + bool binary) final; + void Finish() final; private: diff --git a/src/file_manager.cpp b/src/file_manager.cpp index 13b1580af04..c728e351fd5 100644 --- a/src/file_manager.cpp +++ b/src/file_manager.cpp @@ -30,4 +30,15 @@ bool RealFileSaver::SaveFile(const char* name, const char* buf, size_t len, return !ofs.bad(); } +const char* RealFileSaver::AttemptSave(const char* name, const char* buf, size_t len, + bool binary) +{ + if (!SaveFile(name, buf, len, binary)) + { + static std::string error_msg; + error_msg = "Could not save file " + std::string(name ? name : "unknown");; + return error_msg.c_str(); + } + return nullptr; +} } // namespace flatbuffers diff --git a/src/file_name_manager.cpp b/src/file_name_manager.cpp index aad63de8c6b..90400e70473 100644 --- a/src/file_name_manager.cpp +++ b/src/file_name_manager.cpp @@ -33,6 +33,11 @@ bool FileNameSaver::SaveFile(const char* name, const char* buf, size_t len, return true; } +const char *FileNameSaver::AttemptSave(const char *name, const char *buf, size_t len, bool binary) +{ + return SaveFile(name, buf, len, binary) ? nullptr : "Printing filename failed"; +} + void FileNameSaver::Finish() { for (const auto& file_name : file_names_) { // Just print the file names to standard output. diff --git a/src/idl_gen_python.cpp b/src/idl_gen_python.cpp index 314c3c2d855..d6139f15561 100644 --- a/src/idl_gen_python.cpp +++ b/src/idl_gen_python.cpp @@ -57,7 +57,7 @@ class PythonStubGenerator { Keywords(version)}, version_(version) {} - bool Generate() { + const char* Generate() { if (parser_.opts.one_file) { Imports imports; std::stringstream stub; @@ -91,7 +91,8 @@ class PythonStubGenerator { std::string filename = namer_.Directories(*def->defined_namespace) + namer_.File(*def, SkipFile::Suffix); - if (!SaveFile(filename, imports, stub)) return false; + auto error = SaveFile(filename, imports, stub); + if(error) return error; } for (const StructDef* def : parser_.structs_.vec) { @@ -105,14 +106,15 @@ class PythonStubGenerator { std::string filename = namer_.Directories(*def->defined_namespace) + namer_.File(*def, SkipFile::Suffix); - if (!SaveFile(filename, imports, stub)) return false; + auto error = SaveFile(filename, imports, stub); + if(error) return error; } - return true; + return nullptr; } private: - bool SaveFile(const std::string& filename, const Imports& imports, + const char* SaveFile(const std::string& filename, const Imports& imports, const std::stringstream& content) { std::stringstream ss; GenerateImports(ss, imports); @@ -120,7 +122,7 @@ class PythonStubGenerator { ss << content.str() << '\n'; EnsureDirExists(StripFileName(filename)); - return parser_.opts.file_saver->SaveFile(filename.c_str(), ss.str(), false); + return parser_.opts.file_saver->AttemptSave(filename.c_str(), ss.str(), false); } static void DeclareUOffset(std::stringstream& stub, Imports* imports) { @@ -2758,11 +2760,15 @@ class PythonGenerator : public BaseGenerator { EndBuilderBody(code_ptr); } - bool generate() { + bool generate() { return false; } + + const char* Generate() { std::string one_file_code; ImportMap one_file_imports; - if (!generateEnums(&one_file_code)) return false; - if (!generateStructs(&one_file_code, one_file_imports)) return false; + auto error = generateEnums(&one_file_code); + if(error) return error; + error = generateStructs(&one_file_code, one_file_imports); + if(error) return error; if (parser_.opts.one_file) { const std::string mod = file_name_ + parser_.opts.filename_suffix; @@ -2772,11 +2778,11 @@ class PythonGenerator : public BaseGenerator { one_file_imports, mod, true); } - return true; + return nullptr; } private: - bool generateEnums(std::string* one_file_code) const { + const char* generateEnums(std::string* one_file_code) const { for (auto it = parser_.enums_.vec.begin(); it != parser_.enums_.vec.end(); ++it) { auto& enum_def = **it; @@ -2793,16 +2799,17 @@ class PythonGenerator : public BaseGenerator { const std::string mod = namer_.File(enum_def, SkipFile::SuffixAndExtension); - if (!SaveType(namer_.File(enum_def, SkipFile::Suffix), + auto error = SaveType(namer_.File(enum_def, SkipFile::Suffix), *enum_def.defined_namespace, enumcode, imports, mod, - false)) - return false; + false); + printf("generateEnums: %s", error); + if (error) return error; } } - return true; + return nullptr; } - bool generateStructs(std::string* one_file_code, + const char* generateStructs(std::string* one_file_code, ImportMap& one_file_imports) const { for (auto it = parser_.structs_.vec.begin(); it != parser_.structs_.vec.end(); ++it) { @@ -2825,13 +2832,13 @@ class PythonGenerator : public BaseGenerator { } else { const std::string mod = namer_.File(struct_def, SkipFile::SuffixAndExtension); - if (!SaveType(namer_.File(struct_def, SkipFile::Suffix), - *struct_def.defined_namespace, declcode, imports, mod, - true)) - return false; + auto error = SaveType(namer_.File(struct_def, SkipFile::Suffix), + *struct_def.defined_namespace, declcode, imports, mod, + true); + if (error) return error; } } - return true; + return nullptr; } // Begin by declaring namespace and imports. @@ -2871,10 +2878,10 @@ class PythonGenerator : public BaseGenerator { } // Save out the generated code for a Python Table type. - bool SaveType(const std::string& defname, const Namespace& ns, + const char* SaveType(const std::string& defname, const Namespace& ns, const std::string& classcode, const ImportMap& imports, const std::string& mod, bool needs_imports) const { - if (classcode.empty()) return true; + if (classcode.empty()) return nullptr; std::string code = ""; BeginFile(LastNamespacePart(ns), needs_imports, &code, mod, imports); @@ -2889,11 +2896,11 @@ class PythonGenerator : public BaseGenerator { i = directories.find(kPathSeparator, i + 1)) { const std::string init_py = directories.substr(0, i) + kPathSeparator + "__init__.py"; - parser_.opts.file_saver->SaveFile(init_py.c_str(), "", false); + parser_.opts.file_saver->AttemptSave(init_py.c_str(), "", false); //todo return on error } const std::string filename = directories + defname; - return parser_.opts.file_saver->SaveFile(filename.c_str(), code, false); + return parser_.opts.file_saver->AttemptSave(filename.c_str(), code, false); } private: @@ -2909,11 +2916,13 @@ static const char* GeneratePython(const Parser& parser, const std::string& path, if (!version.IsValid()) return "The provided Python version is not valid"; python::PythonGenerator generator(parser, path, file_name, version); - if (!generator.generate()) return "could not generate Python code"; + auto error = generator.Generate(); + if (error) return error; if (parser.opts.python_typing) { python::PythonStubGenerator stub_generator(parser, path, version); - if (!stub_generator.Generate()) return "could not generate Python type stubs"; + auto error = stub_generator.Generate(); + if (error) return error; } return nullptr; } From 6544ef9633ea6f51020ba066a877b708bc3b64f1 Mon Sep 17 00:00:00 2001 From: fliiiix Date: Wed, 3 Dec 2025 13:58:36 +0100 Subject: [PATCH 2/4] [Python] Apply clang-format --- include/flatbuffers/file_manager.h | 7 +++--- src/file_manager.cpp | 14 +++++------ src/file_name_manager.cpp | 7 +++--- src/idl_gen_python.cpp | 38 ++++++++++++++++-------------- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/include/flatbuffers/file_manager.h b/include/flatbuffers/file_manager.h index ce7ea3237f3..ded50399b57 100644 --- a/include/flatbuffers/file_manager.h +++ b/include/flatbuffers/file_manager.h @@ -34,13 +34,14 @@ class FileSaver { bool binary) = 0; virtual const char* AttemptSave(const char* name, const char* buf, size_t len, - bool binary) = 0; + bool binary) = 0; bool SaveFile(const char* name, const std::string& buf, bool binary) { return SaveFile(name, buf.c_str(), buf.size(), binary); } - const char* AttemptSave(const char* name, const std::string& buf, bool binary) { + const char* AttemptSave(const char* name, const std::string& buf, + bool binary) { return AttemptSave(name, buf.c_str(), buf.size(), binary); } @@ -61,7 +62,7 @@ class RealFileSaver final : public FileSaver { bool binary) final; const char* AttemptSave(const char* name, const char* buf, size_t len, - bool binary) final; + bool binary) final; }; class FileNameSaver final : public FileSaver { diff --git a/src/file_manager.cpp b/src/file_manager.cpp index c728e351fd5..276c5693014 100644 --- a/src/file_manager.cpp +++ b/src/file_manager.cpp @@ -14,12 +14,12 @@ * limitations under the License. */ +#include "flatbuffers/file_manager.h" + #include #include #include -#include "flatbuffers/file_manager.h" - namespace flatbuffers { bool RealFileSaver::SaveFile(const char* name, const char* buf, size_t len, @@ -30,13 +30,11 @@ bool RealFileSaver::SaveFile(const char* name, const char* buf, size_t len, return !ofs.bad(); } -const char* RealFileSaver::AttemptSave(const char* name, const char* buf, size_t len, - bool binary) -{ - if (!SaveFile(name, buf, len, binary)) - { +const char* RealFileSaver::AttemptSave(const char* name, const char* buf, + size_t len, bool binary) { + if (!SaveFile(name, buf, len, binary)) { static std::string error_msg; - error_msg = "Could not save file " + std::string(name ? name : "unknown");; + error_msg = "Could not save file " + std::string(name ? name : "unknown"); return error_msg.c_str(); } return nullptr; diff --git a/src/file_name_manager.cpp b/src/file_name_manager.cpp index 90400e70473..a2d31a5133f 100644 --- a/src/file_name_manager.cpp +++ b/src/file_name_manager.cpp @@ -33,9 +33,10 @@ bool FileNameSaver::SaveFile(const char* name, const char* buf, size_t len, return true; } -const char *FileNameSaver::AttemptSave(const char *name, const char *buf, size_t len, bool binary) -{ - return SaveFile(name, buf, len, binary) ? nullptr : "Printing filename failed"; +const char* FileNameSaver::AttemptSave(const char* name, const char* buf, + size_t len, bool binary) { + return SaveFile(name, buf, len, binary) ? nullptr + : "Printing filename failed"; } void FileNameSaver::Finish() { diff --git a/src/idl_gen_python.cpp b/src/idl_gen_python.cpp index d6139f15561..b69163225a3 100644 --- a/src/idl_gen_python.cpp +++ b/src/idl_gen_python.cpp @@ -92,7 +92,7 @@ class PythonStubGenerator { std::string filename = namer_.Directories(*def->defined_namespace) + namer_.File(*def, SkipFile::Suffix); auto error = SaveFile(filename, imports, stub); - if(error) return error; + if (error) return error; } for (const StructDef* def : parser_.structs_.vec) { @@ -107,7 +107,7 @@ class PythonStubGenerator { std::string filename = namer_.Directories(*def->defined_namespace) + namer_.File(*def, SkipFile::Suffix); auto error = SaveFile(filename, imports, stub); - if(error) return error; + if (error) return error; } return nullptr; @@ -115,14 +115,15 @@ class PythonStubGenerator { private: const char* SaveFile(const std::string& filename, const Imports& imports, - const std::stringstream& content) { + const std::stringstream& content) { std::stringstream ss; GenerateImports(ss, imports); ss << '\n'; ss << content.str() << '\n'; EnsureDirExists(StripFileName(filename)); - return parser_.opts.file_saver->AttemptSave(filename.c_str(), ss.str(), false); + return parser_.opts.file_saver->AttemptSave(filename.c_str(), ss.str(), + false); } static void DeclareUOffset(std::stringstream& stub, Imports* imports) { @@ -2766,9 +2767,9 @@ class PythonGenerator : public BaseGenerator { std::string one_file_code; ImportMap one_file_imports; auto error = generateEnums(&one_file_code); - if(error) return error; + if (error) return error; error = generateStructs(&one_file_code, one_file_imports); - if(error) return error; + if (error) return error; if (parser_.opts.one_file) { const std::string mod = file_name_ + parser_.opts.filename_suffix; @@ -2800,8 +2801,8 @@ class PythonGenerator : public BaseGenerator { namer_.File(enum_def, SkipFile::SuffixAndExtension); auto error = SaveType(namer_.File(enum_def, SkipFile::Suffix), - *enum_def.defined_namespace, enumcode, imports, mod, - false); + *enum_def.defined_namespace, enumcode, imports, + mod, false); printf("generateEnums: %s", error); if (error) return error; } @@ -2810,7 +2811,7 @@ class PythonGenerator : public BaseGenerator { } const char* generateStructs(std::string* one_file_code, - ImportMap& one_file_imports) const { + ImportMap& one_file_imports) const { for (auto it = parser_.structs_.vec.begin(); it != parser_.structs_.vec.end(); ++it) { auto& struct_def = **it; @@ -2833,8 +2834,8 @@ class PythonGenerator : public BaseGenerator { const std::string mod = namer_.File(struct_def, SkipFile::SuffixAndExtension); auto error = SaveType(namer_.File(struct_def, SkipFile::Suffix), - *struct_def.defined_namespace, declcode, imports, mod, - true); + *struct_def.defined_namespace, declcode, imports, + mod, true); if (error) return error; } } @@ -2879,8 +2880,8 @@ class PythonGenerator : public BaseGenerator { // Save out the generated code for a Python Table type. const char* SaveType(const std::string& defname, const Namespace& ns, - const std::string& classcode, const ImportMap& imports, - const std::string& mod, bool needs_imports) const { + const std::string& classcode, const ImportMap& imports, + const std::string& mod, bool needs_imports) const { if (classcode.empty()) return nullptr; std::string code = ""; @@ -2892,11 +2893,11 @@ class PythonGenerator : public BaseGenerator { EnsureDirExists(directories); for (size_t i = directories.find(kPathSeparator, path_.size()); - i != std::string::npos; - i = directories.find(kPathSeparator, i + 1)) { + i != std::string::npos; i = directories.find(kPathSeparator, i + 1)) { const std::string init_py = directories.substr(0, i) + kPathSeparator + "__init__.py"; - parser_.opts.file_saver->AttemptSave(init_py.c_str(), "", false); //todo return on error + parser_.opts.file_saver->AttemptSave(init_py.c_str(), "", + false); // todo return on error } const std::string filename = directories + defname; @@ -2911,7 +2912,7 @@ class PythonGenerator : public BaseGenerator { } // namespace python static const char* GeneratePython(const Parser& parser, const std::string& path, - const std::string& file_name) { + const std::string& file_name) { python::Version version{parser.opts.python_version}; if (!version.IsValid()) return "The provided Python version is not valid"; @@ -2957,7 +2958,8 @@ class PythonCodeGenerator : public CodeGenerator { Status GenerateGrpcCode(const Parser& parser, const std::string& path, const std::string& filename) override { - if (!GeneratePythonGRPC(parser, path, filename)) { // TODO add status GeneratePythonGRPC + if (!GeneratePythonGRPC(parser, path, + filename)) { // TODO add status GeneratePythonGRPC return Status::ERROR; } return Status::OK; From 9df6150b05518b6eead6a6894aef0d7b1f8f85c3 Mon Sep 17 00:00:00 2001 From: fliiiix Date: Wed, 3 Dec 2025 14:12:33 +0100 Subject: [PATCH 3/4] [Python] Convert GRPC to const char* return --- grpc/src/compiler/python_generator.cc | 16 ++++++++-------- grpc/src/compiler/python_generator.h | 4 ++-- include/flatbuffers/idl.h | 2 +- src/idl_gen_grpc.cpp | 17 +++++++++-------- src/idl_gen_python.cpp | 5 +++-- 5 files changed, 23 insertions(+), 21 deletions(-) diff --git a/grpc/src/compiler/python_generator.cc b/grpc/src/compiler/python_generator.cc index 7e50266354e..e70ee51ce28 100644 --- a/grpc/src/compiler/python_generator.cc +++ b/grpc/src/compiler/python_generator.cc @@ -130,7 +130,7 @@ class StubGenerator : public BaseGenerator { const Version& version) : BaseGenerator(parser, kStubConfig, path, version) {} - bool Generate() { + const char* Generate() { Imports imports; std::stringstream stub; std::string ns_name{}; @@ -150,7 +150,7 @@ class StubGenerator : public BaseGenerator { } private: - bool SaveStub(const std::string& filename, const Imports& imports, + const char* SaveStub(const std::string& filename, const Imports& imports, const std::string& content) { std::stringstream ss; ss << "# Generated by the gRPC FlatBuffers compiler. DO NOT EDIT!\n" @@ -161,7 +161,7 @@ class StubGenerator : public BaseGenerator { ss << content << '\n'; EnsureDirExists(StripFileName(filename)); - return parser_.opts.file_saver->SaveFile(filename.c_str(), ss.str(), false); + return parser_.opts.file_saver->AttemptSave(filename.c_str(), ss.str(), false); } void Generate(std::stringstream& ss, const ServiceDef* service, @@ -246,7 +246,7 @@ class ServiceGenerator : public BaseGenerator { const Version& version) : BaseGenerator(parser, kConfig, path, version) {} - bool Generate() { + const char* Generate() { Imports imports; std::stringstream ss; @@ -282,7 +282,7 @@ class ServiceGenerator : public BaseGenerator { } private: - bool SaveService(const std::string& filename, const Imports& imports, + const char* SaveService(const std::string& filename, const Imports& imports, const std::string& content) { std::stringstream ss; ss << "# Generated by the gRPC FlatBuffers compiler. DO NOT EDIT!\n" @@ -291,7 +291,7 @@ class ServiceGenerator : public BaseGenerator { ss << content << '\n'; EnsureDirExists(StripFileName(filename)); - return parser_.opts.file_saver->SaveFile(filename.c_str(), ss.str(), false); + return parser_.opts.file_saver->AttemptSave(filename.c_str(), ss.str(), false); } void GenerateStub(std::stringstream& ss, const ServiceDef* service, @@ -395,13 +395,13 @@ class ServiceGenerator : public BaseGenerator { }; } // namespace -bool Generate(const Parser& parser, const std::string& path, +const char* Generate(const Parser& parser, const std::string& path, const Version& version) { ServiceGenerator generator{parser, path, version}; return generator.Generate(); } -bool GenerateStub(const Parser& parser, const std::string& path, +const char* GenerateStub(const Parser& parser, const std::string& path, const Version& version) { StubGenerator generator{parser, path, version}; return generator.Generate(); diff --git a/grpc/src/compiler/python_generator.h b/grpc/src/compiler/python_generator.h index 5967e1f84c3..88c45186fb7 100644 --- a/grpc/src/compiler/python_generator.h +++ b/grpc/src/compiler/python_generator.h @@ -27,10 +27,10 @@ namespace flatbuffers { namespace python { namespace grpc { -bool Generate(const Parser& parser, const std::string& path, +const char* Generate(const Parser& parser, const std::string& path, const Version& version); -bool GenerateStub(const Parser& parser, const std::string& path, +const char* GenerateStub(const Parser& parser, const std::string& path, const Version& version); } // namespace grpc } // namespace python diff --git a/include/flatbuffers/idl.h b/include/flatbuffers/idl.h index 4139529a11a..82f60191bfa 100644 --- a/include/flatbuffers/idl.h +++ b/include/flatbuffers/idl.h @@ -1303,7 +1303,7 @@ bool GenerateJavaGRPC(const Parser& parser, const std::string& path, // Generate GRPC Python interfaces. // See idl_gen_grpc.cpp. -bool GeneratePythonGRPC(const Parser& parser, const std::string& path, +const char* GeneratePythonGRPC(const Parser& parser, const std::string& path, const std::string& file_name); // Generate GRPC Swift interfaces. diff --git a/src/idl_gen_grpc.cpp b/src/idl_gen_grpc.cpp index 476fa5ffe02..65d43b0b31e 100644 --- a/src/idl_gen_grpc.cpp +++ b/src/idl_gen_grpc.cpp @@ -440,25 +440,26 @@ bool GenerateJavaGRPC(const Parser& parser, const std::string& path, return JavaGRPCGenerator(parser, path, file_name).generate(); } -bool GeneratePythonGRPC(const Parser& parser, const std::string& path, +const char* GeneratePythonGRPC(const Parser& parser, const std::string& path, const std::string& /*file_name*/) { int nservices = 0; for (auto it = parser.services_.vec.begin(); it != parser.services_.vec.end(); ++it) { if (!(*it)->generated) nservices++; } - if (!nservices) return true; + if (!nservices) return nullptr; flatbuffers::python::Version version{parser.opts.python_version}; - if (!version.IsValid()) return false; + if (!version.IsValid()) return "The provided Python version is not valid"; + + auto error = flatbuffers::python::grpc::Generate(parser, path, version); + if (error) return error; - if (!flatbuffers::python::grpc::Generate(parser, path, version)) { - return false; - } if (parser.opts.python_typing) { - return flatbuffers::python::grpc::GenerateStub(parser, path, version); + auto error = flatbuffers::python::grpc::GenerateStub(parser, path, version); + if (error) return error; } - return true; + return nullptr; } class SwiftGRPCGenerator : public flatbuffers::BaseGenerator { diff --git a/src/idl_gen_python.cpp b/src/idl_gen_python.cpp index b69163225a3..5be928e869a 100644 --- a/src/idl_gen_python.cpp +++ b/src/idl_gen_python.cpp @@ -2958,8 +2958,9 @@ class PythonCodeGenerator : public CodeGenerator { Status GenerateGrpcCode(const Parser& parser, const std::string& path, const std::string& filename) override { - if (!GeneratePythonGRPC(parser, path, - filename)) { // TODO add status GeneratePythonGRPC + auto err = GeneratePythonGRPC(parser, path, filename); + if (err) { + status_detail = " " + std::string(err); return Status::ERROR; } return Status::OK; From 8b427fe66abed40e784ec601bc684c7b70119777 Mon Sep 17 00:00:00 2001 From: fliiiix Date: Wed, 3 Dec 2025 14:13:27 +0100 Subject: [PATCH 4/4] [Python] Apply clang-format --- grpc/src/compiler/python_generator.cc | 14 ++++++++------ grpc/src/compiler/python_generator.h | 4 ++-- include/flatbuffers/idl.h | 2 +- src/idl_gen_grpc.cpp | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/grpc/src/compiler/python_generator.cc b/grpc/src/compiler/python_generator.cc index e70ee51ce28..027c4a46eb5 100644 --- a/grpc/src/compiler/python_generator.cc +++ b/grpc/src/compiler/python_generator.cc @@ -151,7 +151,7 @@ class StubGenerator : public BaseGenerator { private: const char* SaveStub(const std::string& filename, const Imports& imports, - const std::string& content) { + const std::string& content) { std::stringstream ss; ss << "# Generated by the gRPC FlatBuffers compiler. DO NOT EDIT!\n" << '\n' @@ -161,7 +161,8 @@ class StubGenerator : public BaseGenerator { ss << content << '\n'; EnsureDirExists(StripFileName(filename)); - return parser_.opts.file_saver->AttemptSave(filename.c_str(), ss.str(), false); + return parser_.opts.file_saver->AttemptSave(filename.c_str(), ss.str(), + false); } void Generate(std::stringstream& ss, const ServiceDef* service, @@ -283,7 +284,7 @@ class ServiceGenerator : public BaseGenerator { private: const char* SaveService(const std::string& filename, const Imports& imports, - const std::string& content) { + const std::string& content) { std::stringstream ss; ss << "# Generated by the gRPC FlatBuffers compiler. DO NOT EDIT!\n" << '\n'; @@ -291,7 +292,8 @@ class ServiceGenerator : public BaseGenerator { ss << content << '\n'; EnsureDirExists(StripFileName(filename)); - return parser_.opts.file_saver->AttemptSave(filename.c_str(), ss.str(), false); + return parser_.opts.file_saver->AttemptSave(filename.c_str(), ss.str(), + false); } void GenerateStub(std::stringstream& ss, const ServiceDef* service, @@ -396,13 +398,13 @@ class ServiceGenerator : public BaseGenerator { } // namespace const char* Generate(const Parser& parser, const std::string& path, - const Version& version) { + const Version& version) { ServiceGenerator generator{parser, path, version}; return generator.Generate(); } const char* GenerateStub(const Parser& parser, const std::string& path, - const Version& version) { + const Version& version) { StubGenerator generator{parser, path, version}; return generator.Generate(); } diff --git a/grpc/src/compiler/python_generator.h b/grpc/src/compiler/python_generator.h index 88c45186fb7..d4146be4e91 100644 --- a/grpc/src/compiler/python_generator.h +++ b/grpc/src/compiler/python_generator.h @@ -28,10 +28,10 @@ namespace flatbuffers { namespace python { namespace grpc { const char* Generate(const Parser& parser, const std::string& path, - const Version& version); + const Version& version); const char* GenerateStub(const Parser& parser, const std::string& path, - const Version& version); + const Version& version); } // namespace grpc } // namespace python } // namespace flatbuffers diff --git a/include/flatbuffers/idl.h b/include/flatbuffers/idl.h index 82f60191bfa..5426ad39157 100644 --- a/include/flatbuffers/idl.h +++ b/include/flatbuffers/idl.h @@ -1304,7 +1304,7 @@ bool GenerateJavaGRPC(const Parser& parser, const std::string& path, // Generate GRPC Python interfaces. // See idl_gen_grpc.cpp. const char* GeneratePythonGRPC(const Parser& parser, const std::string& path, - const std::string& file_name); + const std::string& file_name); // Generate GRPC Swift interfaces. // See idl_gen_grpc.cpp. diff --git a/src/idl_gen_grpc.cpp b/src/idl_gen_grpc.cpp index 65d43b0b31e..959e0729836 100644 --- a/src/idl_gen_grpc.cpp +++ b/src/idl_gen_grpc.cpp @@ -441,7 +441,7 @@ bool GenerateJavaGRPC(const Parser& parser, const std::string& path, } const char* GeneratePythonGRPC(const Parser& parser, const std::string& path, - const std::string& /*file_name*/) { + const std::string& /*file_name*/) { int nservices = 0; for (auto it = parser.services_.vec.begin(); it != parser.services_.vec.end(); ++it) {