blob: 730b001497db85d948ab0da0dfd4e232e6e1c07e [file] [log] [blame]
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_EXPRESSION_ORG_APACHE_ARROW_COMPUTEIR_FLATBUF_H_
#define FLATBUFFERS_GENERATED_EXPRESSION_ORG_APACHE_ARROW_COMPUTEIR_FLATBUF_H_
#include "flatbuffers/flatbuffers.h"
#include "Schema_generated.h"
#include "Literal_generated.h"
namespace org {
namespace apache {
namespace arrow {
namespace computeir {
namespace flatbuf {
struct MapKey;
struct MapKeyBuilder;
struct StructField;
struct StructFieldBuilder;
struct ArraySubscript;
struct ArraySubscriptBuilder;
struct ArraySlice;
struct ArraySliceBuilder;
struct FieldIndex;
struct FieldIndexBuilder;
struct FieldRef;
struct FieldRefBuilder;
struct Call;
struct CallBuilder;
struct CaseFragment;
struct CaseFragmentBuilder;
struct ConditionalCase;
struct ConditionalCaseBuilder;
struct SimpleCase;
struct SimpleCaseBuilder;
struct SortKey;
struct SortKeyBuilder;
struct Unbounded;
struct UnboundedBuilder;
struct Preceding;
struct PrecedingBuilder;
struct Following;
struct FollowingBuilder;
struct CurrentRow;
struct CurrentRowBuilder;
struct WindowCall;
struct WindowCallBuilder;
struct Cast;
struct CastBuilder;
struct Expression;
struct ExpressionBuilder;
/// A union of possible dereference operations
enum class Deref : uint8_t {
NONE = 0,
/// Access a value for a given map key
MapKey = 1,
/// Access the value at a struct field
StructField = 2,
/// Access the element at a given index in an array
ArraySubscript = 3,
/// Access a range of elements in an array
ArraySlice = 4,
/// Access a field of a relation
FieldIndex = 5,
MIN = NONE,
MAX = FieldIndex
};
inline const Deref (&EnumValuesDeref())[6] {
static const Deref values[] = {
Deref::NONE,
Deref::MapKey,
Deref::StructField,
Deref::ArraySubscript,
Deref::ArraySlice,
Deref::FieldIndex
};
return values;
}
inline const char * const *EnumNamesDeref() {
static const char * const names[7] = {
"NONE",
"MapKey",
"StructField",
"ArraySubscript",
"ArraySlice",
"FieldIndex",
nullptr
};
return names;
}
inline const char *EnumNameDeref(Deref e) {
if (flatbuffers::IsOutRange(e, Deref::NONE, Deref::FieldIndex)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesDeref()[index];
}
template<typename T> struct DerefTraits {
static const Deref enum_value = Deref::NONE;
};
template<> struct DerefTraits<org::apache::arrow::computeir::flatbuf::MapKey> {
static const Deref enum_value = Deref::MapKey;
};
template<> struct DerefTraits<org::apache::arrow::computeir::flatbuf::StructField> {
static const Deref enum_value = Deref::StructField;
};
template<> struct DerefTraits<org::apache::arrow::computeir::flatbuf::ArraySubscript> {
static const Deref enum_value = Deref::ArraySubscript;
};
template<> struct DerefTraits<org::apache::arrow::computeir::flatbuf::ArraySlice> {
static const Deref enum_value = Deref::ArraySlice;
};
template<> struct DerefTraits<org::apache::arrow::computeir::flatbuf::FieldIndex> {
static const Deref enum_value = Deref::FieldIndex;
};
bool VerifyDeref(flatbuffers::Verifier &verifier, const void *obj, Deref type);
bool VerifyDerefVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
/// Whether lesser values should precede greater or vice versa,
/// also whether nulls should preced or follow values
enum class Ordering : uint8_t {
ASCENDING_THEN_NULLS = 0,
DESCENDING_THEN_NULLS = 1,
NULLS_THEN_ASCENDING = 2,
NULLS_THEN_DESCENDING = 3,
MIN = ASCENDING_THEN_NULLS,
MAX = NULLS_THEN_DESCENDING
};
inline const Ordering (&EnumValuesOrdering())[4] {
static const Ordering values[] = {
Ordering::ASCENDING_THEN_NULLS,
Ordering::DESCENDING_THEN_NULLS,
Ordering::NULLS_THEN_ASCENDING,
Ordering::NULLS_THEN_DESCENDING
};
return values;
}
inline const char * const *EnumNamesOrdering() {
static const char * const names[5] = {
"ASCENDING_THEN_NULLS",
"DESCENDING_THEN_NULLS",
"NULLS_THEN_ASCENDING",
"NULLS_THEN_DESCENDING",
nullptr
};
return names;
}
inline const char *EnumNameOrdering(Ordering e) {
if (flatbuffers::IsOutRange(e, Ordering::ASCENDING_THEN_NULLS, Ordering::NULLS_THEN_DESCENDING)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesOrdering()[index];
}
/// A concrete bound, which can be an expression or unbounded
enum class ConcreteBoundImpl : uint8_t {
NONE = 0,
Expression = 1,
Unbounded = 2,
MIN = NONE,
MAX = Unbounded
};
inline const ConcreteBoundImpl (&EnumValuesConcreteBoundImpl())[3] {
static const ConcreteBoundImpl values[] = {
ConcreteBoundImpl::NONE,
ConcreteBoundImpl::Expression,
ConcreteBoundImpl::Unbounded
};
return values;
}
inline const char * const *EnumNamesConcreteBoundImpl() {
static const char * const names[4] = {
"NONE",
"Expression",
"Unbounded",
nullptr
};
return names;
}
inline const char *EnumNameConcreteBoundImpl(ConcreteBoundImpl e) {
if (flatbuffers::IsOutRange(e, ConcreteBoundImpl::NONE, ConcreteBoundImpl::Unbounded)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesConcreteBoundImpl()[index];
}
template<typename T> struct ConcreteBoundImplTraits {
static const ConcreteBoundImpl enum_value = ConcreteBoundImpl::NONE;
};
template<> struct ConcreteBoundImplTraits<org::apache::arrow::computeir::flatbuf::Expression> {
static const ConcreteBoundImpl enum_value = ConcreteBoundImpl::Expression;
};
template<> struct ConcreteBoundImplTraits<org::apache::arrow::computeir::flatbuf::Unbounded> {
static const ConcreteBoundImpl enum_value = ConcreteBoundImpl::Unbounded;
};
bool VerifyConcreteBoundImpl(flatbuffers::Verifier &verifier, const void *obj, ConcreteBoundImpl type);
bool VerifyConcreteBoundImplVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
enum class Bound : uint8_t {
NONE = 0,
Preceding = 1,
Following = 2,
CurrentRow = 3,
MIN = NONE,
MAX = CurrentRow
};
inline const Bound (&EnumValuesBound())[4] {
static const Bound values[] = {
Bound::NONE,
Bound::Preceding,
Bound::Following,
Bound::CurrentRow
};
return values;
}
inline const char * const *EnumNamesBound() {
static const char * const names[5] = {
"NONE",
"Preceding",
"Following",
"CurrentRow",
nullptr
};
return names;
}
inline const char *EnumNameBound(Bound e) {
if (flatbuffers::IsOutRange(e, Bound::NONE, Bound::CurrentRow)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesBound()[index];
}
template<typename T> struct BoundTraits {
static const Bound enum_value = Bound::NONE;
};
template<> struct BoundTraits<org::apache::arrow::computeir::flatbuf::Preceding> {
static const Bound enum_value = Bound::Preceding;
};
template<> struct BoundTraits<org::apache::arrow::computeir::flatbuf::Following> {
static const Bound enum_value = Bound::Following;
};
template<> struct BoundTraits<org::apache::arrow::computeir::flatbuf::CurrentRow> {
static const Bound enum_value = Bound::CurrentRow;
};
bool VerifyBound(flatbuffers::Verifier &verifier, const void *obj, Bound type);
bool VerifyBoundVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
/// The kind of window function to be executed
enum class Frame : uint8_t {
Rows = 0,
Range = 1,
MIN = Rows,
MAX = Range
};
inline const Frame (&EnumValuesFrame())[2] {
static const Frame values[] = {
Frame::Rows,
Frame::Range
};
return values;
}
inline const char * const *EnumNamesFrame() {
static const char * const names[3] = {
"Rows",
"Range",
nullptr
};
return names;
}
inline const char *EnumNameFrame(Frame e) {
if (flatbuffers::IsOutRange(e, Frame::Rows, Frame::Range)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesFrame()[index];
}
/// Various expression types
///
/// WindowCall is a separate variant
/// due to special options for each that don't apply to generic
/// function calls. Again this is done to make it easier
/// for consumers to deal with the structure of the operation
enum class ExpressionImpl : uint8_t {
NONE = 0,
Literal = 1,
FieldRef = 2,
Call = 3,
ConditionalCase = 4,
SimpleCase = 5,
WindowCall = 6,
Cast = 7,
MIN = NONE,
MAX = Cast
};
inline const ExpressionImpl (&EnumValuesExpressionImpl())[8] {
static const ExpressionImpl values[] = {
ExpressionImpl::NONE,
ExpressionImpl::Literal,
ExpressionImpl::FieldRef,
ExpressionImpl::Call,
ExpressionImpl::ConditionalCase,
ExpressionImpl::SimpleCase,
ExpressionImpl::WindowCall,
ExpressionImpl::Cast
};
return values;
}
inline const char * const *EnumNamesExpressionImpl() {
static const char * const names[9] = {
"NONE",
"Literal",
"FieldRef",
"Call",
"ConditionalCase",
"SimpleCase",
"WindowCall",
"Cast",
nullptr
};
return names;
}
inline const char *EnumNameExpressionImpl(ExpressionImpl e) {
if (flatbuffers::IsOutRange(e, ExpressionImpl::NONE, ExpressionImpl::Cast)) return "";
const size_t index = static_cast<size_t>(e);
return EnumNamesExpressionImpl()[index];
}
template<typename T> struct ExpressionImplTraits {
static const ExpressionImpl enum_value = ExpressionImpl::NONE;
};
template<> struct ExpressionImplTraits<org::apache::arrow::computeir::flatbuf::Literal> {
static const ExpressionImpl enum_value = ExpressionImpl::Literal;
};
template<> struct ExpressionImplTraits<org::apache::arrow::computeir::flatbuf::FieldRef> {
static const ExpressionImpl enum_value = ExpressionImpl::FieldRef;
};
template<> struct ExpressionImplTraits<org::apache::arrow::computeir::flatbuf::Call> {
static const ExpressionImpl enum_value = ExpressionImpl::Call;
};
template<> struct ExpressionImplTraits<org::apache::arrow::computeir::flatbuf::ConditionalCase> {
static const ExpressionImpl enum_value = ExpressionImpl::ConditionalCase;
};
template<> struct ExpressionImplTraits<org::apache::arrow::computeir::flatbuf::SimpleCase> {
static const ExpressionImpl enum_value = ExpressionImpl::SimpleCase;
};
template<> struct ExpressionImplTraits<org::apache::arrow::computeir::flatbuf::WindowCall> {
static const ExpressionImpl enum_value = ExpressionImpl::WindowCall;
};
template<> struct ExpressionImplTraits<org::apache::arrow::computeir::flatbuf::Cast> {
static const ExpressionImpl enum_value = ExpressionImpl::Cast;
};
bool VerifyExpressionImpl(flatbuffers::Verifier &verifier, const void *obj, ExpressionImpl type);
bool VerifyExpressionImplVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
/// Access a value for a given map key
struct MapKey FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef MapKeyBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_KEY = 4
};
/// Any expression can be a map key.
const org::apache::arrow::computeir::flatbuf::Expression *key() const {
return GetPointer<const org::apache::arrow::computeir::flatbuf::Expression *>(VT_KEY);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_KEY) &&
verifier.VerifyTable(key()) &&
verifier.EndTable();
}
};
struct MapKeyBuilder {
typedef MapKey Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_key(flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> key) {
fbb_.AddOffset(MapKey::VT_KEY, key);
}
explicit MapKeyBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
MapKeyBuilder &operator=(const MapKeyBuilder &);
flatbuffers::Offset<MapKey> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<MapKey>(end);
fbb_.Required(o, MapKey::VT_KEY);
return o;
}
};
inline flatbuffers::Offset<MapKey> CreateMapKey(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> key = 0) {
MapKeyBuilder builder_(_fbb);
builder_.add_key(key);
return builder_.Finish();
}
/// Struct field access
struct StructField FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef StructFieldBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_POSITION = 4
};
/// The position of the field in the struct schema
uint32_t position() const {
return GetField<uint32_t>(VT_POSITION, 0);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint32_t>(verifier, VT_POSITION) &&
verifier.EndTable();
}
};
struct StructFieldBuilder {
typedef StructField Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_position(uint32_t position) {
fbb_.AddElement<uint32_t>(StructField::VT_POSITION, position, 0);
}
explicit StructFieldBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
StructFieldBuilder &operator=(const StructFieldBuilder &);
flatbuffers::Offset<StructField> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<StructField>(end);
return o;
}
};
inline flatbuffers::Offset<StructField> CreateStructField(
flatbuffers::FlatBufferBuilder &_fbb,
uint32_t position = 0) {
StructFieldBuilder builder_(_fbb);
builder_.add_position(position);
return builder_.Finish();
}
/// Zero-based array index
struct ArraySubscript FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef ArraySubscriptBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_POSITION = 4
};
uint32_t position() const {
return GetField<uint32_t>(VT_POSITION, 0);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint32_t>(verifier, VT_POSITION) &&
verifier.EndTable();
}
};
struct ArraySubscriptBuilder {
typedef ArraySubscript Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_position(uint32_t position) {
fbb_.AddElement<uint32_t>(ArraySubscript::VT_POSITION, position, 0);
}
explicit ArraySubscriptBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
ArraySubscriptBuilder &operator=(const ArraySubscriptBuilder &);
flatbuffers::Offset<ArraySubscript> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<ArraySubscript>(end);
return o;
}
};
inline flatbuffers::Offset<ArraySubscript> CreateArraySubscript(
flatbuffers::FlatBufferBuilder &_fbb,
uint32_t position = 0) {
ArraySubscriptBuilder builder_(_fbb);
builder_.add_position(position);
return builder_.Finish();
}
/// Zero-based range of elements in an array
struct ArraySlice FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef ArraySliceBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_START_INCLUSIVE = 4,
VT_END_EXCLUSIVE = 6
};
/// The start of an array slice, inclusive
uint32_t start_inclusive() const {
return GetField<uint32_t>(VT_START_INCLUSIVE, 0);
}
/// The end of an array slice, exclusive
uint32_t end_exclusive() const {
return GetField<uint32_t>(VT_END_EXCLUSIVE, 0);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint32_t>(verifier, VT_START_INCLUSIVE) &&
VerifyField<uint32_t>(verifier, VT_END_EXCLUSIVE) &&
verifier.EndTable();
}
};
struct ArraySliceBuilder {
typedef ArraySlice Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_start_inclusive(uint32_t start_inclusive) {
fbb_.AddElement<uint32_t>(ArraySlice::VT_START_INCLUSIVE, start_inclusive, 0);
}
void add_end_exclusive(uint32_t end_exclusive) {
fbb_.AddElement<uint32_t>(ArraySlice::VT_END_EXCLUSIVE, end_exclusive, 0);
}
explicit ArraySliceBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
ArraySliceBuilder &operator=(const ArraySliceBuilder &);
flatbuffers::Offset<ArraySlice> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<ArraySlice>(end);
return o;
}
};
inline flatbuffers::Offset<ArraySlice> CreateArraySlice(
flatbuffers::FlatBufferBuilder &_fbb,
uint32_t start_inclusive = 0,
uint32_t end_exclusive = 0) {
ArraySliceBuilder builder_(_fbb);
builder_.add_end_exclusive(end_exclusive);
builder_.add_start_inclusive(start_inclusive);
return builder_.Finish();
}
/// Field name in a relation, in ordinal position of the relation's schema.
struct FieldIndex FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef FieldIndexBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_POSITION = 4
};
uint32_t position() const {
return GetField<uint32_t>(VT_POSITION, 0);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint32_t>(verifier, VT_POSITION) &&
verifier.EndTable();
}
};
struct FieldIndexBuilder {
typedef FieldIndex Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_position(uint32_t position) {
fbb_.AddElement<uint32_t>(FieldIndex::VT_POSITION, position, 0);
}
explicit FieldIndexBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
FieldIndexBuilder &operator=(const FieldIndexBuilder &);
flatbuffers::Offset<FieldIndex> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<FieldIndex>(end);
return o;
}
};
inline flatbuffers::Offset<FieldIndex> CreateFieldIndex(
flatbuffers::FlatBufferBuilder &_fbb,
uint32_t position = 0) {
FieldIndexBuilder builder_(_fbb);
builder_.add_position(position);
return builder_.Finish();
}
/// Access the data of a field
struct FieldRef FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef FieldRefBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_REF_TYPE = 4,
VT_REF = 6,
VT_RELATION_INDEX = 8
};
org::apache::arrow::computeir::flatbuf::Deref ref_type() const {
return static_cast<org::apache::arrow::computeir::flatbuf::Deref>(GetField<uint8_t>(VT_REF_TYPE, 0));
}
const void *ref() const {
return GetPointer<const void *>(VT_REF);
}
template<typename T> const T *ref_as() const;
const org::apache::arrow::computeir::flatbuf::MapKey *ref_as_MapKey() const {
return ref_type() == org::apache::arrow::computeir::flatbuf::Deref::MapKey ? static_cast<const org::apache::arrow::computeir::flatbuf::MapKey *>(ref()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::StructField *ref_as_StructField() const {
return ref_type() == org::apache::arrow::computeir::flatbuf::Deref::StructField ? static_cast<const org::apache::arrow::computeir::flatbuf::StructField *>(ref()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::ArraySubscript *ref_as_ArraySubscript() const {
return ref_type() == org::apache::arrow::computeir::flatbuf::Deref::ArraySubscript ? static_cast<const org::apache::arrow::computeir::flatbuf::ArraySubscript *>(ref()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::ArraySlice *ref_as_ArraySlice() const {
return ref_type() == org::apache::arrow::computeir::flatbuf::Deref::ArraySlice ? static_cast<const org::apache::arrow::computeir::flatbuf::ArraySlice *>(ref()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::FieldIndex *ref_as_FieldIndex() const {
return ref_type() == org::apache::arrow::computeir::flatbuf::Deref::FieldIndex ? static_cast<const org::apache::arrow::computeir::flatbuf::FieldIndex *>(ref()) : nullptr;
}
/// For Expressions which might reference fields in multiple Relations,
/// this index may be provided to indicate which Relation's fields
/// `ref` points into. For example in the case of a join,
/// 0 refers to the left relation and 1 to the right relation.
int32_t relation_index() const {
return GetField<int32_t>(VT_RELATION_INDEX, 0);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint8_t>(verifier, VT_REF_TYPE) &&
VerifyOffsetRequired(verifier, VT_REF) &&
VerifyDeref(verifier, ref(), ref_type()) &&
VerifyField<int32_t>(verifier, VT_RELATION_INDEX) &&
verifier.EndTable();
}
};
template<> inline const org::apache::arrow::computeir::flatbuf::MapKey *FieldRef::ref_as<org::apache::arrow::computeir::flatbuf::MapKey>() const {
return ref_as_MapKey();
}
template<> inline const org::apache::arrow::computeir::flatbuf::StructField *FieldRef::ref_as<org::apache::arrow::computeir::flatbuf::StructField>() const {
return ref_as_StructField();
}
template<> inline const org::apache::arrow::computeir::flatbuf::ArraySubscript *FieldRef::ref_as<org::apache::arrow::computeir::flatbuf::ArraySubscript>() const {
return ref_as_ArraySubscript();
}
template<> inline const org::apache::arrow::computeir::flatbuf::ArraySlice *FieldRef::ref_as<org::apache::arrow::computeir::flatbuf::ArraySlice>() const {
return ref_as_ArraySlice();
}
template<> inline const org::apache::arrow::computeir::flatbuf::FieldIndex *FieldRef::ref_as<org::apache::arrow::computeir::flatbuf::FieldIndex>() const {
return ref_as_FieldIndex();
}
struct FieldRefBuilder {
typedef FieldRef Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_ref_type(org::apache::arrow::computeir::flatbuf::Deref ref_type) {
fbb_.AddElement<uint8_t>(FieldRef::VT_REF_TYPE, static_cast<uint8_t>(ref_type), 0);
}
void add_ref(flatbuffers::Offset<void> ref) {
fbb_.AddOffset(FieldRef::VT_REF, ref);
}
void add_relation_index(int32_t relation_index) {
fbb_.AddElement<int32_t>(FieldRef::VT_RELATION_INDEX, relation_index, 0);
}
explicit FieldRefBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
FieldRefBuilder &operator=(const FieldRefBuilder &);
flatbuffers::Offset<FieldRef> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<FieldRef>(end);
fbb_.Required(o, FieldRef::VT_REF);
return o;
}
};
inline flatbuffers::Offset<FieldRef> CreateFieldRef(
flatbuffers::FlatBufferBuilder &_fbb,
org::apache::arrow::computeir::flatbuf::Deref ref_type = org::apache::arrow::computeir::flatbuf::Deref::NONE,
flatbuffers::Offset<void> ref = 0,
int32_t relation_index = 0) {
FieldRefBuilder builder_(_fbb);
builder_.add_relation_index(relation_index);
builder_.add_ref(ref);
builder_.add_ref_type(ref_type);
return builder_.Finish();
}
/// A function call expression
struct Call FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef CallBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_NAME = 4,
VT_ARGUMENTS = 6,
VT_ORDERINGS = 8
};
/// The function to call
const flatbuffers::String *name() const {
return GetPointer<const flatbuffers::String *>(VT_NAME);
}
/// The arguments passed to `name`.
const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>> *arguments() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>> *>(VT_ARGUMENTS);
}
/// Possible ordering of input. These are useful
/// in aggregates where ordering in meaningful such as
/// string concatenation
const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>> *orderings() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>> *>(VT_ORDERINGS);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_NAME) &&
verifier.VerifyString(name()) &&
VerifyOffsetRequired(verifier, VT_ARGUMENTS) &&
verifier.VerifyVector(arguments()) &&
verifier.VerifyVectorOfTables(arguments()) &&
VerifyOffset(verifier, VT_ORDERINGS) &&
verifier.VerifyVector(orderings()) &&
verifier.VerifyVectorOfTables(orderings()) &&
verifier.EndTable();
}
};
struct CallBuilder {
typedef Call Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_name(flatbuffers::Offset<flatbuffers::String> name) {
fbb_.AddOffset(Call::VT_NAME, name);
}
void add_arguments(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>>> arguments) {
fbb_.AddOffset(Call::VT_ARGUMENTS, arguments);
}
void add_orderings(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>>> orderings) {
fbb_.AddOffset(Call::VT_ORDERINGS, orderings);
}
explicit CallBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
CallBuilder &operator=(const CallBuilder &);
flatbuffers::Offset<Call> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Call>(end);
fbb_.Required(o, Call::VT_NAME);
fbb_.Required(o, Call::VT_ARGUMENTS);
return o;
}
};
inline flatbuffers::Offset<Call> CreateCall(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<flatbuffers::String> name = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>>> arguments = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>>> orderings = 0) {
CallBuilder builder_(_fbb);
builder_.add_orderings(orderings);
builder_.add_arguments(arguments);
builder_.add_name(name);
return builder_.Finish();
}
inline flatbuffers::Offset<Call> CreateCallDirect(
flatbuffers::FlatBufferBuilder &_fbb,
const char *name = nullptr,
const std::vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>> *arguments = nullptr,
const std::vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>> *orderings = nullptr) {
auto name__ = name ? _fbb.CreateString(name) : 0;
auto arguments__ = arguments ? _fbb.CreateVector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>>(*arguments) : 0;
auto orderings__ = orderings ? _fbb.CreateVector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>>(*orderings) : 0;
return org::apache::arrow::computeir::flatbuf::CreateCall(
_fbb,
name__,
arguments__,
orderings__);
}
/// A single WHEN x THEN y fragment.
struct CaseFragment FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef CaseFragmentBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_MATCH = 4,
VT_RESULT = 6
};
const org::apache::arrow::computeir::flatbuf::Expression *match() const {
return GetPointer<const org::apache::arrow::computeir::flatbuf::Expression *>(VT_MATCH);
}
const org::apache::arrow::computeir::flatbuf::Expression *result() const {
return GetPointer<const org::apache::arrow::computeir::flatbuf::Expression *>(VT_RESULT);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_MATCH) &&
verifier.VerifyTable(match()) &&
VerifyOffsetRequired(verifier, VT_RESULT) &&
verifier.VerifyTable(result()) &&
verifier.EndTable();
}
};
struct CaseFragmentBuilder {
typedef CaseFragment Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_match(flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> match) {
fbb_.AddOffset(CaseFragment::VT_MATCH, match);
}
void add_result(flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> result) {
fbb_.AddOffset(CaseFragment::VT_RESULT, result);
}
explicit CaseFragmentBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
CaseFragmentBuilder &operator=(const CaseFragmentBuilder &);
flatbuffers::Offset<CaseFragment> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<CaseFragment>(end);
fbb_.Required(o, CaseFragment::VT_MATCH);
fbb_.Required(o, CaseFragment::VT_RESULT);
return o;
}
};
inline flatbuffers::Offset<CaseFragment> CreateCaseFragment(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> match = 0,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> result = 0) {
CaseFragmentBuilder builder_(_fbb);
builder_.add_result(result);
builder_.add_match(match);
return builder_.Finish();
}
/// Conditional case statement expression
struct ConditionalCase FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef ConditionalCaseBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_CONDITIONS = 4,
VT_ELSE_ = 6
};
/// List of conditions to evaluate
const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>> *conditions() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>> *>(VT_CONDITIONS);
}
/// The default value if no cases match. This is typically NULL in SQL
/// implementations.
///
/// Defaulting to NULL is a frontend choice, so producers must specify NULL
/// if that's their desired behavior.
const org::apache::arrow::computeir::flatbuf::Expression *else_() const {
return GetPointer<const org::apache::arrow::computeir::flatbuf::Expression *>(VT_ELSE_);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_CONDITIONS) &&
verifier.VerifyVector(conditions()) &&
verifier.VerifyVectorOfTables(conditions()) &&
VerifyOffsetRequired(verifier, VT_ELSE_) &&
verifier.VerifyTable(else_()) &&
verifier.EndTable();
}
};
struct ConditionalCaseBuilder {
typedef ConditionalCase Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_conditions(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>>> conditions) {
fbb_.AddOffset(ConditionalCase::VT_CONDITIONS, conditions);
}
void add_else_(flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> else_) {
fbb_.AddOffset(ConditionalCase::VT_ELSE_, else_);
}
explicit ConditionalCaseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
ConditionalCaseBuilder &operator=(const ConditionalCaseBuilder &);
flatbuffers::Offset<ConditionalCase> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<ConditionalCase>(end);
fbb_.Required(o, ConditionalCase::VT_CONDITIONS);
fbb_.Required(o, ConditionalCase::VT_ELSE_);
return o;
}
};
inline flatbuffers::Offset<ConditionalCase> CreateConditionalCase(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>>> conditions = 0,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> else_ = 0) {
ConditionalCaseBuilder builder_(_fbb);
builder_.add_else_(else_);
builder_.add_conditions(conditions);
return builder_.Finish();
}
inline flatbuffers::Offset<ConditionalCase> CreateConditionalCaseDirect(
flatbuffers::FlatBufferBuilder &_fbb,
const std::vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>> *conditions = nullptr,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> else_ = 0) {
auto conditions__ = conditions ? _fbb.CreateVector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>>(*conditions) : 0;
return org::apache::arrow::computeir::flatbuf::CreateConditionalCase(
_fbb,
conditions__,
else_);
}
/// Switch-style case expression
struct SimpleCase FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef SimpleCaseBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_EXPRESSION = 4,
VT_MATCHES = 6,
VT_ELSE_ = 8
};
/// The expression whose value will be matched
const org::apache::arrow::computeir::flatbuf::Expression *expression() const {
return GetPointer<const org::apache::arrow::computeir::flatbuf::Expression *>(VT_EXPRESSION);
}
/// Matches for `expression`
const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>> *matches() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>> *>(VT_MATCHES);
}
/// The default value if no cases match
const org::apache::arrow::computeir::flatbuf::Expression *else_() const {
return GetPointer<const org::apache::arrow::computeir::flatbuf::Expression *>(VT_ELSE_);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_EXPRESSION) &&
verifier.VerifyTable(expression()) &&
VerifyOffsetRequired(verifier, VT_MATCHES) &&
verifier.VerifyVector(matches()) &&
verifier.VerifyVectorOfTables(matches()) &&
VerifyOffsetRequired(verifier, VT_ELSE_) &&
verifier.VerifyTable(else_()) &&
verifier.EndTable();
}
};
struct SimpleCaseBuilder {
typedef SimpleCase Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_expression(flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> expression) {
fbb_.AddOffset(SimpleCase::VT_EXPRESSION, expression);
}
void add_matches(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>>> matches) {
fbb_.AddOffset(SimpleCase::VT_MATCHES, matches);
}
void add_else_(flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> else_) {
fbb_.AddOffset(SimpleCase::VT_ELSE_, else_);
}
explicit SimpleCaseBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
SimpleCaseBuilder &operator=(const SimpleCaseBuilder &);
flatbuffers::Offset<SimpleCase> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<SimpleCase>(end);
fbb_.Required(o, SimpleCase::VT_EXPRESSION);
fbb_.Required(o, SimpleCase::VT_MATCHES);
fbb_.Required(o, SimpleCase::VT_ELSE_);
return o;
}
};
inline flatbuffers::Offset<SimpleCase> CreateSimpleCase(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> expression = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>>> matches = 0,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> else_ = 0) {
SimpleCaseBuilder builder_(_fbb);
builder_.add_else_(else_);
builder_.add_matches(matches);
builder_.add_expression(expression);
return builder_.Finish();
}
inline flatbuffers::Offset<SimpleCase> CreateSimpleCaseDirect(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> expression = 0,
const std::vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>> *matches = nullptr,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> else_ = 0) {
auto matches__ = matches ? _fbb.CreateVector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::CaseFragment>>(*matches) : 0;
return org::apache::arrow::computeir::flatbuf::CreateSimpleCase(
_fbb,
expression,
matches__,
else_);
}
/// An expression with an order
struct SortKey FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef SortKeyBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_EXPRESSION = 4,
VT_ORDERING = 6
};
const org::apache::arrow::computeir::flatbuf::Expression *expression() const {
return GetPointer<const org::apache::arrow::computeir::flatbuf::Expression *>(VT_EXPRESSION);
}
org::apache::arrow::computeir::flatbuf::Ordering ordering() const {
return static_cast<org::apache::arrow::computeir::flatbuf::Ordering>(GetField<uint8_t>(VT_ORDERING, 0));
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_EXPRESSION) &&
verifier.VerifyTable(expression()) &&
VerifyField<uint8_t>(verifier, VT_ORDERING) &&
verifier.EndTable();
}
};
struct SortKeyBuilder {
typedef SortKey Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_expression(flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> expression) {
fbb_.AddOffset(SortKey::VT_EXPRESSION, expression);
}
void add_ordering(org::apache::arrow::computeir::flatbuf::Ordering ordering) {
fbb_.AddElement<uint8_t>(SortKey::VT_ORDERING, static_cast<uint8_t>(ordering), 0);
}
explicit SortKeyBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
SortKeyBuilder &operator=(const SortKeyBuilder &);
flatbuffers::Offset<SortKey> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<SortKey>(end);
fbb_.Required(o, SortKey::VT_EXPRESSION);
return o;
}
};
inline flatbuffers::Offset<SortKey> CreateSortKey(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> expression = 0,
org::apache::arrow::computeir::flatbuf::Ordering ordering = org::apache::arrow::computeir::flatbuf::Ordering::ASCENDING_THEN_NULLS) {
SortKeyBuilder builder_(_fbb);
builder_.add_expression(expression);
builder_.add_ordering(ordering);
return builder_.Finish();
}
/// An unbounded window bound
struct Unbounded FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef UnboundedBuilder Builder;
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
verifier.EndTable();
}
};
struct UnboundedBuilder {
typedef Unbounded Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
explicit UnboundedBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
UnboundedBuilder &operator=(const UnboundedBuilder &);
flatbuffers::Offset<Unbounded> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Unbounded>(end);
return o;
}
};
inline flatbuffers::Offset<Unbounded> CreateUnbounded(
flatbuffers::FlatBufferBuilder &_fbb) {
UnboundedBuilder builder_(_fbb);
return builder_.Finish();
}
/// Boundary is preceding rows, determined by the contained expression
struct Preceding FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef PrecedingBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_IMPL_TYPE = 4,
VT_IMPL = 6
};
org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl impl_type() const {
return static_cast<org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl>(GetField<uint8_t>(VT_IMPL_TYPE, 0));
}
const void *impl() const {
return GetPointer<const void *>(VT_IMPL);
}
template<typename T> const T *impl_as() const;
const org::apache::arrow::computeir::flatbuf::Expression *impl_as_Expression() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl::Expression ? static_cast<const org::apache::arrow::computeir::flatbuf::Expression *>(impl()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::Unbounded *impl_as_Unbounded() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl::Unbounded ? static_cast<const org::apache::arrow::computeir::flatbuf::Unbounded *>(impl()) : nullptr;
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint8_t>(verifier, VT_IMPL_TYPE) &&
VerifyOffsetRequired(verifier, VT_IMPL) &&
VerifyConcreteBoundImpl(verifier, impl(), impl_type()) &&
verifier.EndTable();
}
};
template<> inline const org::apache::arrow::computeir::flatbuf::Expression *Preceding::impl_as<org::apache::arrow::computeir::flatbuf::Expression>() const {
return impl_as_Expression();
}
template<> inline const org::apache::arrow::computeir::flatbuf::Unbounded *Preceding::impl_as<org::apache::arrow::computeir::flatbuf::Unbounded>() const {
return impl_as_Unbounded();
}
struct PrecedingBuilder {
typedef Preceding Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_impl_type(org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl impl_type) {
fbb_.AddElement<uint8_t>(Preceding::VT_IMPL_TYPE, static_cast<uint8_t>(impl_type), 0);
}
void add_impl(flatbuffers::Offset<void> impl) {
fbb_.AddOffset(Preceding::VT_IMPL, impl);
}
explicit PrecedingBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
PrecedingBuilder &operator=(const PrecedingBuilder &);
flatbuffers::Offset<Preceding> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Preceding>(end);
fbb_.Required(o, Preceding::VT_IMPL);
return o;
}
};
inline flatbuffers::Offset<Preceding> CreatePreceding(
flatbuffers::FlatBufferBuilder &_fbb,
org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl impl_type = org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl::NONE,
flatbuffers::Offset<void> impl = 0) {
PrecedingBuilder builder_(_fbb);
builder_.add_impl(impl);
builder_.add_impl_type(impl_type);
return builder_.Finish();
}
/// Boundary is following rows, determined by the contained expression
struct Following FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef FollowingBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_IMPL_TYPE = 4,
VT_IMPL = 6
};
org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl impl_type() const {
return static_cast<org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl>(GetField<uint8_t>(VT_IMPL_TYPE, 0));
}
const void *impl() const {
return GetPointer<const void *>(VT_IMPL);
}
template<typename T> const T *impl_as() const;
const org::apache::arrow::computeir::flatbuf::Expression *impl_as_Expression() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl::Expression ? static_cast<const org::apache::arrow::computeir::flatbuf::Expression *>(impl()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::Unbounded *impl_as_Unbounded() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl::Unbounded ? static_cast<const org::apache::arrow::computeir::flatbuf::Unbounded *>(impl()) : nullptr;
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint8_t>(verifier, VT_IMPL_TYPE) &&
VerifyOffsetRequired(verifier, VT_IMPL) &&
VerifyConcreteBoundImpl(verifier, impl(), impl_type()) &&
verifier.EndTable();
}
};
template<> inline const org::apache::arrow::computeir::flatbuf::Expression *Following::impl_as<org::apache::arrow::computeir::flatbuf::Expression>() const {
return impl_as_Expression();
}
template<> inline const org::apache::arrow::computeir::flatbuf::Unbounded *Following::impl_as<org::apache::arrow::computeir::flatbuf::Unbounded>() const {
return impl_as_Unbounded();
}
struct FollowingBuilder {
typedef Following Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_impl_type(org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl impl_type) {
fbb_.AddElement<uint8_t>(Following::VT_IMPL_TYPE, static_cast<uint8_t>(impl_type), 0);
}
void add_impl(flatbuffers::Offset<void> impl) {
fbb_.AddOffset(Following::VT_IMPL, impl);
}
explicit FollowingBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
FollowingBuilder &operator=(const FollowingBuilder &);
flatbuffers::Offset<Following> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Following>(end);
fbb_.Required(o, Following::VT_IMPL);
return o;
}
};
inline flatbuffers::Offset<Following> CreateFollowing(
flatbuffers::FlatBufferBuilder &_fbb,
org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl impl_type = org::apache::arrow::computeir::flatbuf::ConcreteBoundImpl::NONE,
flatbuffers::Offset<void> impl = 0) {
FollowingBuilder builder_(_fbb);
builder_.add_impl(impl);
builder_.add_impl_type(impl_type);
return builder_.Finish();
}
/// Boundary is the current row
struct CurrentRow FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef CurrentRowBuilder Builder;
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
verifier.EndTable();
}
};
struct CurrentRowBuilder {
typedef CurrentRow Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
explicit CurrentRowBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
CurrentRowBuilder &operator=(const CurrentRowBuilder &);
flatbuffers::Offset<CurrentRow> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<CurrentRow>(end);
return o;
}
};
inline flatbuffers::Offset<CurrentRow> CreateCurrentRow(
flatbuffers::FlatBufferBuilder &_fbb) {
CurrentRowBuilder builder_(_fbb);
return builder_.Finish();
}
/// An expression representing a window function call.
struct WindowCall FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef WindowCallBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_EXPRESSION = 4,
VT_KIND = 6,
VT_PARTITIONS = 8,
VT_ORDERINGS = 10,
VT_LOWER_BOUND_TYPE = 12,
VT_LOWER_BOUND = 14,
VT_UPPER_BOUND_TYPE = 16,
VT_UPPER_BOUND = 18
};
/// The expression to operate over
const org::apache::arrow::computeir::flatbuf::Expression *expression() const {
return GetPointer<const org::apache::arrow::computeir::flatbuf::Expression *>(VT_EXPRESSION);
}
/// The kind of window frame
org::apache::arrow::computeir::flatbuf::Frame kind() const {
return static_cast<org::apache::arrow::computeir::flatbuf::Frame>(GetField<uint8_t>(VT_KIND, 0));
}
/// Partition keys
const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>> *partitions() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>> *>(VT_PARTITIONS);
}
/// Sort keys
const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>> *orderings() const {
return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>> *>(VT_ORDERINGS);
}
org::apache::arrow::computeir::flatbuf::Bound lower_bound_type() const {
return static_cast<org::apache::arrow::computeir::flatbuf::Bound>(GetField<uint8_t>(VT_LOWER_BOUND_TYPE, 0));
}
/// Lower window bound
const void *lower_bound() const {
return GetPointer<const void *>(VT_LOWER_BOUND);
}
template<typename T> const T *lower_bound_as() const;
const org::apache::arrow::computeir::flatbuf::Preceding *lower_bound_as_Preceding() const {
return lower_bound_type() == org::apache::arrow::computeir::flatbuf::Bound::Preceding ? static_cast<const org::apache::arrow::computeir::flatbuf::Preceding *>(lower_bound()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::Following *lower_bound_as_Following() const {
return lower_bound_type() == org::apache::arrow::computeir::flatbuf::Bound::Following ? static_cast<const org::apache::arrow::computeir::flatbuf::Following *>(lower_bound()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::CurrentRow *lower_bound_as_CurrentRow() const {
return lower_bound_type() == org::apache::arrow::computeir::flatbuf::Bound::CurrentRow ? static_cast<const org::apache::arrow::computeir::flatbuf::CurrentRow *>(lower_bound()) : nullptr;
}
org::apache::arrow::computeir::flatbuf::Bound upper_bound_type() const {
return static_cast<org::apache::arrow::computeir::flatbuf::Bound>(GetField<uint8_t>(VT_UPPER_BOUND_TYPE, 0));
}
/// Upper window bound
const void *upper_bound() const {
return GetPointer<const void *>(VT_UPPER_BOUND);
}
template<typename T> const T *upper_bound_as() const;
const org::apache::arrow::computeir::flatbuf::Preceding *upper_bound_as_Preceding() const {
return upper_bound_type() == org::apache::arrow::computeir::flatbuf::Bound::Preceding ? static_cast<const org::apache::arrow::computeir::flatbuf::Preceding *>(upper_bound()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::Following *upper_bound_as_Following() const {
return upper_bound_type() == org::apache::arrow::computeir::flatbuf::Bound::Following ? static_cast<const org::apache::arrow::computeir::flatbuf::Following *>(upper_bound()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::CurrentRow *upper_bound_as_CurrentRow() const {
return upper_bound_type() == org::apache::arrow::computeir::flatbuf::Bound::CurrentRow ? static_cast<const org::apache::arrow::computeir::flatbuf::CurrentRow *>(upper_bound()) : nullptr;
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_EXPRESSION) &&
verifier.VerifyTable(expression()) &&
VerifyField<uint8_t>(verifier, VT_KIND) &&
VerifyOffsetRequired(verifier, VT_PARTITIONS) &&
verifier.VerifyVector(partitions()) &&
verifier.VerifyVectorOfTables(partitions()) &&
VerifyOffsetRequired(verifier, VT_ORDERINGS) &&
verifier.VerifyVector(orderings()) &&
verifier.VerifyVectorOfTables(orderings()) &&
VerifyField<uint8_t>(verifier, VT_LOWER_BOUND_TYPE) &&
VerifyOffsetRequired(verifier, VT_LOWER_BOUND) &&
VerifyBound(verifier, lower_bound(), lower_bound_type()) &&
VerifyField<uint8_t>(verifier, VT_UPPER_BOUND_TYPE) &&
VerifyOffsetRequired(verifier, VT_UPPER_BOUND) &&
VerifyBound(verifier, upper_bound(), upper_bound_type()) &&
verifier.EndTable();
}
};
template<> inline const org::apache::arrow::computeir::flatbuf::Preceding *WindowCall::lower_bound_as<org::apache::arrow::computeir::flatbuf::Preceding>() const {
return lower_bound_as_Preceding();
}
template<> inline const org::apache::arrow::computeir::flatbuf::Following *WindowCall::lower_bound_as<org::apache::arrow::computeir::flatbuf::Following>() const {
return lower_bound_as_Following();
}
template<> inline const org::apache::arrow::computeir::flatbuf::CurrentRow *WindowCall::lower_bound_as<org::apache::arrow::computeir::flatbuf::CurrentRow>() const {
return lower_bound_as_CurrentRow();
}
template<> inline const org::apache::arrow::computeir::flatbuf::Preceding *WindowCall::upper_bound_as<org::apache::arrow::computeir::flatbuf::Preceding>() const {
return upper_bound_as_Preceding();
}
template<> inline const org::apache::arrow::computeir::flatbuf::Following *WindowCall::upper_bound_as<org::apache::arrow::computeir::flatbuf::Following>() const {
return upper_bound_as_Following();
}
template<> inline const org::apache::arrow::computeir::flatbuf::CurrentRow *WindowCall::upper_bound_as<org::apache::arrow::computeir::flatbuf::CurrentRow>() const {
return upper_bound_as_CurrentRow();
}
struct WindowCallBuilder {
typedef WindowCall Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_expression(flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> expression) {
fbb_.AddOffset(WindowCall::VT_EXPRESSION, expression);
}
void add_kind(org::apache::arrow::computeir::flatbuf::Frame kind) {
fbb_.AddElement<uint8_t>(WindowCall::VT_KIND, static_cast<uint8_t>(kind), 0);
}
void add_partitions(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>>> partitions) {
fbb_.AddOffset(WindowCall::VT_PARTITIONS, partitions);
}
void add_orderings(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>>> orderings) {
fbb_.AddOffset(WindowCall::VT_ORDERINGS, orderings);
}
void add_lower_bound_type(org::apache::arrow::computeir::flatbuf::Bound lower_bound_type) {
fbb_.AddElement<uint8_t>(WindowCall::VT_LOWER_BOUND_TYPE, static_cast<uint8_t>(lower_bound_type), 0);
}
void add_lower_bound(flatbuffers::Offset<void> lower_bound) {
fbb_.AddOffset(WindowCall::VT_LOWER_BOUND, lower_bound);
}
void add_upper_bound_type(org::apache::arrow::computeir::flatbuf::Bound upper_bound_type) {
fbb_.AddElement<uint8_t>(WindowCall::VT_UPPER_BOUND_TYPE, static_cast<uint8_t>(upper_bound_type), 0);
}
void add_upper_bound(flatbuffers::Offset<void> upper_bound) {
fbb_.AddOffset(WindowCall::VT_UPPER_BOUND, upper_bound);
}
explicit WindowCallBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
WindowCallBuilder &operator=(const WindowCallBuilder &);
flatbuffers::Offset<WindowCall> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<WindowCall>(end);
fbb_.Required(o, WindowCall::VT_EXPRESSION);
fbb_.Required(o, WindowCall::VT_PARTITIONS);
fbb_.Required(o, WindowCall::VT_ORDERINGS);
fbb_.Required(o, WindowCall::VT_LOWER_BOUND);
fbb_.Required(o, WindowCall::VT_UPPER_BOUND);
return o;
}
};
inline flatbuffers::Offset<WindowCall> CreateWindowCall(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> expression = 0,
org::apache::arrow::computeir::flatbuf::Frame kind = org::apache::arrow::computeir::flatbuf::Frame::Rows,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>>> partitions = 0,
flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>>> orderings = 0,
org::apache::arrow::computeir::flatbuf::Bound lower_bound_type = org::apache::arrow::computeir::flatbuf::Bound::NONE,
flatbuffers::Offset<void> lower_bound = 0,
org::apache::arrow::computeir::flatbuf::Bound upper_bound_type = org::apache::arrow::computeir::flatbuf::Bound::NONE,
flatbuffers::Offset<void> upper_bound = 0) {
WindowCallBuilder builder_(_fbb);
builder_.add_upper_bound(upper_bound);
builder_.add_lower_bound(lower_bound);
builder_.add_orderings(orderings);
builder_.add_partitions(partitions);
builder_.add_expression(expression);
builder_.add_upper_bound_type(upper_bound_type);
builder_.add_lower_bound_type(lower_bound_type);
builder_.add_kind(kind);
return builder_.Finish();
}
inline flatbuffers::Offset<WindowCall> CreateWindowCallDirect(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> expression = 0,
org::apache::arrow::computeir::flatbuf::Frame kind = org::apache::arrow::computeir::flatbuf::Frame::Rows,
const std::vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>> *partitions = nullptr,
const std::vector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>> *orderings = nullptr,
org::apache::arrow::computeir::flatbuf::Bound lower_bound_type = org::apache::arrow::computeir::flatbuf::Bound::NONE,
flatbuffers::Offset<void> lower_bound = 0,
org::apache::arrow::computeir::flatbuf::Bound upper_bound_type = org::apache::arrow::computeir::flatbuf::Bound::NONE,
flatbuffers::Offset<void> upper_bound = 0) {
auto partitions__ = partitions ? _fbb.CreateVector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression>>(*partitions) : 0;
auto orderings__ = orderings ? _fbb.CreateVector<flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::SortKey>>(*orderings) : 0;
return org::apache::arrow::computeir::flatbuf::CreateWindowCall(
_fbb,
expression,
kind,
partitions__,
orderings__,
lower_bound_type,
lower_bound,
upper_bound_type,
upper_bound);
}
/// A cast expression
struct Cast FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef CastBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_OPERAND = 4,
VT_TO = 6
};
/// The expression to cast
const org::apache::arrow::computeir::flatbuf::Expression *operand() const {
return GetPointer<const org::apache::arrow::computeir::flatbuf::Expression *>(VT_OPERAND);
}
/// The type to cast to. This value is a `Field` to allow complete representation
/// of arrow types.
///
/// `Type` is unable to completely represent complex types like lists and
/// maps.
const org::apache::arrow::flatbuf::Field *to() const {
return GetPointer<const org::apache::arrow::flatbuf::Field *>(VT_TO);
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_OPERAND) &&
verifier.VerifyTable(operand()) &&
VerifyOffsetRequired(verifier, VT_TO) &&
verifier.VerifyTable(to()) &&
verifier.EndTable();
}
};
struct CastBuilder {
typedef Cast Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_operand(flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> operand) {
fbb_.AddOffset(Cast::VT_OPERAND, operand);
}
void add_to(flatbuffers::Offset<org::apache::arrow::flatbuf::Field> to) {
fbb_.AddOffset(Cast::VT_TO, to);
}
explicit CastBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
CastBuilder &operator=(const CastBuilder &);
flatbuffers::Offset<Cast> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Cast>(end);
fbb_.Required(o, Cast::VT_OPERAND);
fbb_.Required(o, Cast::VT_TO);
return o;
}
};
inline flatbuffers::Offset<Cast> CreateCast(
flatbuffers::FlatBufferBuilder &_fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> operand = 0,
flatbuffers::Offset<org::apache::arrow::flatbuf::Field> to = 0) {
CastBuilder builder_(_fbb);
builder_.add_to(to);
builder_.add_operand(operand);
return builder_.Finish();
}
/// Expression types
///
/// Expressions have a concrete `impl` value, which is a specific operation.
///
/// This is a workaround for flatbuffers' lack of support for direct use of
/// union types.
struct Expression FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
typedef ExpressionBuilder Builder;
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_IMPL_TYPE = 4,
VT_IMPL = 6
};
org::apache::arrow::computeir::flatbuf::ExpressionImpl impl_type() const {
return static_cast<org::apache::arrow::computeir::flatbuf::ExpressionImpl>(GetField<uint8_t>(VT_IMPL_TYPE, 0));
}
const void *impl() const {
return GetPointer<const void *>(VT_IMPL);
}
template<typename T> const T *impl_as() const;
const org::apache::arrow::computeir::flatbuf::Literal *impl_as_Literal() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ExpressionImpl::Literal ? static_cast<const org::apache::arrow::computeir::flatbuf::Literal *>(impl()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::FieldRef *impl_as_FieldRef() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ExpressionImpl::FieldRef ? static_cast<const org::apache::arrow::computeir::flatbuf::FieldRef *>(impl()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::Call *impl_as_Call() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ExpressionImpl::Call ? static_cast<const org::apache::arrow::computeir::flatbuf::Call *>(impl()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::ConditionalCase *impl_as_ConditionalCase() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ExpressionImpl::ConditionalCase ? static_cast<const org::apache::arrow::computeir::flatbuf::ConditionalCase *>(impl()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::SimpleCase *impl_as_SimpleCase() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ExpressionImpl::SimpleCase ? static_cast<const org::apache::arrow::computeir::flatbuf::SimpleCase *>(impl()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::WindowCall *impl_as_WindowCall() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ExpressionImpl::WindowCall ? static_cast<const org::apache::arrow::computeir::flatbuf::WindowCall *>(impl()) : nullptr;
}
const org::apache::arrow::computeir::flatbuf::Cast *impl_as_Cast() const {
return impl_type() == org::apache::arrow::computeir::flatbuf::ExpressionImpl::Cast ? static_cast<const org::apache::arrow::computeir::flatbuf::Cast *>(impl()) : nullptr;
}
bool Verify(flatbuffers::Verifier &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<uint8_t>(verifier, VT_IMPL_TYPE) &&
VerifyOffsetRequired(verifier, VT_IMPL) &&
VerifyExpressionImpl(verifier, impl(), impl_type()) &&
verifier.EndTable();
}
};
template<> inline const org::apache::arrow::computeir::flatbuf::Literal *Expression::impl_as<org::apache::arrow::computeir::flatbuf::Literal>() const {
return impl_as_Literal();
}
template<> inline const org::apache::arrow::computeir::flatbuf::FieldRef *Expression::impl_as<org::apache::arrow::computeir::flatbuf::FieldRef>() const {
return impl_as_FieldRef();
}
template<> inline const org::apache::arrow::computeir::flatbuf::Call *Expression::impl_as<org::apache::arrow::computeir::flatbuf::Call>() const {
return impl_as_Call();
}
template<> inline const org::apache::arrow::computeir::flatbuf::ConditionalCase *Expression::impl_as<org::apache::arrow::computeir::flatbuf::ConditionalCase>() const {
return impl_as_ConditionalCase();
}
template<> inline const org::apache::arrow::computeir::flatbuf::SimpleCase *Expression::impl_as<org::apache::arrow::computeir::flatbuf::SimpleCase>() const {
return impl_as_SimpleCase();
}
template<> inline const org::apache::arrow::computeir::flatbuf::WindowCall *Expression::impl_as<org::apache::arrow::computeir::flatbuf::WindowCall>() const {
return impl_as_WindowCall();
}
template<> inline const org::apache::arrow::computeir::flatbuf::Cast *Expression::impl_as<org::apache::arrow::computeir::flatbuf::Cast>() const {
return impl_as_Cast();
}
struct ExpressionBuilder {
typedef Expression Table;
flatbuffers::FlatBufferBuilder &fbb_;
flatbuffers::uoffset_t start_;
void add_impl_type(org::apache::arrow::computeir::flatbuf::ExpressionImpl impl_type) {
fbb_.AddElement<uint8_t>(Expression::VT_IMPL_TYPE, static_cast<uint8_t>(impl_type), 0);
}
void add_impl(flatbuffers::Offset<void> impl) {
fbb_.AddOffset(Expression::VT_IMPL, impl);
}
explicit ExpressionBuilder(flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
ExpressionBuilder &operator=(const ExpressionBuilder &);
flatbuffers::Offset<Expression> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = flatbuffers::Offset<Expression>(end);
fbb_.Required(o, Expression::VT_IMPL);
return o;
}
};
inline flatbuffers::Offset<Expression> CreateExpression(
flatbuffers::FlatBufferBuilder &_fbb,
org::apache::arrow::computeir::flatbuf::ExpressionImpl impl_type = org::apache::arrow::computeir::flatbuf::ExpressionImpl::NONE,
flatbuffers::Offset<void> impl = 0) {
ExpressionBuilder builder_(_fbb);
builder_.add_impl(impl);
builder_.add_impl_type(impl_type);
return builder_.Finish();
}
inline bool VerifyDeref(flatbuffers::Verifier &verifier, const void *obj, Deref type) {
switch (type) {
case Deref::NONE: {
return true;
}
case Deref::MapKey: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::MapKey *>(obj);
return verifier.VerifyTable(ptr);
}
case Deref::StructField: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::StructField *>(obj);
return verifier.VerifyTable(ptr);
}
case Deref::ArraySubscript: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::ArraySubscript *>(obj);
return verifier.VerifyTable(ptr);
}
case Deref::ArraySlice: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::ArraySlice *>(obj);
return verifier.VerifyTable(ptr);
}
case Deref::FieldIndex: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::FieldIndex *>(obj);
return verifier.VerifyTable(ptr);
}
default: return true;
}
}
inline bool VerifyDerefVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
if (!values || !types) return !values && !types;
if (values->size() != types->size()) return false;
for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
if (!VerifyDeref(
verifier, values->Get(i), types->GetEnum<Deref>(i))) {
return false;
}
}
return true;
}
inline bool VerifyConcreteBoundImpl(flatbuffers::Verifier &verifier, const void *obj, ConcreteBoundImpl type) {
switch (type) {
case ConcreteBoundImpl::NONE: {
return true;
}
case ConcreteBoundImpl::Expression: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::Expression *>(obj);
return verifier.VerifyTable(ptr);
}
case ConcreteBoundImpl::Unbounded: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::Unbounded *>(obj);
return verifier.VerifyTable(ptr);
}
default: return true;
}
}
inline bool VerifyConcreteBoundImplVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
if (!values || !types) return !values && !types;
if (values->size() != types->size()) return false;
for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
if (!VerifyConcreteBoundImpl(
verifier, values->Get(i), types->GetEnum<ConcreteBoundImpl>(i))) {
return false;
}
}
return true;
}
inline bool VerifyBound(flatbuffers::Verifier &verifier, const void *obj, Bound type) {
switch (type) {
case Bound::NONE: {
return true;
}
case Bound::Preceding: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::Preceding *>(obj);
return verifier.VerifyTable(ptr);
}
case Bound::Following: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::Following *>(obj);
return verifier.VerifyTable(ptr);
}
case Bound::CurrentRow: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::CurrentRow *>(obj);
return verifier.VerifyTable(ptr);
}
default: return true;
}
}
inline bool VerifyBoundVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
if (!values || !types) return !values && !types;
if (values->size() != types->size()) return false;
for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
if (!VerifyBound(
verifier, values->Get(i), types->GetEnum<Bound>(i))) {
return false;
}
}
return true;
}
inline bool VerifyExpressionImpl(flatbuffers::Verifier &verifier, const void *obj, ExpressionImpl type) {
switch (type) {
case ExpressionImpl::NONE: {
return true;
}
case ExpressionImpl::Literal: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::Literal *>(obj);
return verifier.VerifyTable(ptr);
}
case ExpressionImpl::FieldRef: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::FieldRef *>(obj);
return verifier.VerifyTable(ptr);
}
case ExpressionImpl::Call: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::Call *>(obj);
return verifier.VerifyTable(ptr);
}
case ExpressionImpl::ConditionalCase: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::ConditionalCase *>(obj);
return verifier.VerifyTable(ptr);
}
case ExpressionImpl::SimpleCase: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::SimpleCase *>(obj);
return verifier.VerifyTable(ptr);
}
case ExpressionImpl::WindowCall: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::WindowCall *>(obj);
return verifier.VerifyTable(ptr);
}
case ExpressionImpl::Cast: {
auto ptr = reinterpret_cast<const org::apache::arrow::computeir::flatbuf::Cast *>(obj);
return verifier.VerifyTable(ptr);
}
default: return true;
}
}
inline bool VerifyExpressionImplVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
if (!values || !types) return !values && !types;
if (values->size() != types->size()) return false;
for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
if (!VerifyExpressionImpl(
verifier, values->Get(i), types->GetEnum<ExpressionImpl>(i))) {
return false;
}
}
return true;
}
inline const org::apache::arrow::computeir::flatbuf::Expression *GetExpression(const void *buf) {
return flatbuffers::GetRoot<org::apache::arrow::computeir::flatbuf::Expression>(buf);
}
inline const org::apache::arrow::computeir::flatbuf::Expression *GetSizePrefixedExpression(const void *buf) {
return flatbuffers::GetSizePrefixedRoot<org::apache::arrow::computeir::flatbuf::Expression>(buf);
}
inline bool VerifyExpressionBuffer(
flatbuffers::Verifier &verifier) {
return verifier.VerifyBuffer<org::apache::arrow::computeir::flatbuf::Expression>(nullptr);
}
inline bool VerifySizePrefixedExpressionBuffer(
flatbuffers::Verifier &verifier) {
return verifier.VerifySizePrefixedBuffer<org::apache::arrow::computeir::flatbuf::Expression>(nullptr);
}
inline void FinishExpressionBuffer(
flatbuffers::FlatBufferBuilder &fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> root) {
fbb.Finish(root);
}
inline void FinishSizePrefixedExpressionBuffer(
flatbuffers::FlatBufferBuilder &fbb,
flatbuffers::Offset<org::apache::arrow::computeir::flatbuf::Expression> root) {
fbb.FinishSizePrefixed(root);
}
} // namespace flatbuf
} // namespace computeir
} // namespace arrow
} // namespace apache
} // namespace org
#endif // FLATBUFFERS_GENERATED_EXPRESSION_ORG_APACHE_ARROW_COMPUTEIR_FLATBUF_H_