mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-30 04:30:03 +00:00
Merge pull request #3915 from Lakedaemon/clangFormat
clang formating header and code generators for cpp, general, js, php
This commit is contained in:
@@ -39,8 +39,8 @@ class BaseGenerator {
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
BaseGenerator(const Parser &parser, const std::string &path,
|
BaseGenerator(const Parser &parser, const std::string &path,
|
||||||
const std::string &file_name,
|
const std::string &file_name,
|
||||||
const std::string qualifying_start,
|
const std::string qualifying_start,
|
||||||
const std::string qualifying_separator)
|
const std::string qualifying_separator)
|
||||||
: parser_(parser),
|
: parser_(parser),
|
||||||
path_(path),
|
path_(path),
|
||||||
@@ -86,15 +86,18 @@ class BaseGenerator {
|
|||||||
|
|
||||||
const std::string LastNamespacePart(const Namespace &ns) {
|
const std::string LastNamespacePart(const Namespace &ns) {
|
||||||
auto &namespaces = ns.components;
|
auto &namespaces = ns.components;
|
||||||
if (namespaces.size()) return *(namespaces.end() - 1); else return std::string("");
|
if (namespaces.size())
|
||||||
|
return *(namespaces.end() - 1);
|
||||||
|
else
|
||||||
|
return std::string("");
|
||||||
}
|
}
|
||||||
|
|
||||||
// tracks the current namespace for early exit in WrapInNameSpace
|
// tracks the current namespace for early exit in WrapInNameSpace
|
||||||
// c++, java and csharp returns a different namespace from
|
// c++, java and csharp returns a different namespace from
|
||||||
// the following default (no early exit, always fully qualify),
|
// the following default (no early exit, always fully qualify),
|
||||||
// which works for js and php
|
// which works for js and php
|
||||||
virtual const Namespace *CurrentNameSpace() { return nullptr; }
|
virtual const Namespace *CurrentNameSpace() { return nullptr; }
|
||||||
|
|
||||||
// Ensure that a type is prefixed with its namespace whenever it is used
|
// Ensure that a type is prefixed with its namespace whenever it is used
|
||||||
// outside of its namespace.
|
// outside of its namespace.
|
||||||
std::string WrapInNameSpace(const Namespace *ns, const std::string &name) {
|
std::string WrapInNameSpace(const Namespace *ns, const std::string &name) {
|
||||||
|
|||||||
@@ -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