mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-08 06:05:17 +00:00
Added --filename-suffix and --filename-ext to flatc (#5778)
* Fixed refractoring issue in reflection/generate_code.sh. Also, mv deletes the original file, so I don't need to clean it up manually in that case. * Added --filename-suffix and --filename-ext to flatc * Fixed typo and added example generation of suffix and extension for C++ * Removed extra ; * Removed clang-format block from a region that didn't need it. Fixed an auto format of another clang-format block * Added docs, fixed pointer alignment, removed suffix test file
This commit is contained in:
@@ -26,8 +26,6 @@
|
||||
|
||||
namespace flatbuffers {
|
||||
|
||||
const std::string kGeneratedFileNamePostfix = "_generated";
|
||||
|
||||
struct JsTsLanguageParameters {
|
||||
IDLOptions::Language language;
|
||||
std::string file_extension;
|
||||
@@ -61,12 +59,6 @@ const JsTsLanguageParameters &GetJsLangParams(IDLOptions::Language lang) {
|
||||
}
|
||||
}
|
||||
|
||||
static std::string GeneratedFileName(const std::string &path,
|
||||
const std::string &file_name,
|
||||
const JsTsLanguageParameters &lang) {
|
||||
return path + file_name + kGeneratedFileNamePostfix + lang.file_extension;
|
||||
}
|
||||
|
||||
namespace jsts {
|
||||
// Iterate through all definitions we haven't generate code for (enums, structs,
|
||||
// and tables) and output them to a single file.
|
||||
@@ -78,7 +70,8 @@ class JsTsGenerator : public BaseGenerator {
|
||||
|
||||
JsTsGenerator(const Parser &parser, const std::string &path,
|
||||
const std::string &file_name)
|
||||
: BaseGenerator(parser, path, file_name, "", "."),
|
||||
: BaseGenerator(parser, path, file_name, "", ".",
|
||||
parser.opts.lang == IDLOptions::kJs ? "js" : "ts"),
|
||||
lang_(GetJsLangParams(parser_.opts.lang)) {}
|
||||
// Iterate through all definitions we haven't generate code for (enums,
|
||||
// structs, and tables) and output them to a single file.
|
||||
@@ -112,8 +105,8 @@ class JsTsGenerator : public BaseGenerator {
|
||||
code += exports_code;
|
||||
}
|
||||
|
||||
return SaveFile(GeneratedFileName(path_, file_name_, lang_).c_str(), code,
|
||||
false);
|
||||
return SaveFile(GeneratedFileName(path_, file_name_, parser_.opts).c_str(),
|
||||
code, false);
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -524,10 +517,10 @@ class JsTsGenerator : public BaseGenerator {
|
||||
if (parser_.opts.keep_include_path) {
|
||||
auto it = parser_.included_files_.find(full_file_name);
|
||||
FLATBUFFERS_ASSERT(it != parser_.included_files_.end());
|
||||
path =
|
||||
flatbuffers::StripExtension(it->second) + kGeneratedFileNamePostfix;
|
||||
path = flatbuffers::StripExtension(it->second) +
|
||||
parser_.opts.filename_suffix;
|
||||
} else {
|
||||
path = base_name + kGeneratedFileNamePostfix;
|
||||
path = base_name + parser_.opts.filename_suffix;
|
||||
}
|
||||
|
||||
// Add the include prefix and make the path always relative
|
||||
@@ -601,7 +594,8 @@ class JsTsGenerator : public BaseGenerator {
|
||||
}
|
||||
|
||||
std::string GenerateNewExpression(const std::string &object_name) {
|
||||
return "new " + object_name + (lang_.language == IDLOptions::kTs ? "()" : "");
|
||||
return "new " + object_name +
|
||||
(lang_.language == IDLOptions::kTs ? "()" : "");
|
||||
}
|
||||
|
||||
void GenerateRootAccessor(StructDef &struct_def, std::string *code_ptr,
|
||||
@@ -624,7 +618,9 @@ class JsTsGenerator : public BaseGenerator {
|
||||
code += " = function(bb, obj) {\n";
|
||||
}
|
||||
if (size_prefixed) {
|
||||
code += " bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n";
|
||||
code +=
|
||||
" bb.setPosition(bb.position() + "
|
||||
"flatbuffers.SIZE_PREFIX_LENGTH);\n";
|
||||
}
|
||||
code += " return (obj || " + GenerateNewExpression(object_name);
|
||||
code += ").__init(bb.readInt32(bb.position()) + bb.position(), bb);\n";
|
||||
@@ -870,7 +866,8 @@ class JsTsGenerator : public BaseGenerator {
|
||||
code +=
|
||||
MaybeAdd(field.value.offset) + ", " + GenBBAccess() + ");\n";
|
||||
} else {
|
||||
code += offset_prefix + "(obj || " + GenerateNewExpression(type) + ").__init(";
|
||||
code += offset_prefix + "(obj || " + GenerateNewExpression(type) +
|
||||
").__init(";
|
||||
code += field.value.type.struct_def->fixed
|
||||
? "this.bb_pos + offset"
|
||||
: GenBBAccess() + ".__indirect(this.bb_pos + offset)";
|
||||
@@ -952,7 +949,8 @@ class JsTsGenerator : public BaseGenerator {
|
||||
}
|
||||
|
||||
if (vectortype.base_type == BASE_TYPE_STRUCT) {
|
||||
code += offset_prefix + "(obj || " + GenerateNewExpression(vectortypename);
|
||||
code += offset_prefix + "(obj || " +
|
||||
GenerateNewExpression(vectortypename);
|
||||
code += ").__init(";
|
||||
code += vectortype.struct_def->fixed
|
||||
? index
|
||||
@@ -1388,11 +1386,12 @@ bool GenerateJSTS(const Parser &parser, const std::string &path,
|
||||
std::string JSTSMakeRule(const Parser &parser, const std::string &path,
|
||||
const std::string &file_name) {
|
||||
FLATBUFFERS_ASSERT(parser.opts.lang <= IDLOptions::kMAX);
|
||||
const auto &lang = GetJsLangParams(parser.opts.lang);
|
||||
|
||||
std::string filebase =
|
||||
flatbuffers::StripPath(flatbuffers::StripExtension(file_name));
|
||||
std::string make_rule = GeneratedFileName(path, filebase, lang) + ": ";
|
||||
jsts::JsTsGenerator generator(parser, path, file_name);
|
||||
std::string make_rule =
|
||||
generator.GeneratedFileName(path, filebase, parser.opts) + ": ";
|
||||
|
||||
auto included_files = parser.GetIncludedFilesRecursive(file_name);
|
||||
for (auto it = included_files.begin(); it != included_files.end(); ++it) {
|
||||
|
||||
Reference in New Issue
Block a user