mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-04 04:33:23 +00:00
Added the code to embed the binary schema to the source (--bfbs-gen-embed). (#5701)
* Added the code to embed the binary schema to the source. This is pulled forward from a old PR #5162 that will be closed. * Update idl_gen_cpp.cpp Added a small comment to trigger a new build. The build was failing in a strange location and doesn't look like it has anything to do with the code. * Moved the EscapeAndWrapBuffer to util.cpp and did some formating. * One more camelCases removed and renamed some variables. * wrapped_line_xxx should have been passed as a const reference in the first place. * Moved the bfbs embed sample to it's own file. * Missed moving the namespace back. * Moved the embedded bfbs to test.cpp instead of using a sample. * Missed adding the generation of embedded bfbs to the build. * See if this makes the build happier. * Fixed a in-compatable cpp output of the generated header. * Did some changes to reflect the code review comments. 1. Update the EscapeAndWrapBuffer to BufferToHexText and fixed a variable name. 2. Moved the include of the embedded binary schema to all the other includes. * Moved some code to inline the instead of using a local variable. * Moved the BufferToHexText back to be a inline function in util.h
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
3f677f2414
commit
47026ea6ba
@@ -70,6 +70,9 @@ std::string FlatCompiler::GetUsageString(const char *program_name) const {
|
||||
ss << " " << full_name.str() << " " << name << " " << help << ".\n";
|
||||
}
|
||||
// clang-format off
|
||||
|
||||
// Output width
|
||||
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||
ss <<
|
||||
" -o PATH Prefix PATH to all generated files.\n"
|
||||
" -I PATH Search for includes in the specified path.\n"
|
||||
@@ -141,6 +144,7 @@ std::string FlatCompiler::GetUsageString(const char *program_name) const {
|
||||
" --schema Serialize schemas instead of JSON (use with -b).\n"
|
||||
" --bfbs-comments Add doc comments to the binary schema files.\n"
|
||||
" --bfbs-builtins Add builtin attributes to the binary schema files.\n"
|
||||
" --bfbs-gen-embed Generate code to embed the bfbs schema to the source.\n"
|
||||
" --conform FILE Specify a schema the following schemas should be\n"
|
||||
" an evolution of. Gives errors if not.\n"
|
||||
" --conform-includes Include path for the schema given with --conform PATH\n"
|
||||
@@ -166,6 +170,7 @@ std::string FlatCompiler::GetUsageString(const char *program_name) const {
|
||||
"Output files are named using the base file name of the input,\n"
|
||||
"and written to the current directory or the path given by -o.\n"
|
||||
"example: " << program_name << " -c -b schema1.fbs schema2.fbs data.json\n";
|
||||
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||
// clang-format on
|
||||
return ss.str();
|
||||
}
|
||||
@@ -201,22 +206,22 @@ int FlatCompiler::Compile(int argc, const char **argv) {
|
||||
output_path = flatbuffers::ConCatPathFileName(
|
||||
flatbuffers::PosixPath(argv[argi]), "");
|
||||
} else if (arg == "-I") {
|
||||
if (++argi >= argc) Error("missing path following" + arg, true);
|
||||
if (++argi >= argc) Error("missing path following: " + arg, true);
|
||||
include_directories_storage.push_back(
|
||||
flatbuffers::PosixPath(argv[argi]));
|
||||
include_directories.push_back(
|
||||
include_directories_storage.back().c_str());
|
||||
} else if (arg == "--conform") {
|
||||
if (++argi >= argc) Error("missing path following" + arg, true);
|
||||
if (++argi >= argc) Error("missing path following: " + arg, true);
|
||||
conform_to_schema = flatbuffers::PosixPath(argv[argi]);
|
||||
} else if (arg == "--conform-includes") {
|
||||
if (++argi >= argc) Error("missing path following" + arg, true);
|
||||
if (++argi >= argc) Error("missing path following: " + arg, true);
|
||||
include_directories_storage.push_back(
|
||||
flatbuffers::PosixPath(argv[argi]));
|
||||
conform_include_directories.push_back(
|
||||
include_directories_storage.back().c_str());
|
||||
} else if (arg == "--include-prefix") {
|
||||
if (++argi >= argc) Error("missing path following" + arg, true);
|
||||
if (++argi >= argc) Error("missing path following: " + arg, true);
|
||||
opts.include_prefix = flatbuffers::ConCatPathFileName(
|
||||
flatbuffers::PosixPath(argv[argi]), "");
|
||||
} else if (arg == "--keep-prefix") {
|
||||
@@ -261,13 +266,13 @@ int FlatCompiler::Compile(int argc, const char **argv) {
|
||||
} else if (arg == "--gen-compare") {
|
||||
opts.gen_compare = true;
|
||||
} else if (arg == "--cpp-include") {
|
||||
if (++argi >= argc) Error("missing include following" + arg, true);
|
||||
if (++argi >= argc) Error("missing include following: " + arg, true);
|
||||
opts.cpp_includes.push_back(argv[argi]);
|
||||
} else if (arg == "--cpp-ptr-type") {
|
||||
if (++argi >= argc) Error("missing type following" + arg, true);
|
||||
if (++argi >= argc) Error("missing type following: " + arg, true);
|
||||
opts.cpp_object_api_pointer_type = argv[argi];
|
||||
} else if (arg == "--cpp-str-type") {
|
||||
if (++argi >= argc) Error("missing type following" + arg, true);
|
||||
if (++argi >= argc) Error("missing type following: " + arg, true);
|
||||
opts.cpp_object_api_string_type = argv[argi];
|
||||
} else if (arg == "--cpp-str-flex-ctor") {
|
||||
opts.cpp_object_api_string_flexible_constructor = true;
|
||||
@@ -278,10 +283,10 @@ int FlatCompiler::Compile(int argc, const char **argv) {
|
||||
} else if (arg == "--gen-generated") {
|
||||
opts.gen_generated = true;
|
||||
} else if (arg == "--object-prefix") {
|
||||
if (++argi >= argc) Error("missing prefix following" + arg, true);
|
||||
if (++argi >= argc) Error("missing prefix following: " + arg, true);
|
||||
opts.object_prefix = argv[argi];
|
||||
} else if (arg == "--object-suffix") {
|
||||
if (++argi >= argc) Error("missing suffix following" + arg, true);
|
||||
if (++argi >= argc) Error("missing suffix following: " + arg, true);
|
||||
opts.object_suffix = argv[argi];
|
||||
} else if (arg == "--gen-all") {
|
||||
opts.generate_all = true;
|
||||
@@ -319,6 +324,8 @@ int FlatCompiler::Compile(int argc, const char **argv) {
|
||||
opts.binary_schema_comments = true;
|
||||
} else if (arg == "--bfbs-builtins") {
|
||||
opts.binary_schema_builtins = true;
|
||||
} else if (arg == "--bfbs-gen-embed") {
|
||||
opts.binary_schema_gen_embed= true;
|
||||
} else if (arg == "--no-fb-import") {
|
||||
opts.skip_flatbuffers_import = true;
|
||||
} else if (arg == "--no-ts-reexport") {
|
||||
@@ -330,7 +337,7 @@ int FlatCompiler::Compile(int argc, const char **argv) {
|
||||
} else if (arg == "--reflect-names") {
|
||||
opts.mini_reflect = IDLOptions::kTypesAndNames;
|
||||
} else if (arg == "--root-type") {
|
||||
if (++argi >= argc) Error("missing type following" + arg, true);
|
||||
if (++argi >= argc) Error("missing type following: " + arg, true);
|
||||
opts.root_type = argv[argi];
|
||||
} else if (arg == "--force-defaults") {
|
||||
opts.force_defaults = true;
|
||||
@@ -466,8 +473,10 @@ int FlatCompiler::Compile(int argc, const char **argv) {
|
||||
auto err = parser->ConformTo(conform_parser);
|
||||
if (!err.empty()) Error("schemas don\'t conform: " + err);
|
||||
}
|
||||
if (schema_binary) {
|
||||
if (schema_binary || opts.binary_schema_gen_embed) {
|
||||
parser->Serialize();
|
||||
}
|
||||
if (schema_binary) {
|
||||
parser->file_extension_ = reflection::SchemaExtension();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user