mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-30 22:21:36 +00:00
clang formating cpp code generator and add missing generated classes
This commit is contained in:
@@ -24,9 +24,7 @@
|
|||||||
namespace flatbuffers {
|
namespace flatbuffers {
|
||||||
|
|
||||||
struct IsAlnum {
|
struct IsAlnum {
|
||||||
bool operator()(char c) {
|
bool operator()(char c) { return !isalnum(c); }
|
||||||
return !isalnum(c);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static std::string GeneratedFileName(const std::string &path,
|
static std::string GeneratedFileName(const std::string &path,
|
||||||
@@ -184,7 +182,6 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code += "nullptr";
|
code += "nullptr";
|
||||||
code += "); }\n\n";
|
code += "); }\n\n";
|
||||||
|
|
||||||
|
|
||||||
if (parser_.file_extension_.length()) {
|
if (parser_.file_extension_.length()) {
|
||||||
// Return the extension
|
// Return the extension
|
||||||
code += "inline const char *" + name;
|
code += "inline const char *" + name;
|
||||||
@@ -264,30 +261,28 @@ class CppGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
// Return a C++ type for any type (scalar/pointer) specifically for
|
// Return a C++ type for any type (scalar/pointer) specifically for
|
||||||
// building a flatbuffer.
|
// building a flatbuffer.
|
||||||
std::string GenTypeWire(const Type &type,
|
std::string GenTypeWire(const Type &type, const char *postfix,
|
||||||
const char *postfix, bool user_facing_type) {
|
bool user_facing_type) {
|
||||||
return IsScalar(type.base_type)
|
return IsScalar(type.base_type)
|
||||||
? GenTypeBasic(type, user_facing_type) + postfix
|
? GenTypeBasic(type, user_facing_type) + postfix
|
||||||
: IsStruct(type)
|
: IsStruct(type) ? "const " + GenTypePointer(type) + " *"
|
||||||
? "const " + GenTypePointer(type) + " *"
|
: "flatbuffers::Offset<" +
|
||||||
: "flatbuffers::Offset<" + GenTypePointer(type) +
|
GenTypePointer(type) + ">" + postfix;
|
||||||
">" + postfix;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return a C++ type for any type (scalar/pointer) that reflects its
|
// Return a C++ type for any type (scalar/pointer) that reflects its
|
||||||
// serialized size.
|
// serialized size.
|
||||||
std::string GenTypeSize(const Type &type) {
|
std::string GenTypeSize(const Type &type) {
|
||||||
return IsScalar(type.base_type)
|
return IsScalar(type.base_type) ? GenTypeBasic(type, false)
|
||||||
? GenTypeBasic(type, false)
|
: IsStruct(type) ? GenTypePointer(type)
|
||||||
: IsStruct(type) ? GenTypePointer(type)
|
: "flatbuffers::uoffset_t";
|
||||||
: "flatbuffers::uoffset_t";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return a C++ type for any type (scalar/pointer) specifically for
|
// Return a C++ type for any type (scalar/pointer) specifically for
|
||||||
// using a flatbuffer.
|
// using a flatbuffer.
|
||||||
std::string GenTypeGet(const Type &type,
|
std::string GenTypeGet(const Type &type, const char *afterbasic,
|
||||||
const char *afterbasic, const char *beforeptr,
|
const char *beforeptr, const char *afterptr,
|
||||||
const char *afterptr, bool user_facing_type) {
|
bool user_facing_type) {
|
||||||
return IsScalar(type.base_type)
|
return IsScalar(type.base_type)
|
||||||
? GenTypeBasic(type, user_facing_type) + afterbasic
|
? GenTypeBasic(type, user_facing_type) + afterbasic
|
||||||
: beforeptr + GenTypePointer(type) + afterptr;
|
: beforeptr + GenTypePointer(type) + afterptr;
|
||||||
@@ -388,8 +383,8 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code += "()[static_cast<int>(e)";
|
code += "()[static_cast<int>(e)";
|
||||||
if (enum_def.vals.vec.front()->value) {
|
if (enum_def.vals.vec.front()->value) {
|
||||||
code += " - static_cast<int>(";
|
code += " - static_cast<int>(";
|
||||||
code +=
|
code += GetEnumVal(enum_def, *enum_def.vals.vec.front(), parser_.opts) +
|
||||||
GetEnumVal(enum_def, *enum_def.vals.vec.front(), parser_.opts) + ")";
|
")";
|
||||||
}
|
}
|
||||||
code += "]; }\n\n";
|
code += "]; }\n\n";
|
||||||
}
|
}
|
||||||
@@ -446,8 +441,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
return "VT_" + uname;
|
return "VT_" + uname;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GenFullyQualifiedNameGetter(const std::string &name,
|
void GenFullyQualifiedNameGetter(const std::string &name, std::string &code) {
|
||||||
std::string &code) {
|
|
||||||
if (parser_.opts.generate_name_strings) {
|
if (parser_.opts.generate_name_strings) {
|
||||||
code +=
|
code +=
|
||||||
" static FLATBUFFERS_CONSTEXPR const char *GetFullyQualifiedName() "
|
" static FLATBUFFERS_CONSTEXPR const char *GetFullyQualifiedName() "
|
||||||
@@ -469,21 +463,17 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code += field.name + " = ";
|
code += field.name + " = ";
|
||||||
if (field.value.type.enum_def && IsScalar(field.value.type.base_type)) {
|
if (field.value.type.enum_def && IsScalar(field.value.type.base_type)) {
|
||||||
auto ev = field.value.type.enum_def->ReverseLookup(
|
auto ev = field.value.type.enum_def->ReverseLookup(
|
||||||
static_cast<int>(StringToInt(field.value.constant.c_str())),
|
static_cast<int>(StringToInt(field.value.constant.c_str())), false);
|
||||||
false);
|
|
||||||
if (ev) {
|
if (ev) {
|
||||||
code += WrapInNameSpace(
|
code += WrapInNameSpace(
|
||||||
field.value.type.enum_def->defined_namespace,
|
field.value.type.enum_def->defined_namespace,
|
||||||
GetEnumVal(*field.value.type.enum_def, *ev, parser_.opts));
|
GetEnumVal(*field.value.type.enum_def, *ev, parser_.opts));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
code += GenUnderlyingCast(field, true, field.value.constant);
|
code += GenUnderlyingCast(field, true, field.value.constant);
|
||||||
}
|
}
|
||||||
}
|
} else if (field.value.type.base_type == BASE_TYPE_BOOL) {
|
||||||
else if (field.value.type.base_type == BASE_TYPE_BOOL) {
|
|
||||||
code += field.value.constant == "0" ? "false" : "true";
|
code += field.value.constant == "0" ? "false" : "true";
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
code += GenDefaultConstant(field);
|
code += GenDefaultConstant(field);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -529,8 +519,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
if (!field.deprecated) { // Deprecated fields won't be accessible.
|
if (!field.deprecated) { // Deprecated fields won't be accessible.
|
||||||
auto is_scalar = IsScalar(field.value.type.base_type);
|
auto is_scalar = IsScalar(field.value.type.base_type);
|
||||||
GenComment(field.doc_comment, code_ptr, nullptr, " ");
|
GenComment(field.doc_comment, code_ptr, nullptr, " ");
|
||||||
code += " " +
|
code += " " + GenTypeGet(field.value.type, " ", "const ", " *", true);
|
||||||
GenTypeGet(field.value.type, " ", "const ", " *", true);
|
|
||||||
code += field.name + "() const { return ";
|
code += field.name + "() const { return ";
|
||||||
// Call a different accessor for pointers, that indirects.
|
// Call a different accessor for pointers, that indirects.
|
||||||
auto accessor =
|
auto accessor =
|
||||||
@@ -538,8 +527,8 @@ class CppGenerator : public BaseGenerator {
|
|||||||
? "GetField<"
|
? "GetField<"
|
||||||
: (IsStruct(field.value.type) ? "GetStruct<" : "GetPointer<");
|
: (IsStruct(field.value.type) ? "GetStruct<" : "GetPointer<");
|
||||||
auto offsetstr = GenFieldOffsetName(field);
|
auto offsetstr = GenFieldOffsetName(field);
|
||||||
auto call = accessor + GenTypeGet(field.value.type, "",
|
auto call = accessor +
|
||||||
"const ", " *", false) +
|
GenTypeGet(field.value.type, "", "const ", " *", false) +
|
||||||
">(" + offsetstr;
|
">(" + offsetstr;
|
||||||
// Default value as second arg for non-pointer types.
|
// Default value as second arg for non-pointer types.
|
||||||
if (IsScalar(field.value.type.base_type))
|
if (IsScalar(field.value.type.base_type))
|
||||||
@@ -556,8 +545,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code += GenUnderlyingCast(field, false, "_" + field.name);
|
code += GenUnderlyingCast(field, false, "_" + field.name);
|
||||||
code += "); }\n";
|
code += "); }\n";
|
||||||
} else {
|
} else {
|
||||||
auto type =
|
auto type = GenTypeGet(field.value.type, " ", "", " *", true);
|
||||||
GenTypeGet(field.value.type, " ", "", " *", true);
|
|
||||||
code += " " + type + "mutable_" + field.name + "() { return ";
|
code += " " + type + "mutable_" + field.name + "() { return ";
|
||||||
code += GenUnderlyingCast(field, true,
|
code += GenUnderlyingCast(field, true,
|
||||||
accessor + type + ">(" + offsetstr + ")");
|
accessor + type + ">(" + offsetstr + ")");
|
||||||
@@ -739,20 +727,19 @@ class CppGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
code += " return builder_.Finish();\n}\n\n";
|
code += " return builder_.Finish();\n}\n\n";
|
||||||
|
|
||||||
//Generate a CreateX function with vector types as parameters
|
// Generate a CreateX function with vector types as parameters
|
||||||
if (gen_vector_pars) {
|
if (gen_vector_pars) {
|
||||||
code += "inline flatbuffers::Offset<" + struct_def.name + "> Create";
|
code += "inline flatbuffers::Offset<" + struct_def.name + "> Create";
|
||||||
code += struct_def.name;
|
code += struct_def.name;
|
||||||
code += "(flatbuffers::FlatBufferBuilder &_fbb";
|
code += "(flatbuffers::FlatBufferBuilder &_fbb";
|
||||||
for (auto it = struct_def.fields.vec.begin();
|
for (auto it = struct_def.fields.vec.begin();
|
||||||
it != struct_def.fields.vec.end(); ++it) {
|
it != struct_def.fields.vec.end(); ++it) {
|
||||||
auto &field = **it;
|
auto &field = **it;
|
||||||
if (!field.deprecated) {
|
if (!field.deprecated) {
|
||||||
if (field.value.type.base_type == BASE_TYPE_STRING) {
|
if (field.value.type.base_type == BASE_TYPE_STRING) {
|
||||||
code += ",\n const char *";
|
code += ",\n const char *";
|
||||||
code += field.name + " = nullptr";
|
code += field.name + " = nullptr";
|
||||||
}
|
} else if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
||||||
else if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
|
||||||
code += ",\n const std::vector<";
|
code += ",\n const std::vector<";
|
||||||
code += GenTypeWire(field.value.type.VectorType(), "", false);
|
code += GenTypeWire(field.value.type.VectorType(), "", false);
|
||||||
code += "> *" + field.name + " = nullptr";
|
code += "> *" + field.name + " = nullptr";
|
||||||
@@ -766,7 +753,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code += struct_def.name;
|
code += struct_def.name;
|
||||||
code += "(_fbb";
|
code += "(_fbb";
|
||||||
for (auto it = struct_def.fields.vec.begin();
|
for (auto it = struct_def.fields.vec.begin();
|
||||||
it != struct_def.fields.vec.end(); ++it) {
|
it != struct_def.fields.vec.end(); ++it) {
|
||||||
auto &field = **it;
|
auto &field = **it;
|
||||||
if (!field.deprecated) {
|
if (!field.deprecated) {
|
||||||
if (field.value.type.base_type == BASE_TYPE_STRING) {
|
if (field.value.type.base_type == BASE_TYPE_STRING) {
|
||||||
@@ -777,7 +764,8 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code += "_fbb.CreateVector<";
|
code += "_fbb.CreateVector<";
|
||||||
code += GenTypeWire(field.value.type.VectorType(), "", false);
|
code += GenTypeWire(field.value.type.VectorType(), "", false);
|
||||||
code += ">(*" + field.name + ")";
|
code += ">(*" + field.name + ")";
|
||||||
} else code += ", " + field.name;
|
} else
|
||||||
|
code += ", " + field.name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
code += ");\n}\n\n";
|
code += ");\n}\n\n";
|
||||||
@@ -880,8 +868,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
auto &field = **it;
|
auto &field = **it;
|
||||||
GenComment(field.doc_comment, code_ptr, nullptr, " ");
|
GenComment(field.doc_comment, code_ptr, nullptr, " ");
|
||||||
auto is_scalar = IsScalar(field.value.type.base_type);
|
auto is_scalar = IsScalar(field.value.type.base_type);
|
||||||
code += " " +
|
code += " " + GenTypeGet(field.value.type, " ", "const ", " &", true);
|
||||||
GenTypeGet(field.value.type, " ", "const ", " &", true);
|
|
||||||
code += field.name + "() const { return ";
|
code += field.name + "() const { return ";
|
||||||
code += GenUnderlyingCast(
|
code += GenUnderlyingCast(
|
||||||
field, true, is_scalar
|
field, true, is_scalar
|
||||||
@@ -949,19 +936,16 @@ bool GenerateCPP(const Parser &parser, const std::string &path,
|
|||||||
return generator.generate();
|
return generator.generate();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CPPMakeRule(const Parser &parser,
|
std::string CPPMakeRule(const Parser &parser, const std::string &path,
|
||||||
const std::string &path,
|
|
||||||
const std::string &file_name) {
|
const std::string &file_name) {
|
||||||
std::string filebase = flatbuffers::StripPath(
|
std::string filebase =
|
||||||
flatbuffers::StripExtension(file_name));
|
flatbuffers::StripPath(flatbuffers::StripExtension(file_name));
|
||||||
std::string make_rule = GeneratedFileName(path, filebase) + ": ";
|
std::string make_rule = GeneratedFileName(path, filebase) + ": ";
|
||||||
auto included_files = parser.GetIncludedFilesRecursive(file_name);
|
auto included_files = parser.GetIncludedFilesRecursive(file_name);
|
||||||
for (auto it = included_files.begin();
|
for (auto it = included_files.begin(); it != included_files.end(); ++it) {
|
||||||
it != included_files.end(); ++it) {
|
|
||||||
make_rule += " " + *it;
|
make_rule += " " + *it;
|
||||||
}
|
}
|
||||||
return make_rule;
|
return make_rule;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace flatbuffers
|
} // namespace flatbuffers
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ public final class Any {
|
|||||||
public static final byte TestSimpleTableWithEnum = 2;
|
public static final byte TestSimpleTableWithEnum = 2;
|
||||||
public static final byte MyGame_Example2_Monster = 3;
|
public static final byte MyGame_Example2_Monster = 3;
|
||||||
|
|
||||||
private static final String[] names = { "NONE", "Monster", "TestSimpleTableWithEnum", "MyGame_Example2_Monster", };
|
public static final String[] names = { "NONE", "Monster", "TestSimpleTableWithEnum", "MyGame_Example2_Monster", };
|
||||||
|
|
||||||
public static String name(int e) { return names[e]; }
|
public static String name(int e) { return names[e]; }
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ public final class Color {
|
|||||||
public static final byte Green = 2;
|
public static final byte Green = 2;
|
||||||
public static final byte Blue = 8;
|
public static final byte Blue = 8;
|
||||||
|
|
||||||
private static final String[] names = { "Red", "Green", "", "", "", "", "", "Blue", };
|
public static final String[] names = { "Red", "Green", "", "", "", "", "", "Blue", };
|
||||||
|
|
||||||
public static String name(int e) { return names[e - Red]; }
|
public static String name(int e) { return names[e - Red]; }
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -135,5 +135,5 @@ public final class Monster extends Table {
|
|||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
public static void finishMonsterBuffer(FlatBufferBuilder builder, int offset) { builder.finish(offset, "MONS"); }
|
public static void finishMonsterBuffer(FlatBufferBuilder builder, int offset) { builder.finish(offset, "MONS"); }
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,5 +39,5 @@ public final class Stat extends Table {
|
|||||||
int o = builder.endObject();
|
int o = builder.endObject();
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ public final class Test extends Struct {
|
|||||||
builder.putShort(a);
|
builder.putShort(a);
|
||||||
return builder.offset();
|
return builder.offset();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,5 +29,5 @@ public final class TestSimpleTableWithEnum extends Table {
|
|||||||
int o = builder.endObject();
|
int o = builder.endObject();
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,5 +40,5 @@ public final class Vec3 extends Struct {
|
|||||||
builder.putFloat(x);
|
builder.putFloat(x);
|
||||||
return builder.offset();
|
return builder.offset();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,5 +19,5 @@ public final class Monster extends Table {
|
|||||||
int o = builder.endObject();
|
int o = builder.endObject();
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ public final class EnumInNestedNS {
|
|||||||
public static final byte B = 1;
|
public static final byte B = 1;
|
||||||
public static final byte C = 2;
|
public static final byte C = 2;
|
||||||
|
|
||||||
private static final String[] names = { "A", "B", "C", };
|
public static final String[] names = { "A", "B", "C", };
|
||||||
|
|
||||||
public static String name(int e) { return names[e]; }
|
public static String name(int e) { return names[e]; }
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,5 +22,5 @@ public final class StructInNestedNS extends Struct {
|
|||||||
builder.putInt(a);
|
builder.putInt(a);
|
||||||
return builder.offset();
|
return builder.offset();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,5 +29,5 @@ public final class TableInNestedNS extends Table {
|
|||||||
int o = builder.endObject();
|
int o = builder.endObject();
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,5 +29,5 @@ public final class SecondTableInA extends Table {
|
|||||||
int o = builder.endObject();
|
int o = builder.endObject();
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,5 +28,5 @@ public final class TableInFirstNS extends Table {
|
|||||||
int o = builder.endObject();
|
int o = builder.endObject();
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,5 +34,5 @@ public final class TableInC extends Table {
|
|||||||
int o = builder.endObject();
|
int o = builder.endObject();
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user