mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-29 08:52:02 +00:00
Mass Refactoring to use IsString and other BASE_TYPE helpers (#6193)
* Updated SupportsAdvancedUnionFeatures to look out for string * Mass refactoring to use BASE_TYPE helper functions. Co-authored-by: Casper Neo <cneo@google.com>
This commit is contained in:
@@ -885,7 +885,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
return wrap ? WrapInNameSpace(ev.union_type.struct_def->defined_namespace,
|
return wrap ? WrapInNameSpace(ev.union_type.struct_def->defined_namespace,
|
||||||
name)
|
name)
|
||||||
: name;
|
: name;
|
||||||
} else if (ev.union_type.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(ev.union_type)) {
|
||||||
return actual_type ? (native_type ? "std::string" : "flatbuffers::String")
|
return actual_type ? (native_type ? "std::string" : "flatbuffers::String")
|
||||||
: Name(ev);
|
: Name(ev);
|
||||||
} else {
|
} else {
|
||||||
@@ -996,8 +996,8 @@ class CppGenerator : public BaseGenerator {
|
|||||||
for (auto it = types.begin(); it != types.end(); ++it) {
|
for (auto it = types.begin(); it != types.end(); ++it) {
|
||||||
auto &type = *it;
|
auto &type = *it;
|
||||||
if (!ts.empty()) ts += ",\n ";
|
if (!ts.empty()) ts += ",\n ";
|
||||||
auto is_vector = type.base_type == BASE_TYPE_VECTOR;
|
auto is_vector = IsVector(type);
|
||||||
auto is_array = type.base_type == BASE_TYPE_ARRAY;
|
auto is_array = IsArray(type);
|
||||||
auto bt = is_vector || is_array ? type.element : type.base_type;
|
auto bt = is_vector || is_array ? type.element : type.base_type;
|
||||||
auto et = IsScalar(bt) || bt == BASE_TYPE_STRING
|
auto et = IsScalar(bt) || bt == BASE_TYPE_STRING
|
||||||
? bt - BASE_TYPE_UTYPE + ET_UTYPE
|
? bt - BASE_TYPE_UTYPE + ET_UTYPE
|
||||||
@@ -1424,7 +1424,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code_ += getptr;
|
code_ += getptr;
|
||||||
code_ += " return verifier.VerifyTable(ptr);";
|
code_ += " return verifier.VerifyTable(ptr);";
|
||||||
}
|
}
|
||||||
} else if (ev.union_type.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(ev.union_type)) {
|
||||||
code_ += getptr;
|
code_ += getptr;
|
||||||
code_ += " return verifier.VerifyString(ptr);";
|
code_ += " return verifier.VerifyString(ptr);";
|
||||||
} else {
|
} else {
|
||||||
@@ -1476,7 +1476,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
} else {
|
} else {
|
||||||
code_ += " return ptr->UnPack(resolver);";
|
code_ += " return ptr->UnPack(resolver);";
|
||||||
}
|
}
|
||||||
} else if (ev.union_type.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(ev.union_type)) {
|
||||||
code_ += " return new std::string(ptr->c_str(), ptr->size());";
|
code_ += " return new std::string(ptr->c_str(), ptr->size());";
|
||||||
} else {
|
} else {
|
||||||
FLATBUFFERS_ASSERT(false);
|
FLATBUFFERS_ASSERT(false);
|
||||||
@@ -1508,7 +1508,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code_ +=
|
code_ +=
|
||||||
" return Create{{NAME}}(_fbb, ptr, _rehasher).Union();";
|
" return Create{{NAME}}(_fbb, ptr, _rehasher).Union();";
|
||||||
}
|
}
|
||||||
} else if (ev.union_type.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(ev.union_type)) {
|
||||||
code_ += " return _fbb.CreateString(*ptr).Union();";
|
code_ += " return _fbb.CreateString(*ptr).Union();";
|
||||||
} else {
|
} else {
|
||||||
FLATBUFFERS_ASSERT(false);
|
FLATBUFFERS_ASSERT(false);
|
||||||
@@ -1667,10 +1667,10 @@ class CppGenerator : public BaseGenerator {
|
|||||||
void GenParam(const FieldDef &field, bool direct, const char *prefix) {
|
void GenParam(const FieldDef &field, bool direct, const char *prefix) {
|
||||||
code_.SetValue("PRE", prefix);
|
code_.SetValue("PRE", prefix);
|
||||||
code_.SetValue("PARAM_NAME", Name(field));
|
code_.SetValue("PARAM_NAME", Name(field));
|
||||||
if (direct && field.value.type.base_type == BASE_TYPE_STRING) {
|
if (direct && IsString(field.value.type)) {
|
||||||
code_.SetValue("PARAM_TYPE", "const char *");
|
code_.SetValue("PARAM_TYPE", "const char *");
|
||||||
code_.SetValue("PARAM_VALUE", "nullptr");
|
code_.SetValue("PARAM_VALUE", "nullptr");
|
||||||
} else if (direct && field.value.type.base_type == BASE_TYPE_VECTOR) {
|
} else if (direct && IsVector(field.value.type)) {
|
||||||
const auto vtype = field.value.type.VectorType();
|
const auto vtype = field.value.type.VectorType();
|
||||||
std::string type;
|
std::string type;
|
||||||
if (IsStruct(vtype)) {
|
if (IsStruct(vtype)) {
|
||||||
@@ -1705,7 +1705,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
auto cpp_type = field.attributes.Lookup("cpp_type");
|
auto cpp_type = field.attributes.Lookup("cpp_type");
|
||||||
auto full_type =
|
auto full_type =
|
||||||
(cpp_type
|
(cpp_type
|
||||||
? (field.value.type.base_type == BASE_TYPE_VECTOR
|
? (IsVector(field.value.type)
|
||||||
? "std::vector<" +
|
? "std::vector<" +
|
||||||
GenTypeNativePtr(cpp_type->constant, &field,
|
GenTypeNativePtr(cpp_type->constant, &field,
|
||||||
false) +
|
false) +
|
||||||
@@ -1934,7 +1934,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
// Generate CompareWithValue method for a key field.
|
// Generate CompareWithValue method for a key field.
|
||||||
void GenKeyFieldMethods(const FieldDef &field) {
|
void GenKeyFieldMethods(const FieldDef &field) {
|
||||||
FLATBUFFERS_ASSERT(field.key);
|
FLATBUFFERS_ASSERT(field.key);
|
||||||
const bool is_string = (field.value.type.base_type == BASE_TYPE_STRING);
|
const bool is_string = (IsString(field.value.type));
|
||||||
|
|
||||||
code_ += " bool KeyCompareLessThan(const {{STRUCT_NAME}} *o) const {";
|
code_ += " bool KeyCompareLessThan(const {{STRUCT_NAME}} *o) const {";
|
||||||
if (is_string) {
|
if (is_string) {
|
||||||
@@ -2257,7 +2257,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
// that doesn't need alignment code.
|
// that doesn't need alignment code.
|
||||||
std::string GenVectorForceAlign(const FieldDef &field,
|
std::string GenVectorForceAlign(const FieldDef &field,
|
||||||
const std::string &field_size) {
|
const std::string &field_size) {
|
||||||
FLATBUFFERS_ASSERT(field.value.type.base_type == BASE_TYPE_VECTOR);
|
FLATBUFFERS_ASSERT(IsVector(field.value.type));
|
||||||
// Get the value of the force_align attribute.
|
// Get the value of the force_align attribute.
|
||||||
const auto *force_align = field.attributes.Lookup("force_align");
|
const auto *force_align = field.attributes.Lookup("force_align");
|
||||||
const int align = force_align ? atoi(force_align->constant.c_str()) : 1;
|
const int align = force_align ? atoi(force_align->constant.c_str()) : 1;
|
||||||
@@ -2288,8 +2288,8 @@ class CppGenerator : public BaseGenerator {
|
|||||||
if (field.deprecated) continue;
|
if (field.deprecated) continue;
|
||||||
const bool is_scalar = IsScalar(field.value.type.base_type);
|
const bool is_scalar = IsScalar(field.value.type.base_type);
|
||||||
const bool is_default_scalar = is_scalar && !field.IsScalarOptional();
|
const bool is_default_scalar = is_scalar && !field.IsScalarOptional();
|
||||||
const bool is_string = field.value.type.base_type == BASE_TYPE_STRING;
|
const bool is_string = IsString(field.value.type);
|
||||||
const bool is_vector = field.value.type.base_type == BASE_TYPE_VECTOR;
|
const bool is_vector = IsVector(field.value.type);
|
||||||
if (is_string || is_vector) { has_string_or_vector_fields = true; }
|
if (is_string || is_vector) { has_string_or_vector_fields = true; }
|
||||||
|
|
||||||
std::string offset = GenFieldOffsetName(field);
|
std::string offset = GenFieldOffsetName(field);
|
||||||
@@ -2418,7 +2418,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
const auto &field = **it;
|
const auto &field = **it;
|
||||||
if (!field.deprecated) {
|
if (!field.deprecated) {
|
||||||
code_.SetValue("FIELD_NAME", Name(field));
|
code_.SetValue("FIELD_NAME", Name(field));
|
||||||
if (field.value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(field.value.type)) {
|
||||||
if (!field.shared) {
|
if (!field.shared) {
|
||||||
code_.SetValue("CREATE_STRING", "CreateString");
|
code_.SetValue("CREATE_STRING", "CreateString");
|
||||||
} else {
|
} else {
|
||||||
@@ -2427,7 +2427,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code_ +=
|
code_ +=
|
||||||
" auto {{FIELD_NAME}}__ = {{FIELD_NAME}} ? "
|
" auto {{FIELD_NAME}}__ = {{FIELD_NAME}} ? "
|
||||||
"_fbb.{{CREATE_STRING}}({{FIELD_NAME}}) : 0;";
|
"_fbb.{{CREATE_STRING}}({{FIELD_NAME}}) : 0;";
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
} else if (IsVector(field.value.type)) {
|
||||||
const std::string force_align_code =
|
const std::string force_align_code =
|
||||||
GenVectorForceAlign(field, Name(field) + "->size()");
|
GenVectorForceAlign(field, Name(field) + "->size()");
|
||||||
if (!force_align_code.empty()) {
|
if (!force_align_code.empty()) {
|
||||||
@@ -2462,8 +2462,8 @@ class CppGenerator : public BaseGenerator {
|
|||||||
if (!field.deprecated) {
|
if (!field.deprecated) {
|
||||||
code_.SetValue("FIELD_NAME", Name(field));
|
code_.SetValue("FIELD_NAME", Name(field));
|
||||||
code_ += ",\n {{FIELD_NAME}}\\";
|
code_ += ",\n {{FIELD_NAME}}\\";
|
||||||
if (field.value.type.base_type == BASE_TYPE_STRING ||
|
if (IsString(field.value.type) ||
|
||||||
field.value.type.base_type == BASE_TYPE_VECTOR) {
|
IsVector(field.value.type)) {
|
||||||
code_ += "__\\";
|
code_ += "__\\";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2915,7 +2915,7 @@ class CppGenerator : public BaseGenerator {
|
|||||||
it != struct_def.fields.vec.end(); ++it) {
|
it != struct_def.fields.vec.end(); ++it) {
|
||||||
auto &field = **it;
|
auto &field = **it;
|
||||||
if (field.deprecated) { continue; }
|
if (field.deprecated) { continue; }
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
const std::string force_align_code =
|
const std::string force_align_code =
|
||||||
GenVectorForceAlign(field, "_o->" + Name(field) + ".size()");
|
GenVectorForceAlign(field, "_o->" + Name(field) + ".size()");
|
||||||
if (!force_align_code.empty()) { code_ += " " + force_align_code; }
|
if (!force_align_code.empty()) { code_ += " " + force_align_code; }
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
if (!enum_def.is_union) return false;
|
if (!enum_def.is_union) return false;
|
||||||
for (auto it = enum_def.Vals().begin(); it != enum_def.Vals().end(); ++it) {
|
for (auto it = enum_def.Vals().begin(); it != enum_def.Vals().end(); ++it) {
|
||||||
auto &val = **it;
|
auto &val = **it;
|
||||||
if (val.union_type.base_type == BASE_TYPE_STRING) { return true; }
|
if (IsString(val.union_type)) { return true; }
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -486,7 +486,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
key_getter += "int tableOffset = Table.";
|
key_getter += "int tableOffset = Table.";
|
||||||
key_getter += "__indirect(vectorLocation + 4 * (start + middle)";
|
key_getter += "__indirect(vectorLocation + 4 * (start + middle)";
|
||||||
key_getter += ", bb);\n ";
|
key_getter += ", bb);\n ";
|
||||||
if (key_field->value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(key_field->value.type)) {
|
||||||
key_getter += "int comp = Table.";
|
key_getter += "int comp = Table.";
|
||||||
key_getter += "CompareStrings(";
|
key_getter += "CompareStrings(";
|
||||||
key_getter += GenOffsetGetter(key_field);
|
key_getter += GenOffsetGetter(key_field);
|
||||||
@@ -501,7 +501,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
std::string GenKeyGetter(flatbuffers::FieldDef *key_field) const {
|
std::string GenKeyGetter(flatbuffers::FieldDef *key_field) const {
|
||||||
std::string key_getter = "";
|
std::string key_getter = "";
|
||||||
auto data_buffer = "builder.DataBuffer";
|
auto data_buffer = "builder.DataBuffer";
|
||||||
if (key_field->value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(key_field->value.type)) {
|
||||||
key_getter += "Table.CompareStrings(";
|
key_getter += "Table.CompareStrings(";
|
||||||
key_getter += GenOffsetGetter(key_field, "o1") + ", ";
|
key_getter += GenOffsetGetter(key_field, "o1") + ", ";
|
||||||
key_getter += GenOffsetGetter(key_field, "o2") + ", " + data_buffer + ")";
|
key_getter += GenOffsetGetter(key_field, "o2") + ", " + data_buffer + ")";
|
||||||
@@ -604,7 +604,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
if (!struct_def.fixed &&
|
if (!struct_def.fixed &&
|
||||||
(field.value.type.base_type == BASE_TYPE_STRUCT ||
|
(field.value.type.base_type == BASE_TYPE_STRUCT ||
|
||||||
field.value.type.base_type == BASE_TYPE_UNION ||
|
field.value.type.base_type == BASE_TYPE_UNION ||
|
||||||
(field.value.type.base_type == BASE_TYPE_VECTOR &&
|
(IsVector(field.value.type) &&
|
||||||
(field.value.type.element == BASE_TYPE_STRUCT ||
|
(field.value.type.element == BASE_TYPE_STRUCT ||
|
||||||
field.value.type.element == BASE_TYPE_UNION)))) {
|
field.value.type.element == BASE_TYPE_UNION)))) {
|
||||||
optional = "?";
|
optional = "?";
|
||||||
@@ -626,10 +626,10 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
"); return o != 0 ? ");
|
"); return o != 0 ? ");
|
||||||
// Generate the accessors that don't do object reuse.
|
// Generate the accessors that don't do object reuse.
|
||||||
if (field.value.type.base_type == BASE_TYPE_STRUCT) {
|
if (field.value.type.base_type == BASE_TYPE_STRUCT) {
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_VECTOR &&
|
} else if (IsVector(field.value.type) &&
|
||||||
field.value.type.element == BASE_TYPE_STRUCT) {
|
field.value.type.element == BASE_TYPE_STRUCT) {
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_UNION ||
|
} else if (field.value.type.base_type == BASE_TYPE_UNION ||
|
||||||
(field.value.type.base_type == BASE_TYPE_VECTOR &&
|
(IsVector(field.value.type) &&
|
||||||
field.value.type.VectorType().base_type == BASE_TYPE_UNION)) {
|
field.value.type.VectorType().base_type == BASE_TYPE_UNION)) {
|
||||||
method_start += "<TTable>";
|
method_start += "<TTable>";
|
||||||
type_name = type_name_dest;
|
type_name = type_name_dest;
|
||||||
@@ -639,7 +639,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
std::string default_cast = "";
|
std::string default_cast = "";
|
||||||
// only create default casts for c# scalars or vectors of scalars
|
// only create default casts for c# scalars or vectors of scalars
|
||||||
if ((IsScalar(field.value.type.base_type) ||
|
if ((IsScalar(field.value.type.base_type) ||
|
||||||
(field.value.type.base_type == BASE_TYPE_VECTOR &&
|
(IsVector(field.value.type) &&
|
||||||
IsScalar(field.value.type.element)))) {
|
IsScalar(field.value.type.element)))) {
|
||||||
// For scalars, default value will be returned by GetDefaultValue().
|
// For scalars, default value will be returned by GetDefaultValue().
|
||||||
// If the scalar is an enum, GetDefaultValue() returns an actual c# enum
|
// If the scalar is an enum, GetDefaultValue() returns an actual c# enum
|
||||||
@@ -647,7 +647,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
// elements of vectors are integer literals ("0") and are still casted
|
// elements of vectors are integer literals ("0") and are still casted
|
||||||
// for clarity.
|
// for clarity.
|
||||||
if (field.value.type.enum_def == nullptr ||
|
if (field.value.type.enum_def == nullptr ||
|
||||||
field.value.type.base_type == BASE_TYPE_VECTOR) {
|
IsVector(field.value.type)) {
|
||||||
default_cast = "(" + type_name_dest + ")";
|
default_cast = "(" + type_name_dest + ")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -762,7 +762,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
code += member_suffix;
|
code += member_suffix;
|
||||||
code += "}\n";
|
code += "}\n";
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
code += " public int " + MakeCamel(field.name, true);
|
code += " public int " + MakeCamel(field.name, true);
|
||||||
code += "Length";
|
code += "Length";
|
||||||
code += " { get";
|
code += " { get";
|
||||||
@@ -793,9 +793,9 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Generate a ByteBuffer accessor for strings & vectors of scalars.
|
// Generate a ByteBuffer accessor for strings & vectors of scalars.
|
||||||
if ((field.value.type.base_type == BASE_TYPE_VECTOR &&
|
if ((IsVector(field.value.type) &&
|
||||||
IsScalar(field.value.type.VectorType().base_type)) ||
|
IsScalar(field.value.type.VectorType().base_type)) ||
|
||||||
field.value.type.base_type == BASE_TYPE_STRING) {
|
IsString(field.value.type)) {
|
||||||
code += "#if ENABLE_SPAN_T\n";
|
code += "#if ENABLE_SPAN_T\n";
|
||||||
code += " public Span<" + GenTypeBasic(field.value.type.VectorType()) +
|
code += " public Span<" + GenTypeBasic(field.value.type.VectorType()) +
|
||||||
"> Get";
|
"> Get";
|
||||||
@@ -1046,7 +1046,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
code += ", ";
|
code += ", ";
|
||||||
code += GenDefaultValue(field, false);
|
code += GenDefaultValue(field, false);
|
||||||
code += "); }\n";
|
code += "); }\n";
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
auto vector_type = field.value.type.VectorType();
|
auto vector_type = field.value.type.VectorType();
|
||||||
auto alignment = InlineAlignment(vector_type);
|
auto alignment = InlineAlignment(vector_type);
|
||||||
auto elem_size = InlineSize(vector_type);
|
auto elem_size = InlineSize(vector_type);
|
||||||
@@ -1068,8 +1068,8 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
code += "(";
|
code += "(";
|
||||||
code += SourceCastBasic(vector_type);
|
code += SourceCastBasic(vector_type);
|
||||||
code += "data[i]";
|
code += "data[i]";
|
||||||
if ((vector_type.base_type == BASE_TYPE_STRUCT ||
|
if (vector_type.base_type == BASE_TYPE_STRUCT ||
|
||||||
vector_type.base_type == BASE_TYPE_STRING))
|
IsString(vector_type))
|
||||||
code += ".Value";
|
code += ".Value";
|
||||||
code += "); return ";
|
code += "); return ";
|
||||||
code += "builder.EndVector(); }\n";
|
code += "builder.EndVector(); }\n";
|
||||||
@@ -1147,7 +1147,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
code += "int vectorLocation, ";
|
code += "int vectorLocation, ";
|
||||||
code += GenTypeGet(key_field->value.type);
|
code += GenTypeGet(key_field->value.type);
|
||||||
code += " key, ByteBuffer bb) {\n";
|
code += " key, ByteBuffer bb) {\n";
|
||||||
if (key_field->value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(key_field->value.type)) {
|
||||||
code += " byte[] byteKey = ";
|
code += " byte[] byteKey = ";
|
||||||
code += "System.Text.Encoding.UTF8.GetBytes(key);\n";
|
code += "System.Text.Encoding.UTF8.GetBytes(key);\n";
|
||||||
}
|
}
|
||||||
@@ -1291,7 +1291,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
code += " default: return 0;\n";
|
code += " default: return 0;\n";
|
||||||
} else {
|
} else {
|
||||||
code += " case " + enum_def.name + "." + ev.name + ": return ";
|
code += " case " + enum_def.name + "." + ev.name + ": return ";
|
||||||
if (ev.union_type.base_type == BASE_TYPE_STRING) {
|
if (IsString(ev.union_type)) {
|
||||||
code += "builder.CreateString(_o.As" + ev.name + "()).Value;\n";
|
code += "builder.CreateString(_o.As" + ev.name + "()).Value;\n";
|
||||||
} else {
|
} else {
|
||||||
code += GenTypeGet(ev.union_type) + ".Pack(builder, _o.As" + ev.name +
|
code += GenTypeGet(ev.union_type) + ".Pack(builder, _o.As" + ev.name +
|
||||||
@@ -1425,7 +1425,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
code += indent + " case " + WrapInNameSpace(enum_def) + "." + ev.name +
|
code += indent + " case " + WrapInNameSpace(enum_def) + "." + ev.name +
|
||||||
":\n";
|
":\n";
|
||||||
code += indent + " " + varialbe_name + ".Value = this." + camel_name;
|
code += indent + " " + varialbe_name + ".Value = this." + camel_name;
|
||||||
if (ev.union_type.base_type == BASE_TYPE_STRING) {
|
if (IsString(ev.union_type)) {
|
||||||
code += "AsString" + func_suffix + ";\n";
|
code += "AsString" + func_suffix + ";\n";
|
||||||
} else {
|
} else {
|
||||||
code += "<" + GenTypeGet(ev.union_type) + ">" + func_suffix;
|
code += "<" + GenTypeGet(ev.union_type) + ">" + func_suffix;
|
||||||
@@ -1927,7 +1927,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
auto utype_name = WrapInNameSpace(*field.value.type.enum_def);
|
auto utype_name = WrapInNameSpace(*field.value.type.enum_def);
|
||||||
code +=
|
code +=
|
||||||
" [Newtonsoft.Json.JsonProperty(\"" + field.name + "_type\")]\n";
|
" [Newtonsoft.Json.JsonProperty(\"" + field.name + "_type\")]\n";
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
code += " private " + utype_name + "[] " + camel_name + "Type {\n";
|
code += " private " + utype_name + "[] " + camel_name + "Type {\n";
|
||||||
code += " get {\n";
|
code += " get {\n";
|
||||||
code += " if (this." + camel_name + " == null) return null;\n";
|
code += " if (this." + camel_name + " == null) return null;\n";
|
||||||
@@ -1966,7 +1966,7 @@ class CSharpGenerator : public BaseGenerator {
|
|||||||
code += " [Newtonsoft.Json.JsonProperty(\"" + field.name + "\")]\n";
|
code += " [Newtonsoft.Json.JsonProperty(\"" + field.name + "\")]\n";
|
||||||
if (IsUnion(field.value.type)) {
|
if (IsUnion(field.value.type)) {
|
||||||
auto union_name =
|
auto union_name =
|
||||||
(field.value.type.base_type == BASE_TYPE_VECTOR)
|
(IsVector(field.value.type))
|
||||||
? GenTypeGet_ObjectAPI(field.value.type.VectorType(), opts)
|
? GenTypeGet_ObjectAPI(field.value.type.VectorType(), opts)
|
||||||
: type_name;
|
: type_name;
|
||||||
code += " [Newtonsoft.Json.JsonConverter(typeof(" + union_name +
|
code += " [Newtonsoft.Json.JsonConverter(typeof(" + union_name +
|
||||||
|
|||||||
@@ -330,13 +330,13 @@ class DartGenerator : public BaseGenerator {
|
|||||||
bool parent_is_vector = false) {
|
bool parent_is_vector = false) {
|
||||||
if (type.base_type == BASE_TYPE_BOOL) {
|
if (type.base_type == BASE_TYPE_BOOL) {
|
||||||
return "const " + _kFb + ".BoolReader()";
|
return "const " + _kFb + ".BoolReader()";
|
||||||
} else if (type.base_type == BASE_TYPE_VECTOR) {
|
} else if (IsVector(type)) {
|
||||||
return "const " + _kFb + ".ListReader<" +
|
return "const " + _kFb + ".ListReader<" +
|
||||||
GenDartTypeName(type.VectorType(), current_namespace, def) + ">(" +
|
GenDartTypeName(type.VectorType(), current_namespace, def) + ">(" +
|
||||||
GenReaderTypeName(type.VectorType(), current_namespace, def,
|
GenReaderTypeName(type.VectorType(), current_namespace, def,
|
||||||
true) +
|
true) +
|
||||||
")";
|
")";
|
||||||
} else if (type.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(type)) {
|
||||||
return "const " + _kFb + ".StringReader()";
|
return "const " + _kFb + ".StringReader()";
|
||||||
}
|
}
|
||||||
if (IsScalar(type.base_type)) {
|
if (IsScalar(type.base_type)) {
|
||||||
@@ -808,7 +808,7 @@ class DartGenerator : public BaseGenerator {
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
code += " final int " + MakeCamel(field.name, false) + "Offset";
|
code += " final int " + MakeCamel(field.name, false) + "Offset";
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
code +=
|
code +=
|
||||||
" = _" + MakeCamel(field.name, false) + "?.isNotEmpty == true\n";
|
" = _" + MakeCamel(field.name, false) + "?.isNotEmpty == true\n";
|
||||||
code += " ? fbBuilder.writeList";
|
code += " ? fbBuilder.writeList";
|
||||||
@@ -832,7 +832,7 @@ class DartGenerator : public BaseGenerator {
|
|||||||
code += ")";
|
code += ")";
|
||||||
}
|
}
|
||||||
code += "\n : null;\n";
|
code += "\n : null;\n";
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(field.value.type)) {
|
||||||
code += " = fbBuilder.writeString(_" + MakeCamel(field.name, false) +
|
code += " = fbBuilder.writeString(_" + MakeCamel(field.name, false) +
|
||||||
");\n";
|
");\n";
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -458,7 +458,7 @@ class GoGenerator : public BaseGenerator {
|
|||||||
"(a + flatbuffers.UOffsetT(j*" +
|
"(a + flatbuffers.UOffsetT(j*" +
|
||||||
NumToString(InlineSize(vectortype)) + "))");
|
NumToString(InlineSize(vectortype)) + "))");
|
||||||
code += "\n\t}\n";
|
code += "\n\t}\n";
|
||||||
if (vectortype.base_type == BASE_TYPE_STRING) {
|
if (IsString(vectortype)) {
|
||||||
code += "\treturn nil\n";
|
code += "\treturn nil\n";
|
||||||
} else if (vectortype.base_type == BASE_TYPE_BOOL) {
|
} else if (vectortype.base_type == BASE_TYPE_BOOL) {
|
||||||
code += "\treturn false\n";
|
code += "\treturn false\n";
|
||||||
@@ -640,7 +640,7 @@ class GoGenerator : public BaseGenerator {
|
|||||||
default: FLATBUFFERS_ASSERT(0);
|
default: FLATBUFFERS_ASSERT(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
GetVectorLen(struct_def, field, code_ptr);
|
GetVectorLen(struct_def, field, code_ptr);
|
||||||
if (field.value.type.element == BASE_TYPE_UCHAR) {
|
if (field.value.type.element == BASE_TYPE_UCHAR) {
|
||||||
GetUByteSlice(struct_def, field, code_ptr);
|
GetUByteSlice(struct_def, field, code_ptr);
|
||||||
@@ -708,7 +708,7 @@ class GoGenerator : public BaseGenerator {
|
|||||||
} else {
|
} else {
|
||||||
MutateScalarFieldOfTable(struct_def, field, code_ptr);
|
MutateScalarFieldOfTable(struct_def, field, code_ptr);
|
||||||
}
|
}
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
} else if (IsVector(field.value.type)) {
|
||||||
if (IsScalar(field.value.type.element)) {
|
if (IsScalar(field.value.type.element)) {
|
||||||
MutateElementOfVectorOfNonStruct(struct_def, field, code_ptr);
|
MutateElementOfVectorOfNonStruct(struct_def, field, code_ptr);
|
||||||
}
|
}
|
||||||
@@ -726,7 +726,7 @@ class GoGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
auto offset = it - struct_def.fields.vec.begin();
|
auto offset = it - struct_def.fields.vec.begin();
|
||||||
BuildFieldOfTable(struct_def, field, offset, code_ptr);
|
BuildFieldOfTable(struct_def, field, offset, code_ptr);
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
BuildVectorOfTable(struct_def, field, code_ptr);
|
BuildVectorOfTable(struct_def, field, code_ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -869,10 +869,10 @@ class GoGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
std::string offset = MakeCamel(field.name, false) + "Offset";
|
std::string offset = MakeCamel(field.name, false) + "Offset";
|
||||||
|
|
||||||
if (field.value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(field.value.type)) {
|
||||||
code += "\t" + offset + " := builder.CreateString(t." +
|
code += "\t" + offset + " := builder.CreateString(t." +
|
||||||
MakeCamel(field.name) + ")\n";
|
MakeCamel(field.name) + ")\n";
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_VECTOR &&
|
} else if (IsVector(field.value.type) &&
|
||||||
field.value.type.element == BASE_TYPE_UCHAR &&
|
field.value.type.element == BASE_TYPE_UCHAR &&
|
||||||
field.value.type.enum_def == nullptr) {
|
field.value.type.enum_def == nullptr) {
|
||||||
code += "\t" + offset + " := flatbuffers.UOffsetT(0)\n";
|
code += "\t" + offset + " := flatbuffers.UOffsetT(0)\n";
|
||||||
@@ -880,7 +880,7 @@ class GoGenerator : public BaseGenerator {
|
|||||||
code += "\t\t" + offset + " = builder.CreateByteString(t." +
|
code += "\t\t" + offset + " = builder.CreateByteString(t." +
|
||||||
MakeCamel(field.name) + ")\n";
|
MakeCamel(field.name) + ")\n";
|
||||||
code += "\t}\n";
|
code += "\t}\n";
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
} else if (IsVector(field.value.type)) {
|
||||||
code += "\t" + offset + " := flatbuffers.UOffsetT(0)\n";
|
code += "\t" + offset + " := flatbuffers.UOffsetT(0)\n";
|
||||||
code += "\tif t." + MakeCamel(field.name) + " != nil {\n";
|
code += "\tif t." + MakeCamel(field.name) + " != nil {\n";
|
||||||
std::string length = MakeCamel(field.name, false) + "Length";
|
std::string length = MakeCamel(field.name, false) + "Length";
|
||||||
@@ -984,15 +984,15 @@ class GoGenerator : public BaseGenerator {
|
|||||||
continue;
|
continue;
|
||||||
code +=
|
code +=
|
||||||
"\tt." + field_name_camel + " = rcv." + field_name_camel + "()\n";
|
"\tt." + field_name_camel + " = rcv." + field_name_camel + "()\n";
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(field.value.type)) {
|
||||||
code += "\tt." + field_name_camel + " = string(rcv." +
|
code += "\tt." + field_name_camel + " = string(rcv." +
|
||||||
field_name_camel + "())\n";
|
field_name_camel + "())\n";
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_VECTOR &&
|
} else if (IsVector(field.value.type) &&
|
||||||
field.value.type.element == BASE_TYPE_UCHAR &&
|
field.value.type.element == BASE_TYPE_UCHAR &&
|
||||||
field.value.type.enum_def == nullptr) {
|
field.value.type.enum_def == nullptr) {
|
||||||
code += "\tt." + field_name_camel + " = rcv." + field_name_camel +
|
code += "\tt." + field_name_camel + " = rcv." + field_name_camel +
|
||||||
"Bytes()\n";
|
"Bytes()\n";
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
} else if (IsVector(field.value.type)) {
|
||||||
code += "\t" + length + " := rcv." + field_name_camel + "Length()\n";
|
code += "\t" + length + " := rcv." + field_name_camel + "Length()\n";
|
||||||
code += "\tt." + field_name_camel + " = make(" +
|
code += "\tt." + field_name_camel + " = make(" +
|
||||||
NativeType(field.value.type) + ", " + length + ")\n";
|
NativeType(field.value.type) + ", " + length + ")\n";
|
||||||
@@ -1225,9 +1225,9 @@ class GoGenerator : public BaseGenerator {
|
|||||||
} else {
|
} else {
|
||||||
return GetEnumTypeName(*type.enum_def);
|
return GetEnumTypeName(*type.enum_def);
|
||||||
}
|
}
|
||||||
} else if (type.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(type)) {
|
||||||
return "string";
|
return "string";
|
||||||
} else if (type.base_type == BASE_TYPE_VECTOR) {
|
} else if (IsVector(type)) {
|
||||||
return "[]" + NativeType(type.VectorType());
|
return "[]" + NativeType(type.VectorType());
|
||||||
} else if (type.base_type == BASE_TYPE_STRUCT) {
|
} else if (type.base_type == BASE_TYPE_STRUCT) {
|
||||||
return "*" + WrapInNameSpaceAndTrack(type.struct_def->defined_namespace,
|
return "*" + WrapInNameSpaceAndTrack(type.struct_def->defined_namespace,
|
||||||
|
|||||||
@@ -526,7 +526,7 @@ class JavaGenerator : public BaseGenerator {
|
|||||||
key_getter += "int tableOffset = ";
|
key_getter += "int tableOffset = ";
|
||||||
key_getter += "__indirect(vectorLocation + 4 * (start + middle)";
|
key_getter += "__indirect(vectorLocation + 4 * (start + middle)";
|
||||||
key_getter += ", bb);\n ";
|
key_getter += ", bb);\n ";
|
||||||
if (key_field->value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(key_field->value.type)) {
|
||||||
key_getter += "int comp = ";
|
key_getter += "int comp = ";
|
||||||
key_getter += "compareStrings(";
|
key_getter += "compareStrings(";
|
||||||
key_getter += GenOffsetGetter(key_field);
|
key_getter += GenOffsetGetter(key_field);
|
||||||
@@ -543,7 +543,7 @@ class JavaGenerator : public BaseGenerator {
|
|||||||
std::string GenKeyGetter(flatbuffers::FieldDef *key_field) const {
|
std::string GenKeyGetter(flatbuffers::FieldDef *key_field) const {
|
||||||
std::string key_getter = "";
|
std::string key_getter = "";
|
||||||
auto data_buffer = "_bb";
|
auto data_buffer = "_bb";
|
||||||
if (key_field->value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(key_field->value.type)) {
|
||||||
key_getter += " return ";
|
key_getter += " return ";
|
||||||
key_getter += "";
|
key_getter += "";
|
||||||
key_getter += "compareStrings(";
|
key_getter += "compareStrings(";
|
||||||
@@ -669,7 +669,7 @@ class JavaGenerator : public BaseGenerator {
|
|||||||
code += MakeCamel(field.name, false);
|
code += MakeCamel(field.name, false);
|
||||||
code += "(new ";
|
code += "(new ";
|
||||||
code += type_name + "()); }\n";
|
code += type_name + "()); }\n";
|
||||||
} else if (field.value.type.base_type == BASE_TYPE_VECTOR &&
|
} else if (IsVector(field.value.type) &&
|
||||||
field.value.type.element == BASE_TYPE_STRUCT) {
|
field.value.type.element == BASE_TYPE_STRUCT) {
|
||||||
// Accessors for vectors of structs also take accessor objects, this
|
// Accessors for vectors of structs also take accessor objects, this
|
||||||
// generates a variant without that argument.
|
// generates a variant without that argument.
|
||||||
@@ -772,7 +772,7 @@ class JavaGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
code += member_suffix;
|
code += member_suffix;
|
||||||
code += "}\n";
|
code += "}\n";
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
code += " public int " + MakeCamel(field.name, false);
|
code += " public int " + MakeCamel(field.name, false);
|
||||||
code += "Length";
|
code += "Length";
|
||||||
code += "()";
|
code += "()";
|
||||||
@@ -813,7 +813,7 @@ class JavaGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Generate the accessors for vector of structs with vector access object
|
// Generate the accessors for vector of structs with vector access object
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
std::string vector_type_name;
|
std::string vector_type_name;
|
||||||
const auto &element_base_type = field.value.type.VectorType().base_type;
|
const auto &element_base_type = field.value.type.VectorType().base_type;
|
||||||
if (IsScalar(element_base_type)) {
|
if (IsScalar(element_base_type)) {
|
||||||
@@ -842,15 +842,15 @@ class JavaGenerator : public BaseGenerator {
|
|||||||
code += "bb) : null" + member_suffix + "}\n";
|
code += "bb) : null" + member_suffix + "}\n";
|
||||||
}
|
}
|
||||||
// Generate a ByteBuffer accessor for strings & vectors of scalars.
|
// Generate a ByteBuffer accessor for strings & vectors of scalars.
|
||||||
if ((field.value.type.base_type == BASE_TYPE_VECTOR &&
|
if ((IsVector(field.value.type) &&
|
||||||
IsScalar(field.value.type.VectorType().base_type)) ||
|
IsScalar(field.value.type.VectorType().base_type)) ||
|
||||||
field.value.type.base_type == BASE_TYPE_STRING) {
|
IsString(field.value.type)) {
|
||||||
code += " public ByteBuffer ";
|
code += " public ByteBuffer ";
|
||||||
code += MakeCamel(field.name, false);
|
code += MakeCamel(field.name, false);
|
||||||
code += "AsByteBuffer() { return ";
|
code += "AsByteBuffer() { return ";
|
||||||
code += "__vector_as_bytebuffer(";
|
code += "__vector_as_bytebuffer(";
|
||||||
code += NumToString(field.value.offset) + ", ";
|
code += NumToString(field.value.offset) + ", ";
|
||||||
code += NumToString(field.value.type.base_type == BASE_TYPE_STRING
|
code += NumToString(IsString(field.value.type)
|
||||||
? 1
|
? 1
|
||||||
: InlineSize(field.value.type.VectorType()));
|
: InlineSize(field.value.type.VectorType()));
|
||||||
code += "); }\n";
|
code += "); }\n";
|
||||||
@@ -859,7 +859,7 @@ class JavaGenerator : public BaseGenerator {
|
|||||||
code += "InByteBuffer(ByteBuffer _bb) { return ";
|
code += "InByteBuffer(ByteBuffer _bb) { return ";
|
||||||
code += "__vector_in_bytebuffer(_bb, ";
|
code += "__vector_in_bytebuffer(_bb, ";
|
||||||
code += NumToString(field.value.offset) + ", ";
|
code += NumToString(field.value.offset) + ", ";
|
||||||
code += NumToString(field.value.type.base_type == BASE_TYPE_STRING
|
code += NumToString(IsString(field.value.type)
|
||||||
? 1
|
? 1
|
||||||
: InlineSize(field.value.type.VectorType()));
|
: InlineSize(field.value.type.VectorType()));
|
||||||
code += "); }\n";
|
code += "); }\n";
|
||||||
@@ -1036,7 +1036,7 @@ class JavaGenerator : public BaseGenerator {
|
|||||||
code += SourceCastBasic(field.value.type);
|
code += SourceCastBasic(field.value.type);
|
||||||
code += GenDefaultValue(field);
|
code += GenDefaultValue(field);
|
||||||
code += "); }\n";
|
code += "); }\n";
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
auto vector_type = field.value.type.VectorType();
|
auto vector_type = field.value.type.VectorType();
|
||||||
auto alignment = InlineAlignment(vector_type);
|
auto alignment = InlineAlignment(vector_type);
|
||||||
auto elem_size = InlineSize(vector_type);
|
auto elem_size = InlineSize(vector_type);
|
||||||
@@ -1132,7 +1132,7 @@ class JavaGenerator : public BaseGenerator {
|
|||||||
code += "int vectorLocation, ";
|
code += "int vectorLocation, ";
|
||||||
code += GenTypeNameDest(key_field->value.type);
|
code += GenTypeNameDest(key_field->value.type);
|
||||||
code += " key, ByteBuffer bb) {\n";
|
code += " key, ByteBuffer bb) {\n";
|
||||||
if (key_field->value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(key_field->value.type)) {
|
||||||
code += " byte[] byteKey = ";
|
code += " byte[] byteKey = ";
|
||||||
code += "key.getBytes(java.nio.charset.StandardCharsets.UTF_8);\n";
|
code += "key.getBytes(java.nio.charset.StandardCharsets.UTF_8);\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -491,10 +491,9 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
std::string GenTypeName(const Type &type, bool input,
|
std::string GenTypeName(const Type &type, bool input,
|
||||||
bool allowNull = false) {
|
bool allowNull = false) {
|
||||||
if (!input) {
|
if (!input) {
|
||||||
if (type.base_type == BASE_TYPE_STRING ||
|
if (IsString(type) || type.base_type == BASE_TYPE_STRUCT) {
|
||||||
type.base_type == BASE_TYPE_STRUCT) {
|
|
||||||
std::string name;
|
std::string name;
|
||||||
if (type.base_type == BASE_TYPE_STRING) {
|
if (IsString(type)) {
|
||||||
name = "string|Uint8Array";
|
name = "string|Uint8Array";
|
||||||
} else {
|
} else {
|
||||||
name = WrapInNameSpace(*type.struct_def);
|
name = WrapInNameSpace(*type.struct_def);
|
||||||
@@ -714,7 +713,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
return std::any_of(union_enum.Vals().begin(), union_enum.Vals().end(),
|
return std::any_of(union_enum.Vals().begin(), union_enum.Vals().end(),
|
||||||
[](const EnumVal *ev) {
|
[](const EnumVal *ev) {
|
||||||
return !(ev->IsZero()) &&
|
return !(ev->IsZero()) &&
|
||||||
(ev->union_type.base_type == BASE_TYPE_STRING);
|
(IsString(ev->union_type));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -733,7 +732,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
if (ev.IsZero()) { continue; }
|
if (ev.IsZero()) { continue; }
|
||||||
|
|
||||||
std::string type = "";
|
std::string type = "";
|
||||||
if (ev.union_type.base_type == BASE_TYPE_STRING) {
|
if (IsString(ev.union_type)) {
|
||||||
type = "string"; // no need to wrap string type in namespace
|
type = "string"; // no need to wrap string type in namespace
|
||||||
} else if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
|
} else if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
|
||||||
if (!parser_.opts.generate_all) {
|
if (!parser_.opts.generate_all) {
|
||||||
@@ -767,7 +766,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
if (ev.IsZero()) { continue; }
|
if (ev.IsZero()) { continue; }
|
||||||
|
|
||||||
std::string type = "";
|
std::string type = "";
|
||||||
if (ev.union_type.base_type == BASE_TYPE_STRING) {
|
if (IsString(ev.union_type)) {
|
||||||
type = "string"; // no need to wrap string type in namespace
|
type = "string"; // no need to wrap string type in namespace
|
||||||
} else if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
|
} else if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
|
||||||
type = GenPrefixedTypeName(
|
type = GenPrefixedTypeName(
|
||||||
@@ -830,7 +829,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
ret += " case '" + ev.name + "': ";
|
ret += " case '" + ev.name + "': ";
|
||||||
|
|
||||||
if (ev.union_type.base_type == BASE_TYPE_STRING) {
|
if (IsString(ev.union_type)) {
|
||||||
ret += "return " + accessor_str + "'') as string;";
|
ret += "return " + accessor_str + "'') as string;";
|
||||||
} else if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
|
} else if (ev.union_type.base_type == BASE_TYPE_STRUCT) {
|
||||||
const auto type = GenPrefixedTypeName(
|
const auto type = GenPrefixedTypeName(
|
||||||
@@ -1044,7 +1043,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
// Emit a scalar field
|
// Emit a scalar field
|
||||||
if (IsScalar(field.value.type.base_type) ||
|
if (IsScalar(field.value.type.base_type) ||
|
||||||
field.value.type.base_type == BASE_TYPE_STRING) {
|
IsString(field.value.type)) {
|
||||||
if (field.value.type.enum_def) {
|
if (field.value.type.enum_def) {
|
||||||
if (!parser_.opts.generate_all) {
|
if (!parser_.opts.generate_all) {
|
||||||
imported_files.insert(field.value.type.enum_def->file);
|
imported_files.insert(field.value.type.enum_def->file);
|
||||||
@@ -1413,10 +1412,10 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
// Emit a scalar field
|
// Emit a scalar field
|
||||||
if (IsScalar(field.value.type.base_type) ||
|
if (IsScalar(field.value.type.base_type) ||
|
||||||
field.value.type.base_type == BASE_TYPE_STRING) {
|
IsString(field.value.type)) {
|
||||||
GenDocComment(
|
GenDocComment(
|
||||||
field.doc_comment, code_ptr,
|
field.doc_comment, code_ptr,
|
||||||
std::string(field.value.type.base_type == BASE_TYPE_STRING
|
std::string(IsString(field.value.type)
|
||||||
? GenTypeAnnotation(kParam, "flatbuffers.Encoding=",
|
? GenTypeAnnotation(kParam, "flatbuffers.Encoding=",
|
||||||
"optionalEncoding")
|
"optionalEncoding")
|
||||||
: "") +
|
: "") +
|
||||||
@@ -1425,7 +1424,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
"", false));
|
"", false));
|
||||||
if (lang_.language == IDLOptions::kTs) {
|
if (lang_.language == IDLOptions::kTs) {
|
||||||
std::string prefix = MakeCamel(field.name, false) + "(";
|
std::string prefix = MakeCamel(field.name, false) + "(";
|
||||||
if (field.value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(field.value.type)) {
|
||||||
code += prefix + "):string|null\n";
|
code += prefix + "):string|null\n";
|
||||||
code += prefix + "optionalEncoding:flatbuffers.Encoding" +
|
code += prefix + "optionalEncoding:flatbuffers.Encoding" +
|
||||||
"):" + GenTypeName(field.value.type, false, true) + "\n";
|
"):" + GenTypeName(field.value.type, false, true) + "\n";
|
||||||
@@ -1449,7 +1448,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
} else {
|
} else {
|
||||||
code += object_name + ".prototype." + MakeCamel(field.name, false);
|
code += object_name + ".prototype." + MakeCamel(field.name, false);
|
||||||
code += " = function(";
|
code += " = function(";
|
||||||
if (field.value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(field.value.type)) {
|
||||||
code += "optionalEncoding";
|
code += "optionalEncoding";
|
||||||
}
|
}
|
||||||
code += ") {\n";
|
code += ") {\n";
|
||||||
@@ -1463,7 +1462,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
";\n";
|
";\n";
|
||||||
} else {
|
} else {
|
||||||
std::string index = "this.bb_pos + offset";
|
std::string index = "this.bb_pos + offset";
|
||||||
if (field.value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(field.value.type)) {
|
||||||
index += ", optionalEncoding";
|
index += ", optionalEncoding";
|
||||||
}
|
}
|
||||||
code += offset_prefix +
|
code += offset_prefix +
|
||||||
@@ -1569,7 +1568,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
if (!parser_.opts.generate_all) {
|
if (!parser_.opts.generate_all) {
|
||||||
imported_files.insert(vectortype.struct_def->file);
|
imported_files.insert(vectortype.struct_def->file);
|
||||||
}
|
}
|
||||||
} else if (vectortype.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(vectortype)) {
|
||||||
code += prefix + "):string\n";
|
code += prefix + "):string\n";
|
||||||
code += prefix + ",optionalEncoding:flatbuffers.Encoding" +
|
code += prefix + ",optionalEncoding:flatbuffers.Encoding" +
|
||||||
"):" + vectortypename + "\n";
|
"):" + vectortypename + "\n";
|
||||||
@@ -1588,7 +1587,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
code += " = function(index";
|
code += " = function(index";
|
||||||
if (vectortype.base_type == BASE_TYPE_STRUCT || is_union) {
|
if (vectortype.base_type == BASE_TYPE_STRUCT || is_union) {
|
||||||
code += ", obj";
|
code += ", obj";
|
||||||
} else if (vectortype.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(vectortype)) {
|
||||||
code += ", optionalEncoding";
|
code += ", optionalEncoding";
|
||||||
}
|
}
|
||||||
code += ") {\n";
|
code += ") {\n";
|
||||||
@@ -1605,7 +1604,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
} else {
|
} else {
|
||||||
if (is_union) {
|
if (is_union) {
|
||||||
index = "obj, " + index;
|
index = "obj, " + index;
|
||||||
} else if (vectortype.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(vectortype)) {
|
||||||
index += ", optionalEncoding";
|
index += ", optionalEncoding";
|
||||||
}
|
}
|
||||||
code += offset_prefix + GenGetter(vectortype, "(" + index + ")");
|
code += offset_prefix + GenGetter(vectortype, "(" + index + ")");
|
||||||
@@ -1732,7 +1731,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Emit vector helpers
|
// Emit vector helpers
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
// Emit a length helper
|
// Emit a length helper
|
||||||
GenDocComment(code_ptr,
|
GenDocComment(code_ptr,
|
||||||
GenTypeAnnotation(kReturns, "number", "", false));
|
GenTypeAnnotation(kReturns, "number", "", false));
|
||||||
@@ -1884,7 +1883,7 @@ class JsTsGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
code += ");\n};\n\n";
|
code += ");\n};\n\n";
|
||||||
|
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
auto vector_type = field.value.type.VectorType();
|
auto vector_type = field.value.type.VectorType();
|
||||||
auto alignment = InlineAlignment(vector_type);
|
auto alignment = InlineAlignment(vector_type);
|
||||||
auto elem_size = InlineSize(vector_type);
|
auto elem_size = InlineSize(vector_type);
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ std::string GenType(BaseType type) {
|
|||||||
std::string GenBaseType(const Type &type) {
|
std::string GenBaseType(const Type &type) {
|
||||||
if (type.struct_def != nullptr) { return GenTypeRef(type.struct_def); }
|
if (type.struct_def != nullptr) { return GenTypeRef(type.struct_def); }
|
||||||
if (type.enum_def != nullptr) { return GenTypeRef(type.enum_def); }
|
if (type.enum_def != nullptr) { return GenTypeRef(type.enum_def); }
|
||||||
if (type.base_type == BASE_TYPE_ARRAY || type.base_type == BASE_TYPE_VECTOR) {
|
if (IsArray(type) || IsVector(type)) {
|
||||||
return "\"type\" : \"array\", \"items\" : {" + GenType(type.element) + "}";
|
return "\"type\" : \"array\", \"items\" : {" + GenType(type.element) + "}";
|
||||||
}
|
}
|
||||||
return GenType(type.base_type);
|
return GenType(type.base_type);
|
||||||
@@ -206,7 +206,7 @@ class JsonSchemaGenerator : public BaseGenerator {
|
|||||||
std::string arrayInfo = "";
|
std::string arrayInfo = "";
|
||||||
if (IsArray(property->value.type)) {
|
if (IsArray(property->value.type)) {
|
||||||
arrayInfo = "," + NewLine() + Indent(8) + "\"minItems\": " +
|
arrayInfo = "," + NewLine() + Indent(8) + "\"minItems\": " +
|
||||||
NumToString(property->value.type.fixed_length) +
|
NumToString(property->value.type.fixed_length) +
|
||||||
"," + NewLine() + Indent(8) + "\"maxItems\": " +
|
"," + NewLine() + Indent(8) + "\"maxItems\": " +
|
||||||
NumToString(property->value.type.fixed_length);
|
NumToString(property->value.type.fixed_length);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -513,7 +513,7 @@ class KotlinGenerator : public BaseGenerator {
|
|||||||
if (field.key) key_field = &field;
|
if (field.key) key_field = &field;
|
||||||
GenerateAddField(NumToString(field_pos), field, writer, options);
|
GenerateAddField(NumToString(field_pos), field, writer, options);
|
||||||
|
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
auto vector_type = field.value.type.VectorType();
|
auto vector_type = field.value.type.VectorType();
|
||||||
if (!IsStruct(vector_type)) {
|
if (!IsStruct(vector_type)) {
|
||||||
GenerateCreateVectorField(field, writer, options);
|
GenerateCreateVectorField(field, writer, options);
|
||||||
@@ -571,7 +571,7 @@ class KotlinGenerator : public BaseGenerator {
|
|||||||
writer +=
|
writer +=
|
||||||
"val tableOffset = __indirect(vector"
|
"val tableOffset = __indirect(vector"
|
||||||
"Location + 4 * (start + middle), bb)";
|
"Location + 4 * (start + middle), bb)";
|
||||||
if (key_field->value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(key_field->value.type)) {
|
||||||
writer += "val comp = compareStrings(\\";
|
writer += "val comp = compareStrings(\\";
|
||||||
writer += GenOffsetGetter(key_field) + "\\";
|
writer += GenOffsetGetter(key_field) + "\\";
|
||||||
writer += ", byteKey, bb)";
|
writer += ", byteKey, bb)";
|
||||||
@@ -1192,7 +1192,7 @@ class KotlinGenerator : public BaseGenerator {
|
|||||||
GenerateOverrideFun(
|
GenerateOverrideFun(
|
||||||
writer, "keysCompare", "o1: Int, o2: Int, _bb: ByteBuffer", "Int",
|
writer, "keysCompare", "o1: Int, o2: Int, _bb: ByteBuffer", "Int",
|
||||||
[&]() {
|
[&]() {
|
||||||
if (key_field->value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(key_field->value.type)) {
|
||||||
writer.SetValue("offset", NumToString(key_field->value.offset));
|
writer.SetValue("offset", NumToString(key_field->value.offset));
|
||||||
writer +=
|
writer +=
|
||||||
" return compareStrings(__offset({{offset}}, o1, "
|
" return compareStrings(__offset({{offset}}, o1, "
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ class LobsterGenerator : public BaseGenerator {
|
|||||||
auto bits = NumToString(SizeOf(type.base_type) * 8);
|
auto bits = NumToString(SizeOf(type.base_type) * 8);
|
||||||
if (IsInteger(type.base_type)) return "int" + bits;
|
if (IsInteger(type.base_type)) return "int" + bits;
|
||||||
if (IsFloat(type.base_type)) return "float" + bits;
|
if (IsFloat(type.base_type)) return "float" + bits;
|
||||||
if (type.base_type == BASE_TYPE_STRING) return "string";
|
if (IsString(type)) return "string";
|
||||||
if (type.base_type == BASE_TYPE_STRUCT) return "table";
|
if (type.base_type == BASE_TYPE_STRUCT) return "table";
|
||||||
return "none";
|
return "none";
|
||||||
}
|
}
|
||||||
@@ -152,7 +152,7 @@ class LobsterGenerator : public BaseGenerator {
|
|||||||
code += NamespacedName(*field.value.type.struct_def) + " { buf_, " +
|
code += NamespacedName(*field.value.type.struct_def) + " { buf_, " +
|
||||||
start + " }\n";
|
start + " }\n";
|
||||||
} else {
|
} else {
|
||||||
if (vectortype.base_type == BASE_TYPE_STRING)
|
if (IsString(vectortype))
|
||||||
code += "buf_.flatbuffers_string";
|
code += "buf_.flatbuffers_string";
|
||||||
else
|
else
|
||||||
code += "buf_.read_" + GenTypeName(vectortype) + "_le";
|
code += "buf_.read_" + GenTypeName(vectortype) + "_le";
|
||||||
@@ -176,7 +176,7 @@ class LobsterGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
default: FLATBUFFERS_ASSERT(0);
|
default: FLATBUFFERS_ASSERT(0);
|
||||||
}
|
}
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
code += def +
|
code += def +
|
||||||
"_length():\n return "
|
"_length():\n return "
|
||||||
"buf_.flatbuffers_field_vector_len(pos_, " +
|
"buf_.flatbuffers_field_vector_len(pos_, " +
|
||||||
@@ -210,7 +210,7 @@ class LobsterGenerator : public BaseGenerator {
|
|||||||
it != struct_def.fields.vec.end(); ++it) {
|
it != struct_def.fields.vec.end(); ++it) {
|
||||||
auto &field = **it;
|
auto &field = **it;
|
||||||
if (field.deprecated) continue;
|
if (field.deprecated) continue;
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
code += "def " + NormalizedName(struct_def) + "Start" +
|
code += "def " + NormalizedName(struct_def) + "Start" +
|
||||||
MakeCamel(NormalizedName(field)) +
|
MakeCamel(NormalizedName(field)) +
|
||||||
"Vector(b_:flatbuffers_builder, n_:int):\n b_.StartVector(";
|
"Vector(b_:flatbuffers_builder, n_:int):\n b_.StartVector(";
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ class LuaGenerator : public BaseGenerator {
|
|||||||
code += "a + ((j-1) * ";
|
code += "a + ((j-1) * ";
|
||||||
code += NumToString(InlineSize(vectortype)) + "))\n";
|
code += NumToString(InlineSize(vectortype)) + "))\n";
|
||||||
code += std::string(Indent) + End;
|
code += std::string(Indent) + End;
|
||||||
if (vectortype.base_type == BASE_TYPE_STRING) {
|
if (IsString(vectortype)) {
|
||||||
code += std::string(Indent) + "return ''\n";
|
code += std::string(Indent) + "return ''\n";
|
||||||
} else {
|
} else {
|
||||||
code += std::string(Indent) + "return 0\n";
|
code += std::string(Indent) + "return 0\n";
|
||||||
@@ -502,7 +502,7 @@ class LuaGenerator : public BaseGenerator {
|
|||||||
default: FLATBUFFERS_ASSERT(0);
|
default: FLATBUFFERS_ASSERT(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
GetVectorLen(struct_def, field, code_ptr);
|
GetVectorLen(struct_def, field, code_ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -518,7 +518,7 @@ class LuaGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
auto offset = it - struct_def.fields.vec.begin();
|
auto offset = it - struct_def.fields.vec.begin();
|
||||||
BuildFieldOfTable(struct_def, field, offset, code_ptr);
|
BuildFieldOfTable(struct_def, field, offset, code_ptr);
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
BuildVectorOfTable(struct_def, field, code_ptr);
|
BuildVectorOfTable(struct_def, field, code_ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -401,7 +401,7 @@ class PhpGenerator : public BaseGenerator {
|
|||||||
code += Indent + Indent + "$o = $this->__offset(" +
|
code += Indent + Indent + "$o = $this->__offset(" +
|
||||||
NumToString(field.value.offset) + ");\n";
|
NumToString(field.value.offset) + ");\n";
|
||||||
|
|
||||||
if (field.value.type.VectorType().base_type == BASE_TYPE_STRING) {
|
if (IsString(field.value.type.VectorType())) {
|
||||||
code += Indent + Indent;
|
code += Indent + Indent;
|
||||||
code += "return $o != 0 ? $this->__string($this->__vector($o) + $j * ";
|
code += "return $o != 0 ? $this->__string($this->__vector($o) + $j * ";
|
||||||
code += NumToString(InlineSize(vectortype)) + ") : ";
|
code += NumToString(InlineSize(vectortype)) + ") : ";
|
||||||
@@ -705,7 +705,7 @@ class PhpGenerator : public BaseGenerator {
|
|||||||
default: FLATBUFFERS_ASSERT(0);
|
default: FLATBUFFERS_ASSERT(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
GetVectorLen(field, code_ptr);
|
GetVectorLen(field, code_ptr);
|
||||||
if (field.value.type.element == BASE_TYPE_UCHAR) {
|
if (field.value.type.element == BASE_TYPE_UCHAR) {
|
||||||
GetUByte(field, code_ptr);
|
GetUByte(field, code_ptr);
|
||||||
@@ -735,7 +735,7 @@ class PhpGenerator : public BaseGenerator {
|
|||||||
} else {
|
} else {
|
||||||
BuildFieldOfTable(field, offset, code_ptr);
|
BuildFieldOfTable(field, offset, code_ptr);
|
||||||
}
|
}
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
BuildVectorOfTable(field, code_ptr);
|
BuildVectorOfTable(field, code_ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -370,7 +370,7 @@ class PythonGenerator : public BaseGenerator {
|
|||||||
code += "return " + GenGetter(field.value.type);
|
code += "return " + GenGetter(field.value.type);
|
||||||
code += "a + flatbuffers.number_types.UOffsetTFlags.py_type(j * ";
|
code += "a + flatbuffers.number_types.UOffsetTFlags.py_type(j * ";
|
||||||
code += NumToString(InlineSize(vectortype)) + "))\n";
|
code += NumToString(InlineSize(vectortype)) + "))\n";
|
||||||
if (vectortype.base_type == BASE_TYPE_STRING) {
|
if (IsString(vectortype)) {
|
||||||
code += Indent + Indent + "return \"\"\n";
|
code += Indent + Indent + "return \"\"\n";
|
||||||
} else {
|
} else {
|
||||||
code += Indent + Indent + "return 0\n";
|
code += Indent + Indent + "return 0\n";
|
||||||
@@ -400,7 +400,7 @@ class PythonGenerator : public BaseGenerator {
|
|||||||
code += MakeCamel(GenTypeGet(field.value.type));
|
code += MakeCamel(GenTypeGet(field.value.type));
|
||||||
code += "Flags, o)\n";
|
code += "Flags, o)\n";
|
||||||
|
|
||||||
if (vectortype.base_type == BASE_TYPE_STRING) {
|
if (IsString(vectortype)) {
|
||||||
code += Indent + Indent + "return \"\"\n";
|
code += Indent + Indent + "return \"\"\n";
|
||||||
} else {
|
} else {
|
||||||
code += Indent + Indent + "return 0\n";
|
code += Indent + Indent + "return 0\n";
|
||||||
@@ -614,8 +614,7 @@ class PythonGenerator : public BaseGenerator {
|
|||||||
default: FLATBUFFERS_ASSERT(0);
|
default: FLATBUFFERS_ASSERT(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR ||
|
if (IsVector(field.value.type) || IsArray(field.value.type)) {
|
||||||
field.value.type.base_type == BASE_TYPE_ARRAY) {
|
|
||||||
GetVectorLen(struct_def, field, code_ptr);
|
GetVectorLen(struct_def, field, code_ptr);
|
||||||
GetVectorIsNone(struct_def, field, code_ptr);
|
GetVectorIsNone(struct_def, field, code_ptr);
|
||||||
}
|
}
|
||||||
@@ -642,7 +641,7 @@ class PythonGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
auto offset = it - struct_def.fields.vec.begin();
|
auto offset = it - struct_def.fields.vec.begin();
|
||||||
BuildFieldOfTable(struct_def, field, offset, code_ptr);
|
BuildFieldOfTable(struct_def, field, offset, code_ptr);
|
||||||
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
|
if (IsVector(field.value.type)) {
|
||||||
BuildVectorOfTable(struct_def, field, code_ptr);
|
BuildVectorOfTable(struct_def, field, code_ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1265,7 +1264,7 @@ class PythonGenerator : public BaseGenerator {
|
|||||||
// each string element. And this generated code, needs to be
|
// each string element. And this generated code, needs to be
|
||||||
// placed ahead of code_prefix.
|
// placed ahead of code_prefix.
|
||||||
auto vectortype = field.value.type.VectorType();
|
auto vectortype = field.value.type.VectorType();
|
||||||
if (vectortype.base_type == BASE_TYPE_STRING) {
|
if (IsString(vectortype)) {
|
||||||
code_prefix += GenIndents(3) + MakeLowerCamel(field) + "list = []";
|
code_prefix += GenIndents(3) + MakeLowerCamel(field) + "list = []";
|
||||||
code_prefix += GenIndents(3) + "for i in range(len(self." +
|
code_prefix += GenIndents(3) + "for i in range(len(self." +
|
||||||
field_instance_name + ")):";
|
field_instance_name + ")):";
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ enum FullType {
|
|||||||
FullType GetFullType(const Type &type) {
|
FullType GetFullType(const Type &type) {
|
||||||
// N.B. The order of these conditionals matters for some types.
|
// N.B. The order of these conditionals matters for some types.
|
||||||
|
|
||||||
if (type.base_type == BASE_TYPE_STRING) {
|
if (IsString(type)) {
|
||||||
return ftString;
|
return ftString;
|
||||||
} else if (type.base_type == BASE_TYPE_STRUCT) {
|
} else if (type.base_type == BASE_TYPE_STRUCT) {
|
||||||
if (type.struct_def->fixed) {
|
if (type.struct_def->fixed) {
|
||||||
@@ -95,7 +95,7 @@ FullType GetFullType(const Type &type) {
|
|||||||
} else {
|
} else {
|
||||||
return ftTable;
|
return ftTable;
|
||||||
}
|
}
|
||||||
} else if (type.base_type == BASE_TYPE_VECTOR) {
|
} else if (IsVector(type)) {
|
||||||
switch (GetFullType(type.VectorType())) {
|
switch (GetFullType(type.VectorType())) {
|
||||||
case ftInteger: {
|
case ftInteger: {
|
||||||
return ftVectorOfInteger;
|
return ftVectorOfInteger;
|
||||||
|
|||||||
@@ -508,8 +508,8 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
code_.SetValue("OFFSET", name);
|
code_.SetValue("OFFSET", name);
|
||||||
code_.SetValue("CONSTANT", field.value.constant);
|
code_.SetValue("CONSTANT", field.value.constant);
|
||||||
std::string check_if_vector =
|
std::string check_if_vector =
|
||||||
(field.value.type.base_type == BASE_TYPE_VECTOR ||
|
(IsVector(field.value.type) ||
|
||||||
field.value.type.base_type == BASE_TYPE_ARRAY)
|
IsArray(field.value.type))
|
||||||
? "VectorOf("
|
? "VectorOf("
|
||||||
: "(";
|
: "(";
|
||||||
auto body = "add" + check_if_vector + name + ": ";
|
auto body = "add" + check_if_vector + name + ": ";
|
||||||
@@ -565,12 +565,12 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto offset_type = field.value.type.base_type == BASE_TYPE_STRING
|
auto offset_type = IsString(field.value.type)
|
||||||
? "Offset<String>"
|
? "Offset<String>"
|
||||||
: "Offset<UOffset>";
|
: "Offset<UOffset>";
|
||||||
auto camel_case_name =
|
auto camel_case_name =
|
||||||
(field.value.type.base_type == BASE_TYPE_VECTOR ||
|
(IsVector(field.value.type) ||
|
||||||
field.value.type.base_type == BASE_TYPE_ARRAY
|
IsArray(field.value.type)
|
||||||
? "vectorOf"
|
? "vectorOf"
|
||||||
: "offsetOf") +
|
: "offsetOf") +
|
||||||
MakeCamel(name, true);
|
MakeCamel(name, true);
|
||||||
@@ -586,8 +586,8 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
|
|
||||||
if ((vectortype.base_type == BASE_TYPE_STRUCT &&
|
if ((vectortype.base_type == BASE_TYPE_STRUCT &&
|
||||||
field.value.type.struct_def->fixed) &&
|
field.value.type.struct_def->fixed) &&
|
||||||
(field.value.type.base_type == BASE_TYPE_VECTOR ||
|
(IsVector(field.value.type) ||
|
||||||
field.value.type.base_type == BASE_TYPE_ARRAY)) {
|
IsArray(field.value.type))) {
|
||||||
auto field_name = NameWrappedInNameSpace(*vectortype.struct_def);
|
auto field_name = NameWrappedInNameSpace(*vectortype.struct_def);
|
||||||
code_ += "public static func startVectorOf" + MakeCamel(name, true) +
|
code_ += "public static func startVectorOf" + MakeCamel(name, true) +
|
||||||
"(_ size: Int, in builder: inout "
|
"(_ size: Int, in builder: inout "
|
||||||
@@ -738,7 +738,7 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vectortype.base_type == BASE_TYPE_STRING) {
|
if (IsString(vectortype)) {
|
||||||
code_ +=
|
code_ +=
|
||||||
"{{ACCESS}}.directString(at: {{ACCESS}}.vector(at: o) + "
|
"{{ACCESS}}.directString(at: {{ACCESS}}.vector(at: o) + "
|
||||||
"index * {{SIZE}}) }";
|
"index * {{SIZE}}) }";
|
||||||
@@ -915,8 +915,8 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
auto name = Name(field);
|
auto name = Name(field);
|
||||||
auto type = GenType(field.value.type);
|
auto type = GenType(field.value.type);
|
||||||
std::string check_if_vector =
|
std::string check_if_vector =
|
||||||
(field.value.type.base_type == BASE_TYPE_VECTOR ||
|
(IsVector(field.value.type) ||
|
||||||
field.value.type.base_type == BASE_TYPE_ARRAY)
|
IsArray(field.value.type))
|
||||||
? "VectorOf("
|
? "VectorOf("
|
||||||
: "(";
|
: "(";
|
||||||
std::string body = "add" + check_if_vector + name + ": ";
|
std::string body = "add" + check_if_vector + name + ": ";
|
||||||
@@ -1192,7 +1192,7 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
case BASE_TYPE_UTYPE: break;
|
case BASE_TYPE_UTYPE: break;
|
||||||
default: {
|
default: {
|
||||||
code_.SetValue("VALUETYPE", (vectortype.base_type == BASE_TYPE_STRING
|
code_.SetValue("VALUETYPE", (IsString(vectortype)
|
||||||
? "String?"
|
? "String?"
|
||||||
: GenType(vectortype)));
|
: GenType(vectortype)));
|
||||||
code_ += "{{ACCESS_TYPE}} var {{VALUENAME}}: [{{VALUETYPE}}]";
|
code_ += "{{ACCESS_TYPE}} var {{VALUENAME}}: [{{VALUETYPE}}]";
|
||||||
@@ -1224,7 +1224,7 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
auto type = GenType(field.union_type);
|
auto type = GenType(field.union_type);
|
||||||
|
|
||||||
if (field.union_type.base_type == BASE_TYPE_NONE ||
|
if (field.union_type.base_type == BASE_TYPE_NONE ||
|
||||||
field.union_type.base_type == BASE_TYPE_STRING) {
|
IsString(field.union_type)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
code_ += "case ." + ev_name + ":";
|
code_ += "case ." + ev_name + ":";
|
||||||
@@ -1254,7 +1254,7 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
auto field = **it;
|
auto field = **it;
|
||||||
auto ev_name = Name(field);
|
auto ev_name = Name(field);
|
||||||
if (field.union_type.base_type == BASE_TYPE_NONE ||
|
if (field.union_type.base_type == BASE_TYPE_NONE ||
|
||||||
field.union_type.base_type == BASE_TYPE_STRING) {
|
IsString(field.union_type)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
buffer_constructor.push_back(indentation + "case ." + ev_name + ":");
|
buffer_constructor.push_back(indentation + "case ." + ev_name + ":");
|
||||||
@@ -1291,7 +1291,7 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
"fbb: "
|
"fbb: "
|
||||||
"ByteBuffer) -> {{VALUENAME}}? {";
|
"ByteBuffer) -> {{VALUENAME}}? {";
|
||||||
Indent();
|
Indent();
|
||||||
if (key_field.value.type.base_type == BASE_TYPE_STRING)
|
if (IsString(key_field.value.type))
|
||||||
code_ += "let key = key.utf8.map { $0 }";
|
code_ += "let key = key.utf8.map { $0 }";
|
||||||
code_ += "var span = fbb.read(def: Int32.self, position: Int(vector - 4))";
|
code_ += "var span = fbb.read(def: Int32.self, position: Int(vector - 4))";
|
||||||
code_ += "var start: Int32 = 0";
|
code_ += "var start: Int32 = 0";
|
||||||
@@ -1300,7 +1300,7 @@ class SwiftGenerator : public BaseGenerator {
|
|||||||
code_ += "var middle = span / 2";
|
code_ += "var middle = span / 2";
|
||||||
code_ +=
|
code_ +=
|
||||||
"let tableOffset = Table.indirect(vector + 4 * (start + middle), fbb)";
|
"let tableOffset = Table.indirect(vector + 4 * (start + middle), fbb)";
|
||||||
if (key_field.value.type.base_type == BASE_TYPE_STRING) {
|
if (IsString(key_field.value.type)) {
|
||||||
code_ += "let comp = Table.compare(" + offset_reader + ", key, fbb: fbb)";
|
code_ += "let comp = Table.compare(" + offset_reader + ", key, fbb: fbb)";
|
||||||
} else {
|
} else {
|
||||||
code_ += "let comp = fbb.read(def: {{TYPE}}.self, position: Int(" +
|
code_ += "let comp = fbb.read(def: {{TYPE}}.self, position: Int(" +
|
||||||
|
|||||||
@@ -716,7 +716,7 @@ CheckedError Parser::ParseField(StructDef &struct_def) {
|
|||||||
// with a special suffix.
|
// with a special suffix.
|
||||||
ECHECK(AddField(struct_def, name + UnionTypeFieldSuffix(),
|
ECHECK(AddField(struct_def, name + UnionTypeFieldSuffix(),
|
||||||
type.enum_def->underlying_type, &typefield));
|
type.enum_def->underlying_type, &typefield));
|
||||||
} else if (type.base_type == BASE_TYPE_VECTOR &&
|
} else if (IsVector(type) &&
|
||||||
type.element == BASE_TYPE_UNION) {
|
type.element == BASE_TYPE_UNION) {
|
||||||
// Only cpp, js and ts supports the union vector feature so far.
|
// Only cpp, js and ts supports the union vector feature so far.
|
||||||
if (!SupportsAdvancedUnionFeatures()) {
|
if (!SupportsAdvancedUnionFeatures()) {
|
||||||
@@ -793,9 +793,8 @@ CheckedError Parser::ParseField(StructDef &struct_def) {
|
|||||||
// Default value of union and vector in NONE, NULL translated to "0".
|
// Default value of union and vector in NONE, NULL translated to "0".
|
||||||
FLATBUFFERS_ASSERT(IsInteger(type.base_type) ||
|
FLATBUFFERS_ASSERT(IsInteger(type.base_type) ||
|
||||||
(type.base_type == BASE_TYPE_UNION) ||
|
(type.base_type == BASE_TYPE_UNION) ||
|
||||||
(type.base_type == BASE_TYPE_VECTOR) ||
|
IsVector(type) || IsArray(type));
|
||||||
(type.base_type == BASE_TYPE_ARRAY));
|
if (IsVector(type)) {
|
||||||
if (type.base_type == BASE_TYPE_VECTOR) {
|
|
||||||
// Vector can't use initialization list.
|
// Vector can't use initialization list.
|
||||||
FLATBUFFERS_ASSERT(field->value.constant == "0");
|
FLATBUFFERS_ASSERT(field->value.constant == "0");
|
||||||
} else {
|
} else {
|
||||||
@@ -815,7 +814,7 @@ CheckedError Parser::ParseField(StructDef &struct_def) {
|
|||||||
field->deprecated = field->attributes.Lookup("deprecated") != nullptr;
|
field->deprecated = field->attributes.Lookup("deprecated") != nullptr;
|
||||||
auto hash_name = field->attributes.Lookup("hash");
|
auto hash_name = field->attributes.Lookup("hash");
|
||||||
if (hash_name) {
|
if (hash_name) {
|
||||||
switch ((type.base_type == BASE_TYPE_VECTOR) ? type.element
|
switch ((IsVector(type)) ? type.element
|
||||||
: type.base_type) {
|
: type.base_type) {
|
||||||
case BASE_TYPE_SHORT:
|
case BASE_TYPE_SHORT:
|
||||||
case BASE_TYPE_USHORT: {
|
case BASE_TYPE_USHORT: {
|
||||||
@@ -969,7 +968,7 @@ CheckedError Parser::ParseAnyValue(Value &val, FieldDef *field,
|
|||||||
auto &type = elem->second->value.type;
|
auto &type = elem->second->value.type;
|
||||||
if (type.enum_def == val.type.enum_def) {
|
if (type.enum_def == val.type.enum_def) {
|
||||||
if (inside_vector) {
|
if (inside_vector) {
|
||||||
if (type.base_type == BASE_TYPE_VECTOR &&
|
if (IsVector(type) &&
|
||||||
type.element == BASE_TYPE_UTYPE) {
|
type.element == BASE_TYPE_UTYPE) {
|
||||||
// Vector of union type field.
|
// Vector of union type field.
|
||||||
uoffset_t offset;
|
uoffset_t offset;
|
||||||
@@ -1037,7 +1036,7 @@ CheckedError Parser::ParseAnyValue(Value &val, FieldDef *field,
|
|||||||
builder_.ClearOffsets();
|
builder_.ClearOffsets();
|
||||||
val.constant = NumToString(builder_.GetSize());
|
val.constant = NumToString(builder_.GetSize());
|
||||||
}
|
}
|
||||||
} else if (enum_val->union_type.base_type == BASE_TYPE_STRING) {
|
} else if (IsString(enum_val->union_type)) {
|
||||||
ECHECK(ParseString(val, field->shared));
|
ECHECK(ParseString(val, field->shared));
|
||||||
} else {
|
} else {
|
||||||
FLATBUFFERS_ASSERT(false);
|
FLATBUFFERS_ASSERT(false);
|
||||||
@@ -2960,7 +2959,7 @@ CheckedError Parser::ParseRoot(const char *source, const char **include_paths,
|
|||||||
if (field.value.type.struct_def == &struct_def) {
|
if (field.value.type.struct_def == &struct_def) {
|
||||||
field.value.type.struct_def = nullptr;
|
field.value.type.struct_def = nullptr;
|
||||||
field.value.type.enum_def = enum_def;
|
field.value.type.enum_def = enum_def;
|
||||||
auto &bt = field.value.type.base_type == BASE_TYPE_VECTOR
|
auto &bt = IsVector(field.value.type)
|
||||||
? field.value.type.element
|
? field.value.type.element
|
||||||
: field.value.type.base_type;
|
: field.value.type.base_type;
|
||||||
FLATBUFFERS_ASSERT(bt == BASE_TYPE_STRUCT);
|
FLATBUFFERS_ASSERT(bt == BASE_TYPE_STRUCT);
|
||||||
|
|||||||
Reference in New Issue
Block a user