// automatically generated by the FlatBuffers compiler, do not modify #ifndef FLATBUFFERS_GENERATED_SCHEMA_ORG_APACHE_ARROW_FLATBUF_H_ #define FLATBUFFERS_GENERATED_SCHEMA_ORG_APACHE_ARROW_FLATBUF_H_ #include "flatbuffers/flatbuffers.h" namespace org { namespace apache { namespace arrow { namespace flatbuf { struct Null; struct NullBuilder; struct Struct_; struct Struct_Builder; struct List; struct ListBuilder; struct LargeList; struct LargeListBuilder; struct FixedSizeList; struct FixedSizeListBuilder; struct Map; struct MapBuilder; struct Union; struct UnionBuilder; struct Int; struct IntBuilder; struct FloatingPoint; struct FloatingPointBuilder; struct Utf8; struct Utf8Builder; struct Binary; struct BinaryBuilder; struct LargeUtf8; struct LargeUtf8Builder; struct LargeBinary; struct LargeBinaryBuilder; struct FixedSizeBinary; struct FixedSizeBinaryBuilder; struct Bool; struct BoolBuilder; struct Decimal; struct DecimalBuilder; struct Date; struct DateBuilder; struct Time; struct TimeBuilder; struct Timestamp; struct TimestampBuilder; struct Interval; struct IntervalBuilder; struct Duration; struct DurationBuilder; struct KeyValue; struct KeyValueBuilder; struct DictionaryEncoding; struct DictionaryEncodingBuilder; struct Field; struct FieldBuilder; struct Buffer; struct Schema; struct SchemaBuilder; enum class MetadataVersion : int16_t { /// 0.1.0 (October 2016). V1 = 0, /// 0.2.0 (February 2017). Non-backwards compatible with V1. V2 = 1, /// 0.3.0 -> 0.7.1 (May - December 2017). Non-backwards compatible with V2. V3 = 2, /// >= 0.8.0 (December 2017). Non-backwards compatible with V3. V4 = 3, /// >= 1.0.0 (July 2020. Backwards compatible with V4 (V5 readers can read V4 /// metadata and IPC messages). Implementations are recommended to provide a /// V4 compatibility mode with V5 format changes disabled. /// /// Incompatible changes between V4 and V5: /// - Union buffer layout has changed. In V5, Unions don't have a validity /// bitmap buffer. V5 = 4, MIN = V1, MAX = V5 }; inline const MetadataVersion (&EnumValuesMetadataVersion())[5] { static const MetadataVersion values[] = { MetadataVersion::V1, MetadataVersion::V2, MetadataVersion::V3, MetadataVersion::V4, MetadataVersion::V5 }; return values; } inline const char * const *EnumNamesMetadataVersion() { static const char * const names[6] = { "V1", "V2", "V3", "V4", "V5", nullptr }; return names; } inline const char *EnumNameMetadataVersion(MetadataVersion e) { if (flatbuffers::IsOutRange(e, MetadataVersion::V1, MetadataVersion::V5)) return ""; const size_t index = static_cast(e); return EnumNamesMetadataVersion()[index]; } /// Represents Arrow Features that might not have full support /// within implementations. This is intended to be used in /// two scenarios: /// 1. A mechanism for readers of Arrow Streams /// and files to understand that the stream or file makes /// use of a feature that isn't supported or unknown to /// the implementation (and therefore can meet the Arrow /// forward compatibility guarantees). /// 2. A means of negotiating between a client and server /// what features a stream is allowed to use. The enums /// values here are intented to represent higher level /// features, additional details maybe negotiated /// with key-value pairs specific to the protocol. /// /// Enums added to this list should be assigned power-of-two values /// to facilitate exchanging and comparing bitmaps for supported /// features. enum class Feature : int64_t { /// Needed to make flatbuffers happy. UNUSED = 0, /// The stream makes use of multiple full dictionaries with the /// same ID and assumes clients implement dictionary replacement /// correctly. DICTIONARY_REPLACEMENT = 1LL, /// The stream makes use of compressed bodies as described /// in Message.fbs. COMPRESSED_BODY = 2LL, MIN = UNUSED, MAX = COMPRESSED_BODY }; inline const Feature (&EnumValuesFeature())[3] { static const Feature values[] = { Feature::UNUSED, Feature::DICTIONARY_REPLACEMENT, Feature::COMPRESSED_BODY }; return values; } inline const char * const *EnumNamesFeature() { static const char * const names[4] = { "UNUSED", "DICTIONARY_REPLACEMENT", "COMPRESSED_BODY", nullptr }; return names; } inline const char *EnumNameFeature(Feature e) { if (flatbuffers::IsOutRange(e, Feature::UNUSED, Feature::COMPRESSED_BODY)) return ""; const size_t index = static_cast(e); return EnumNamesFeature()[index]; } enum class UnionMode : int16_t { Sparse = 0, Dense = 1, MIN = Sparse, MAX = Dense }; inline const UnionMode (&EnumValuesUnionMode())[2] { static const UnionMode values[] = { UnionMode::Sparse, UnionMode::Dense }; return values; } inline const char * const *EnumNamesUnionMode() { static const char * const names[3] = { "Sparse", "Dense", nullptr }; return names; } inline const char *EnumNameUnionMode(UnionMode e) { if (flatbuffers::IsOutRange(e, UnionMode::Sparse, UnionMode::Dense)) return ""; const size_t index = static_cast(e); return EnumNamesUnionMode()[index]; } enum class Precision : int16_t { HALF = 0, SINGLE = 1, DOUBLE = 2, MIN = HALF, MAX = DOUBLE }; inline const Precision (&EnumValuesPrecision())[3] { static const Precision values[] = { Precision::HALF, Precision::SINGLE, Precision::DOUBLE }; return values; } inline const char * const *EnumNamesPrecision() { static const char * const names[4] = { "HALF", "SINGLE", "DOUBLE", nullptr }; return names; } inline const char *EnumNamePrecision(Precision e) { if (flatbuffers::IsOutRange(e, Precision::HALF, Precision::DOUBLE)) return ""; const size_t index = static_cast(e); return EnumNamesPrecision()[index]; } enum class DateUnit : int16_t { DAY = 0, MILLISECOND = 1, MIN = DAY, MAX = MILLISECOND }; inline const DateUnit (&EnumValuesDateUnit())[2] { static const DateUnit values[] = { DateUnit::DAY, DateUnit::MILLISECOND }; return values; } inline const char * const *EnumNamesDateUnit() { static const char * const names[3] = { "DAY", "MILLISECOND", nullptr }; return names; } inline const char *EnumNameDateUnit(DateUnit e) { if (flatbuffers::IsOutRange(e, DateUnit::DAY, DateUnit::MILLISECOND)) return ""; const size_t index = static_cast(e); return EnumNamesDateUnit()[index]; } enum class TimeUnit : int16_t { SECOND = 0, MILLISECOND = 1, MICROSECOND = 2, NANOSECOND = 3, MIN = SECOND, MAX = NANOSECOND }; inline const TimeUnit (&EnumValuesTimeUnit())[4] { static const TimeUnit values[] = { TimeUnit::SECOND, TimeUnit::MILLISECOND, TimeUnit::MICROSECOND, TimeUnit::NANOSECOND }; return values; } inline const char * const *EnumNamesTimeUnit() { static const char * const names[5] = { "SECOND", "MILLISECOND", "MICROSECOND", "NANOSECOND", nullptr }; return names; } inline const char *EnumNameTimeUnit(TimeUnit e) { if (flatbuffers::IsOutRange(e, TimeUnit::SECOND, TimeUnit::NANOSECOND)) return ""; const size_t index = static_cast(e); return EnumNamesTimeUnit()[index]; } enum class IntervalUnit : int16_t { YEAR_MONTH = 0, DAY_TIME = 1, MIN = YEAR_MONTH, MAX = DAY_TIME }; inline const IntervalUnit (&EnumValuesIntervalUnit())[2] { static const IntervalUnit values[] = { IntervalUnit::YEAR_MONTH, IntervalUnit::DAY_TIME }; return values; } inline const char * const *EnumNamesIntervalUnit() { static const char * const names[3] = { "YEAR_MONTH", "DAY_TIME", nullptr }; return names; } inline const char *EnumNameIntervalUnit(IntervalUnit e) { if (flatbuffers::IsOutRange(e, IntervalUnit::YEAR_MONTH, IntervalUnit::DAY_TIME)) return ""; const size_t index = static_cast(e); return EnumNamesIntervalUnit()[index]; } /// ---------------------------------------------------------------------- /// Top-level Type value, enabling extensible type-specific metadata. We can /// add new logical types to Type without breaking backwards compatibility enum class Type : uint8_t { NONE = 0, Null = 1, Int = 2, FloatingPoint = 3, Binary = 4, Utf8 = 5, Bool = 6, Decimal = 7, Date = 8, Time = 9, Timestamp = 10, Interval = 11, List = 12, Struct_ = 13, Union = 14, FixedSizeBinary = 15, FixedSizeList = 16, Map = 17, Duration = 18, LargeBinary = 19, LargeUtf8 = 20, LargeList = 21, MIN = NONE, MAX = LargeList }; inline const Type (&EnumValuesType())[22] { static const Type values[] = { Type::NONE, Type::Null, Type::Int, Type::FloatingPoint, Type::Binary, Type::Utf8, Type::Bool, Type::Decimal, Type::Date, Type::Time, Type::Timestamp, Type::Interval, Type::List, Type::Struct_, Type::Union, Type::FixedSizeBinary, Type::FixedSizeList, Type::Map, Type::Duration, Type::LargeBinary, Type::LargeUtf8, Type::LargeList }; return values; } inline const char * const *EnumNamesType() { static const char * const names[23] = { "NONE", "Null", "Int", "FloatingPoint", "Binary", "Utf8", "Bool", "Decimal", "Date", "Time", "Timestamp", "Interval", "List", "Struct_", "Union", "FixedSizeBinary", "FixedSizeList", "Map", "Duration", "LargeBinary", "LargeUtf8", "LargeList", nullptr }; return names; } inline const char *EnumNameType(Type e) { if (flatbuffers::IsOutRange(e, Type::NONE, Type::LargeList)) return ""; const size_t index = static_cast(e); return EnumNamesType()[index]; } template struct TypeTraits { static const Type enum_value = Type::NONE; }; template<> struct TypeTraits { static const Type enum_value = Type::Null; }; template<> struct TypeTraits { static const Type enum_value = Type::Int; }; template<> struct TypeTraits { static const Type enum_value = Type::FloatingPoint; }; template<> struct TypeTraits { static const Type enum_value = Type::Binary; }; template<> struct TypeTraits { static const Type enum_value = Type::Utf8; }; template<> struct TypeTraits { static const Type enum_value = Type::Bool; }; template<> struct TypeTraits { static const Type enum_value = Type::Decimal; }; template<> struct TypeTraits { static const Type enum_value = Type::Date; }; template<> struct TypeTraits { static const Type enum_value = Type::Time; }; template<> struct TypeTraits { static const Type enum_value = Type::Timestamp; }; template<> struct TypeTraits { static const Type enum_value = Type::Interval; }; template<> struct TypeTraits { static const Type enum_value = Type::List; }; template<> struct TypeTraits { static const Type enum_value = Type::Struct_; }; template<> struct TypeTraits { static const Type enum_value = Type::Union; }; template<> struct TypeTraits { static const Type enum_value = Type::FixedSizeBinary; }; template<> struct TypeTraits { static const Type enum_value = Type::FixedSizeList; }; template<> struct TypeTraits { static const Type enum_value = Type::Map; }; template<> struct TypeTraits { static const Type enum_value = Type::Duration; }; template<> struct TypeTraits { static const Type enum_value = Type::LargeBinary; }; template<> struct TypeTraits { static const Type enum_value = Type::LargeUtf8; }; template<> struct TypeTraits { static const Type enum_value = Type::LargeList; }; bool VerifyType(flatbuffers::Verifier &verifier, const void *obj, Type type); bool VerifyTypeVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types); /// ---------------------------------------------------------------------- /// Dictionary encoding metadata /// Maintained for forwards compatibility, in the future /// Dictionaries might be explicit maps between integers and values /// allowing for non-contiguous index values enum class DictionaryKind : int16_t { DenseArray = 0, MIN = DenseArray, MAX = DenseArray }; inline const DictionaryKind (&EnumValuesDictionaryKind())[1] { static const DictionaryKind values[] = { DictionaryKind::DenseArray }; return values; } inline const char * const *EnumNamesDictionaryKind() { static const char * const names[2] = { "DenseArray", nullptr }; return names; } inline const char *EnumNameDictionaryKind(DictionaryKind e) { if (flatbuffers::IsOutRange(e, DictionaryKind::DenseArray, DictionaryKind::DenseArray)) return ""; const size_t index = static_cast(e); return EnumNamesDictionaryKind()[index]; } /// ---------------------------------------------------------------------- /// Endianness of the platform producing the data enum class Endianness : int16_t { Little = 0, Big = 1, MIN = Little, MAX = Big }; inline const Endianness (&EnumValuesEndianness())[2] { static const Endianness values[] = { Endianness::Little, Endianness::Big }; return values; } inline const char * const *EnumNamesEndianness() { static const char * const names[3] = { "Little", "Big", nullptr }; return names; } inline const char *EnumNameEndianness(Endianness e) { if (flatbuffers::IsOutRange(e, Endianness::Little, Endianness::Big)) return ""; const size_t index = static_cast(e); return EnumNamesEndianness()[index]; } /// ---------------------------------------------------------------------- /// A Buffer represents a single contiguous memory segment FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) Buffer FLATBUFFERS_FINAL_CLASS { private: int64_t offset_; int64_t length_; public: Buffer() { memset(static_cast(this), 0, sizeof(Buffer)); } Buffer(int64_t _offset, int64_t _length) : offset_(flatbuffers::EndianScalar(_offset)), length_(flatbuffers::EndianScalar(_length)) { } /// The relative offset into the shared memory page where the bytes for this /// buffer starts int64_t offset() const { return flatbuffers::EndianScalar(offset_); } /// The absolute length (in bytes) of the memory buffer. The memory is found /// from offset (inclusive) to offset + length (non-inclusive). When building /// messages using the encapsulated IPC message, padding bytes may be written /// after a buffer, but such padding bytes do not need to be accounted for in /// the size here. int64_t length() const { return flatbuffers::EndianScalar(length_); } }; FLATBUFFERS_STRUCT_END(Buffer, 16); /// These are stored in the flatbuffer in the Type union below struct Null FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef NullBuilder Builder; bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } }; struct NullBuilder { typedef Null Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; explicit NullBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } NullBuilder &operator=(const NullBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateNull( flatbuffers::FlatBufferBuilder &_fbb) { NullBuilder builder_(_fbb); return builder_.Finish(); } /// A Struct_ in the flatbuffer metadata is the same as an Arrow Struct /// (according to the physical memory layout). We used Struct_ here as /// Struct is a reserved word in Flatbuffers struct Struct_ FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef Struct_Builder Builder; bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } }; struct Struct_Builder { typedef Struct_ Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; explicit Struct_Builder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } Struct_Builder &operator=(const Struct_Builder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateStruct_( flatbuffers::FlatBufferBuilder &_fbb) { Struct_Builder builder_(_fbb); return builder_.Finish(); } struct List FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ListBuilder Builder; bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } }; struct ListBuilder { typedef List Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; explicit ListBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } ListBuilder &operator=(const ListBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateList( flatbuffers::FlatBufferBuilder &_fbb) { ListBuilder builder_(_fbb); return builder_.Finish(); } /// Same as List, but with 64-bit offsets, allowing to represent /// extremely large data values. struct LargeList FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef LargeListBuilder Builder; bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } }; struct LargeListBuilder { typedef LargeList Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; explicit LargeListBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } LargeListBuilder &operator=(const LargeListBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateLargeList( flatbuffers::FlatBufferBuilder &_fbb) { LargeListBuilder builder_(_fbb); return builder_.Finish(); } struct FixedSizeList FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef FixedSizeListBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_LISTSIZE = 4 }; /// Number of list items per value int32_t listSize() const { return GetField(VT_LISTSIZE, 0); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_LISTSIZE) && verifier.EndTable(); } }; struct FixedSizeListBuilder { typedef FixedSizeList Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_listSize(int32_t listSize) { fbb_.AddElement(FixedSizeList::VT_LISTSIZE, listSize, 0); } explicit FixedSizeListBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } FixedSizeListBuilder &operator=(const FixedSizeListBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateFixedSizeList( flatbuffers::FlatBufferBuilder &_fbb, int32_t listSize = 0) { FixedSizeListBuilder builder_(_fbb); builder_.add_listSize(listSize); return builder_.Finish(); } /// A Map is a logical nested type that is represented as /// /// List> /// /// In this layout, the keys and values are each respectively contiguous. We do /// not constrain the key and value types, so the application is responsible /// for ensuring that the keys are hashable and unique. Whether the keys are sorted /// may be set in the metadata for this field. /// /// In a field with Map type, the field has a child Struct field, which then /// has two children: key type and the second the value type. The names of the /// child fields may be respectively "entries", "key", and "value", but this is /// not enforced. /// /// Map /// - child[0] entries: Struct /// - child[0] key: K /// - child[1] value: V /// /// Neither the "entries" field nor the "key" field may be nullable. /// /// The metadata is structured so that Arrow systems without special handling /// for Map can make Map an alias for List. The "layout" attribute for the Map /// field must have the same contents as a List. struct Map FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef MapBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_KEYSSORTED = 4 }; /// Set to true if the keys within each value are sorted bool keysSorted() const { return GetField(VT_KEYSSORTED, 0) != 0; } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_KEYSSORTED) && verifier.EndTable(); } }; struct MapBuilder { typedef Map Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_keysSorted(bool keysSorted) { fbb_.AddElement(Map::VT_KEYSSORTED, static_cast(keysSorted), 0); } explicit MapBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } MapBuilder &operator=(const MapBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateMap( flatbuffers::FlatBufferBuilder &_fbb, bool keysSorted = false) { MapBuilder builder_(_fbb); builder_.add_keysSorted(keysSorted); return builder_.Finish(); } /// A union is a complex type with children in Field /// By default ids in the type vector refer to the offsets in the children /// optionally typeIds provides an indirection between the child offset and the type id /// for each child typeIds[offset] is the id used in the type vector struct Union FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef UnionBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_MODE = 4, VT_TYPEIDS = 6 }; org::apache::arrow::flatbuf::UnionMode mode() const { return static_cast(GetField(VT_MODE, 0)); } const flatbuffers::Vector *typeIds() const { return GetPointer *>(VT_TYPEIDS); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_MODE) && VerifyOffset(verifier, VT_TYPEIDS) && verifier.VerifyVector(typeIds()) && verifier.EndTable(); } }; struct UnionBuilder { typedef Union Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_mode(org::apache::arrow::flatbuf::UnionMode mode) { fbb_.AddElement(Union::VT_MODE, static_cast(mode), 0); } void add_typeIds(flatbuffers::Offset> typeIds) { fbb_.AddOffset(Union::VT_TYPEIDS, typeIds); } explicit UnionBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } UnionBuilder &operator=(const UnionBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateUnion( flatbuffers::FlatBufferBuilder &_fbb, org::apache::arrow::flatbuf::UnionMode mode = org::apache::arrow::flatbuf::UnionMode::Sparse, flatbuffers::Offset> typeIds = 0) { UnionBuilder builder_(_fbb); builder_.add_typeIds(typeIds); builder_.add_mode(mode); return builder_.Finish(); } inline flatbuffers::Offset CreateUnionDirect( flatbuffers::FlatBufferBuilder &_fbb, org::apache::arrow::flatbuf::UnionMode mode = org::apache::arrow::flatbuf::UnionMode::Sparse, const std::vector *typeIds = nullptr) { auto typeIds__ = typeIds ? _fbb.CreateVector(*typeIds) : 0; return org::apache::arrow::flatbuf::CreateUnion( _fbb, mode, typeIds__); } struct Int FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef IntBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_BITWIDTH = 4, VT_IS_SIGNED = 6 }; int32_t bitWidth() const { return GetField(VT_BITWIDTH, 0); } bool is_signed() const { return GetField(VT_IS_SIGNED, 0) != 0; } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_BITWIDTH) && VerifyField(verifier, VT_IS_SIGNED) && verifier.EndTable(); } }; struct IntBuilder { typedef Int Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_bitWidth(int32_t bitWidth) { fbb_.AddElement(Int::VT_BITWIDTH, bitWidth, 0); } void add_is_signed(bool is_signed) { fbb_.AddElement(Int::VT_IS_SIGNED, static_cast(is_signed), 0); } explicit IntBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } IntBuilder &operator=(const IntBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateInt( flatbuffers::FlatBufferBuilder &_fbb, int32_t bitWidth = 0, bool is_signed = false) { IntBuilder builder_(_fbb); builder_.add_bitWidth(bitWidth); builder_.add_is_signed(is_signed); return builder_.Finish(); } struct FloatingPoint FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef FloatingPointBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_PRECISION = 4 }; org::apache::arrow::flatbuf::Precision precision() const { return static_cast(GetField(VT_PRECISION, 0)); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_PRECISION) && verifier.EndTable(); } }; struct FloatingPointBuilder { typedef FloatingPoint Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_precision(org::apache::arrow::flatbuf::Precision precision) { fbb_.AddElement(FloatingPoint::VT_PRECISION, static_cast(precision), 0); } explicit FloatingPointBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } FloatingPointBuilder &operator=(const FloatingPointBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateFloatingPoint( flatbuffers::FlatBufferBuilder &_fbb, org::apache::arrow::flatbuf::Precision precision = org::apache::arrow::flatbuf::Precision::HALF) { FloatingPointBuilder builder_(_fbb); builder_.add_precision(precision); return builder_.Finish(); } /// Unicode with UTF-8 encoding struct Utf8 FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef Utf8Builder Builder; bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } }; struct Utf8Builder { typedef Utf8 Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; explicit Utf8Builder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } Utf8Builder &operator=(const Utf8Builder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateUtf8( flatbuffers::FlatBufferBuilder &_fbb) { Utf8Builder builder_(_fbb); return builder_.Finish(); } /// Opaque binary data struct Binary FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef BinaryBuilder Builder; bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } }; struct BinaryBuilder { typedef Binary Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; explicit BinaryBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } BinaryBuilder &operator=(const BinaryBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateBinary( flatbuffers::FlatBufferBuilder &_fbb) { BinaryBuilder builder_(_fbb); return builder_.Finish(); } /// Same as Utf8, but with 64-bit offsets, allowing to represent /// extremely large data values. struct LargeUtf8 FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef LargeUtf8Builder Builder; bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } }; struct LargeUtf8Builder { typedef LargeUtf8 Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; explicit LargeUtf8Builder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } LargeUtf8Builder &operator=(const LargeUtf8Builder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateLargeUtf8( flatbuffers::FlatBufferBuilder &_fbb) { LargeUtf8Builder builder_(_fbb); return builder_.Finish(); } /// Same as Binary, but with 64-bit offsets, allowing to represent /// extremely large data values. struct LargeBinary FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef LargeBinaryBuilder Builder; bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } }; struct LargeBinaryBuilder { typedef LargeBinary Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; explicit LargeBinaryBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } LargeBinaryBuilder &operator=(const LargeBinaryBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateLargeBinary( flatbuffers::FlatBufferBuilder &_fbb) { LargeBinaryBuilder builder_(_fbb); return builder_.Finish(); } struct FixedSizeBinary FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef FixedSizeBinaryBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_BYTEWIDTH = 4 }; /// Number of bytes per value int32_t byteWidth() const { return GetField(VT_BYTEWIDTH, 0); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_BYTEWIDTH) && verifier.EndTable(); } }; struct FixedSizeBinaryBuilder { typedef FixedSizeBinary Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_byteWidth(int32_t byteWidth) { fbb_.AddElement(FixedSizeBinary::VT_BYTEWIDTH, byteWidth, 0); } explicit FixedSizeBinaryBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } FixedSizeBinaryBuilder &operator=(const FixedSizeBinaryBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateFixedSizeBinary( flatbuffers::FlatBufferBuilder &_fbb, int32_t byteWidth = 0) { FixedSizeBinaryBuilder builder_(_fbb); builder_.add_byteWidth(byteWidth); return builder_.Finish(); } struct Bool FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef BoolBuilder Builder; bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } }; struct BoolBuilder { typedef Bool Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; explicit BoolBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } BoolBuilder &operator=(const BoolBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateBool( flatbuffers::FlatBufferBuilder &_fbb) { BoolBuilder builder_(_fbb); return builder_.Finish(); } /// Exact decimal value represented as an integer value in two's /// complement. Currently only 128-bit (16-byte) integers are used but this may /// be expanded in the future. The representation uses the endianness indicated /// in the Schema. struct Decimal FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef DecimalBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_PRECISION = 4, VT_SCALE = 6, VT_BITWIDTH = 8 }; /// Total number of decimal digits int32_t precision() const { return GetField(VT_PRECISION, 0); } /// Number of digits after the decimal point "." int32_t scale() const { return GetField(VT_SCALE, 0); } /// Number of bits per value. The only accepted width right now is 128 but /// this field exists for forward compatibility so that other bit widths may /// be supported in future format versions. We use bitWidth for consistency /// with Int::bitWidth. int32_t bitWidth() const { return GetField(VT_BITWIDTH, 128); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_PRECISION) && VerifyField(verifier, VT_SCALE) && VerifyField(verifier, VT_BITWIDTH) && verifier.EndTable(); } }; struct DecimalBuilder { typedef Decimal Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_precision(int32_t precision) { fbb_.AddElement(Decimal::VT_PRECISION, precision, 0); } void add_scale(int32_t scale) { fbb_.AddElement(Decimal::VT_SCALE, scale, 0); } void add_bitWidth(int32_t bitWidth) { fbb_.AddElement(Decimal::VT_BITWIDTH, bitWidth, 128); } explicit DecimalBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } DecimalBuilder &operator=(const DecimalBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateDecimal( flatbuffers::FlatBufferBuilder &_fbb, int32_t precision = 0, int32_t scale = 0, int32_t bitWidth = 128) { DecimalBuilder builder_(_fbb); builder_.add_bitWidth(bitWidth); builder_.add_scale(scale); builder_.add_precision(precision); return builder_.Finish(); } /// Date is either a 32-bit or 64-bit type representing elapsed time since UNIX /// epoch (1970-01-01), stored in either of two units: /// /// * Milliseconds (64 bits) indicating UNIX time elapsed since the epoch (no /// leap seconds), where the values are evenly divisible by 86400000 /// * Days (32 bits) since the UNIX epoch struct Date FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef DateBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_UNIT = 4 }; org::apache::arrow::flatbuf::DateUnit unit() const { return static_cast(GetField(VT_UNIT, 1)); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_UNIT) && verifier.EndTable(); } }; struct DateBuilder { typedef Date Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_unit(org::apache::arrow::flatbuf::DateUnit unit) { fbb_.AddElement(Date::VT_UNIT, static_cast(unit), 1); } explicit DateBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } DateBuilder &operator=(const DateBuilder &); flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateDate( flatbuffers::FlatBufferBuilder &_fbb, org::apache::arrow::flatbuf::DateUnit unit = org::apache::arrow::flatbuf::DateUnit::MILLISECOND) { DateBuilder builder_(_fbb); builder_.add_unit(unit); return builder_.Finish(); } /// Time type. The physical storage type depends on the unit /// - SECOND and MILLISECOND: 32 bits /// - MICROSECOND and NANOSECOND: 64 bits struct Time FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef TimeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_UNIT = 4, VT_BITWIDTH = 6 }; org::apache::arrow::flatbuf::TimeUnit unit() const { return static_cast(GetField(VT_UNIT, 1)); } int32_t bitWidth() const { return GetField(VT_BITWIDTH, 32); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_UNIT) && VerifyField(verifier, VT_BITWIDTH) && verifier.EndTable(); } }; struct TimeBuilder { typedef Time Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_unit(org::apache::arrow::flatbuf::TimeUnit unit) { fbb_.AddElement(Time::VT_UNIT, static_cast(unit), 1); } void add_bitWidth(int32_t bitWidth) { fbb_.AddElement(Time::VT_BITWIDTH, bitWidth, 32); } explicit TimeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } TimeBuilder &operator=(const TimeBuilder &); flatbuffers::Offset