Add scalar type aliases for int8, uint8, ..., f32, f64 (#4400)

* Add type aliases

* Add generated code

* Rebase master
This commit is contained in:
MikkelFJ
2017-08-02 17:07:43 +02:00
committed by Wouter van Oortmerssen
parent 3282a84e30
commit f2b3705c2c
21 changed files with 2461 additions and 65 deletions

View File

@@ -32,6 +32,9 @@ struct StatT;
struct Monster;
struct MonsterT;
struct TypeAliases;
struct TypeAliasesT;
enum Color {
Color_Red = 1,
Color_Green = 2,
@@ -518,7 +521,7 @@ flatbuffers::Offset<Stat> CreateStat(flatbuffers::FlatBufferBuilder &_fbb, const
struct MonsterT : public flatbuffers::NativeTable {
typedef Monster TableType;
std::unique_ptr<Vec3> pos;
flatbuffers::unique_ptr<Vec3> pos;
int16_t mana;
int16_t hp;
std::string name;
@@ -527,10 +530,10 @@ struct MonsterT : public flatbuffers::NativeTable {
AnyUnion test;
std::vector<Test> test4;
std::vector<std::string> testarrayofstring;
std::vector<std::unique_ptr<MonsterT>> testarrayoftables;
std::unique_ptr<MonsterT> enemy;
std::vector<flatbuffers::unique_ptr<MonsterT>> testarrayoftables;
flatbuffers::unique_ptr<MonsterT> enemy;
std::vector<uint8_t> testnestedflatbuffer;
std::unique_ptr<StatT> testempty;
flatbuffers::unique_ptr<StatT> testempty;
bool testbool;
int32_t testhashs32_fnv1;
uint32_t testhashu32_fnv1;
@@ -1165,6 +1168,258 @@ inline flatbuffers::Offset<Monster> CreateMonsterDirect(
flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
struct TypeAliasesT : public flatbuffers::NativeTable {
typedef TypeAliases TableType;
int8_t i8;
uint8_t u8;
int16_t i16;
uint16_t u16;
int32_t i32;
uint32_t u32;
int64_t i64;
uint64_t u64;
float f32;
double f64;
std::vector<int8_t> v8;
std::vector<double> vf64;
TypeAliasesT()
: i8(0),
u8(0),
i16(0),
u16(0),
i32(0),
u32(0),
i64(0),
u64(0),
f32(0.0f),
f64(0.0) {
}
};
struct TypeAliases FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef TypeAliasesT NativeTableType;
enum {
VT_I8 = 4,
VT_U8 = 6,
VT_I16 = 8,
VT_U16 = 10,
VT_I32 = 12,
VT_U32 = 14,
VT_I64 = 16,
VT_U64 = 18,
VT_F32 = 20,
VT_F64 = 22,
VT_V8 = 24,
VT_VF64 = 26
};
int8_t i8() const {
return GetField<int8_t>(VT_I8, 0);
}
bool mutate_i8(int8_t _i8) {
return SetField<int8_t>(VT_I8, _i8, 0);
}
uint8_t u8() const {
return GetField<uint8_t>(VT_U8, 0);
}
bool mutate_u8(uint8_t _u8) {
return SetField<uint8_t>(VT_U8, _u8, 0);
}
int16_t i16() const {
return GetField<int16_t>(VT_I16, 0);
}
bool mutate_i16(int16_t _i16) {
return SetField<int16_t>(VT_I16, _i16, 0);
}
uint16_t u16() const {
return GetField<uint16_t>(VT_U16, 0);
}
bool mutate_u16(uint16_t _u16) {
return SetField<uint16_t>(VT_U16, _u16, 0);
}
int32_t i32() const {
return GetField<int32_t>(VT_I32, 0);
}
bool mutate_i32(int32_t _i32) {
return SetField<int32_t>(VT_I32, _i32, 0);
}
uint32_t u32() const {
return GetField<uint32_t>(VT_U32, 0);
}
bool mutate_u32(uint32_t _u32) {
return SetField<uint32_t>(VT_U32, _u32, 0);
}
int64_t i64() const {
return GetField<int64_t>(VT_I64, 0);
}
bool mutate_i64(int64_t _i64) {
return SetField<int64_t>(VT_I64, _i64, 0);
}
uint64_t u64() const {
return GetField<uint64_t>(VT_U64, 0);
}
bool mutate_u64(uint64_t _u64) {
return SetField<uint64_t>(VT_U64, _u64, 0);
}
float f32() const {
return GetField<float>(VT_F32, 0.0f);
}
bool mutate_f32(float _f32) {
return SetField<float>(VT_F32, _f32, 0.0f);
}
double f64() const {
return GetField<double>(VT_F64, 0.0);
}
bool mutate_f64(double _f64) {
return SetField<double>(VT_F64, _f64, 0.0);
}
const flatbuffers::Vector<int8_t> *v8() const {
return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_V8);
}
flatbuffers::Vector<int8_t> *mutable_v8() {
return GetPointer<flatbuffers::Vector<int8_t> *>(VT_V8);
}
const flatbuffers::Vector<double> *vf64() const {
return GetPointer<const flatbuffers::Vector<double> *>(VT_VF64);
}
flatbuffers::Vector<double> *mutable_vf64() {
return GetPointer<flatbuffers::Vector<double> *>(VT_VF64);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<int8_t>(verifier, VT_I8) &&
VerifyField<uint8_t>(verifier, VT_U8) &&
VerifyField<int16_t>(verifier, VT_I16) &&
VerifyField<uint16_t>(verifier, VT_U16) &&
VerifyField<int32_t>(verifier, VT_I32) &&
VerifyField<uint32_t>(verifier, VT_U32) &&
VerifyField<int64_t>(verifier, VT_I64) &&
VerifyField<uint64_t>(verifier, VT_U64) &&
VerifyField<float>(verifier, VT_F32) &&
VerifyField<double>(verifier, VT_F64) &&
VerifyOffset(verifier, VT_V8) &&
verifier.Verify(v8()) &&
VerifyOffset(verifier, VT_VF64) &&
verifier.Verify(vf64()) &&
verifier.EndTable();
}
TypeAliasesT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
static flatbuffers::Offset<TypeAliases> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
};
struct TypeAliasesBuilder {
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_i8(int8_t i8) {
fbb_.AddElement<int8_t>(TypeAliases::VT_I8, i8, 0);
}
void add_u8(uint8_t u8) {
fbb_.AddElement<uint8_t>(TypeAliases::VT_U8, u8, 0);
}
void add_i16(int16_t i16) {
fbb_.AddElement<int16_t>(TypeAliases::VT_I16, i16, 0);
}
void add_u16(uint16_t u16) {
fbb_.AddElement<uint16_t>(TypeAliases::VT_U16, u16, 0);
}
void add_i32(int32_t i32) {
fbb_.AddElement<int32_t>(TypeAliases::VT_I32, i32, 0);
}
void add_u32(uint32_t u32) {
fbb_.AddElement<uint32_t>(TypeAliases::VT_U32, u32, 0);
}
void add_i64(int64_t i64) {
fbb_.AddElement<int64_t>(TypeAliases::VT_I64, i64, 0);
}
void add_u64(uint64_t u64) {
fbb_.AddElement<uint64_t>(TypeAliases::VT_U64, u64, 0);
}
void add_f32(float f32) {
fbb_.AddElement<float>(TypeAliases::VT_F32, f32, 0.0f);
}
void add_f64(double f64) {
fbb_.AddElement<double>(TypeAliases::VT_F64, f64, 0.0);
}
void add_v8(flatbuffers::Offset<flatbuffers::Vector<int8_t>> v8) {
fbb_.AddOffset(TypeAliases::VT_V8, v8);
}
void add_vf64(flatbuffers::Offset<flatbuffers::Vector<double>> vf64) {
fbb_.AddOffset(TypeAliases::VT_VF64, vf64);
}
TypeAliasesBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
TypeAliasesBuilder &operator=(const TypeAliasesBuilder &);
flatbuffers::Offset<TypeAliases> Finish() {
const auto end = fbb_.EndTable(start_, 12);
auto o = flatbuffers::Offset<TypeAliases>(end);
return o;
}
};
inline flatbuffers::Offset<TypeAliases> CreateTypeAliases(
flatbuffers::FlatBufferBuilder &_fbb,
int8_t i8 = 0,
uint8_t u8 = 0,
int16_t i16 = 0,
uint16_t u16 = 0,
int32_t i32 = 0,
uint32_t u32 = 0,
int64_t i64 = 0,
uint64_t u64 = 0,
float f32 = 0.0f,
double f64 = 0.0,
flatbuffers::Offset<flatbuffers::Vector<int8_t>> v8 = 0,
flatbuffers::Offset<flatbuffers::Vector<double>> vf64 = 0) {
TypeAliasesBuilder builder_(_fbb);
builder_.add_f64(f64);
builder_.add_u64(u64);
builder_.add_i64(i64);
builder_.add_vf64(vf64);
builder_.add_v8(v8);
builder_.add_f32(f32);
builder_.add_u32(u32);
builder_.add_i32(i32);
builder_.add_u16(u16);
builder_.add_i16(i16);
builder_.add_u8(u8);
builder_.add_i8(i8);
return builder_.Finish();
}
inline flatbuffers::Offset<TypeAliases> CreateTypeAliasesDirect(
flatbuffers::FlatBufferBuilder &_fbb,
int8_t i8 = 0,
uint8_t u8 = 0,
int16_t i16 = 0,
uint16_t u16 = 0,
int32_t i32 = 0,
uint32_t u32 = 0,
int64_t i64 = 0,
uint64_t u64 = 0,
float f32 = 0.0f,
double f64 = 0.0,
const std::vector<int8_t> *v8 = nullptr,
const std::vector<double> *vf64 = nullptr) {
return MyGame::Example::CreateTypeAliases(
_fbb,
i8,
u8,
i16,
u16,
i32,
u32,
i64,
u64,
f32,
f64,
v8 ? _fbb.CreateVector<int8_t>(*v8) : 0,
vf64 ? _fbb.CreateVector<double>(*vf64) : 0);
}
flatbuffers::Offset<TypeAliases> CreateTypeAliases(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
} // namespace Example
namespace Example2 {
@@ -1263,7 +1518,7 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv
inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const {
(void)_o;
(void)_resolver;
{ auto _e = pos(); if (_e) _o->pos = std::unique_ptr<Vec3>(new Vec3(*_e)); };
{ auto _e = pos(); if (_e) _o->pos = flatbuffers::unique_ptr<Vec3>(new Vec3(*_e)); };
{ auto _e = mana(); _o->mana = _e; };
{ auto _e = hp(); _o->hp = _e; };
{ auto _e = name(); if (_e) _o->name = _e->str(); };
@@ -1273,10 +1528,10 @@ inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function
{ auto _e = test(); if (_e) _o->test.value = AnyUnion::UnPack(_e, test_type(), _resolver); };
{ auto _e = test4(); if (_e) { _o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } };
{ auto _e = testarrayofstring(); if (_e) { _o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } };
{ auto _e = testarrayoftables(); if (_e) { _o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayoftables[_i] = std::unique_ptr<MonsterT>(_e->Get(_i)->UnPack(_resolver)); } } };
{ auto _e = enemy(); if (_e) _o->enemy = std::unique_ptr<MonsterT>(_e->UnPack(_resolver)); };
{ auto _e = testarrayoftables(); if (_e) { _o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayoftables[_i] = flatbuffers::unique_ptr<MonsterT>(_e->Get(_i)->UnPack(_resolver)); } } };
{ auto _e = enemy(); if (_e) _o->enemy = flatbuffers::unique_ptr<MonsterT>(_e->UnPack(_resolver)); };
{ auto _e = testnestedflatbuffer(); if (_e) { _o->testnestedflatbuffer.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testnestedflatbuffer[_i] = _e->Get(_i); } } };
{ auto _e = testempty(); if (_e) _o->testempty = std::unique_ptr<StatT>(_e->UnPack(_resolver)); };
{ auto _e = testempty(); if (_e) _o->testempty = flatbuffers::unique_ptr<StatT>(_e->UnPack(_resolver)); };
{ auto _e = testbool(); _o->testbool = _e; };
{ auto _e = testhashs32_fnv1(); _o->testhashs32_fnv1 = _e; };
{ auto _e = testhashu32_fnv1(); _o->testhashu32_fnv1 = _e; };
@@ -1376,6 +1631,65 @@ inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder
_vector_of_doubles);
}
inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
auto _o = new TypeAliasesT();
UnPackTo(_o, _resolver);
return _o;
}
inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver) const {
(void)_o;
(void)_resolver;
{ auto _e = i8(); _o->i8 = _e; };
{ auto _e = u8(); _o->u8 = _e; };
{ auto _e = i16(); _o->i16 = _e; };
{ auto _e = u16(); _o->u16 = _e; };
{ auto _e = i32(); _o->i32 = _e; };
{ auto _e = u32(); _o->u32 = _e; };
{ auto _e = i64(); _o->i64 = _e; };
{ auto _e = u64(); _o->u64 = _e; };
{ auto _e = f32(); _o->f32 = _e; };
{ auto _e = f64(); _o->f64 = _e; };
{ auto _e = v8(); if (_e) { _o->v8.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->v8[_i] = _e->Get(_i); } } };
{ auto _e = vf64(); if (_e) { _o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } };
}
inline flatbuffers::Offset<TypeAliases> TypeAliases::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
return CreateTypeAliases(_fbb, _o, _rehasher);
}
inline flatbuffers::Offset<TypeAliases> CreateTypeAliases(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
(void)_rehasher;
(void)_o;
struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TypeAliasesT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
auto _i8 = _o->i8;
auto _u8 = _o->u8;
auto _i16 = _o->i16;
auto _u16 = _o->u16;
auto _i32 = _o->i32;
auto _u32 = _o->u32;
auto _i64 = _o->i64;
auto _u64 = _o->u64;
auto _f32 = _o->f32;
auto _f64 = _o->f64;
auto _v8 = _o->v8.size() ? _fbb.CreateVector(_o->v8) : 0;
auto _vf64 = _o->vf64.size() ? _fbb.CreateVector(_o->vf64) : 0;
return MyGame::Example::CreateTypeAliases(
_fbb,
_i8,
_u8,
_i16,
_u16,
_i32,
_u32,
_i64,
_u64,
_f32,
_f64,
_v8,
_vf64);
}
inline bool VerifyAny(flatbuffers::Verifier &verifier, const void *obj, Any type) {
switch (type) {
case Any_NONE: {
@@ -1518,10 +1832,10 @@ inline void FinishMonsterBuffer(
fbb.Finish(root, MonsterIdentifier());
}
inline std::unique_ptr<MonsterT> UnPackMonster(
inline flatbuffers::unique_ptr<MonsterT> UnPackMonster(
const void *buf,
const flatbuffers::resolver_function_t *res = nullptr) {
return std::unique_ptr<MonsterT>(GetMonster(buf)->UnPack(res));
return flatbuffers::unique_ptr<MonsterT>(GetMonster(buf)->UnPack(res));
}
} // namespace Example