mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-13 00:04:29 +00:00
Fix issues with uint64 enums (#5265)
* Fix issues with uint64 enums - hide the implementation of enums from code generators - fix uint64 the issue in the cpp-generator - fix #5108 - new tests - enums with bit_flags attribute should be unsigned * Refine objectives of EnumDef's FindByValue and ReverseLookup methods - move EnumDef::ReverseLookup implementation to idl_parser.cpp - fix typos * Make the IsUInt64 method private
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
6cc30b3272
commit
b8ef8c1521
@@ -51,10 +51,10 @@ bool Print(T val, Type type, int /*indent*/, Type * /*union_type*/,
|
||||
const IDLOptions &opts, std::string *_text) {
|
||||
std::string &text = *_text;
|
||||
if (type.enum_def && opts.output_enum_identifiers) {
|
||||
auto enum_val = type.enum_def->ReverseLookup(static_cast<int64_t>(val));
|
||||
if (enum_val) {
|
||||
auto ev = type.enum_def->ReverseLookup(static_cast<int64_t>(val));
|
||||
if (ev) {
|
||||
text += "\"";
|
||||
text += enum_val->name;
|
||||
text += ev->name;
|
||||
text += "\"";
|
||||
return true;
|
||||
}
|
||||
@@ -251,7 +251,7 @@ static bool GenStruct(const StructDef &struct_def, const Table *table,
|
||||
}
|
||||
if (fd.value.type.base_type == BASE_TYPE_UTYPE) {
|
||||
auto enum_val = fd.value.type.enum_def->ReverseLookup(
|
||||
table->GetField<uint8_t>(fd.value.offset, 0));
|
||||
table->GetField<uint8_t>(fd.value.offset, 0), true);
|
||||
union_type = enum_val ? &enum_val->union_type : nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user