#ifndef FLATBUFFERS_COMMON_READER_H
#define FLATBUFFERS_COMMON_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

/* Common FlatBuffers read functionality for C. */

#include "flatcc/flatcc_prologue.h"
#include "flatcc/flatcc_flatbuffers.h"


#define __flatbuffers_read_scalar_at_byteoffset(N, p, o) N ## _read_from_pe((uint8_t *)(p) + (o))
#define __flatbuffers_read_scalar(N, p) N ## _read_from_pe(p)
#define __flatbuffers_read_vt(ID, offset, t)\
flatbuffers_voffset_t offset = 0;\
{   flatbuffers_voffset_t id__tmp, *vt__tmp;\
    FLATCC_ASSERT(t != 0 && "null pointer table access");\
    id__tmp = ID;\
    vt__tmp = (flatbuffers_voffset_t *)((uint8_t *)(t) -\
        __flatbuffers_soffset_read_from_pe(t));\
    if (__flatbuffers_voffset_read_from_pe(vt__tmp) >= sizeof(vt__tmp[0]) * (id__tmp + 3u)) {\
        offset = __flatbuffers_voffset_read_from_pe(vt__tmp + id__tmp + 2);\
    }\
}
#define __flatbuffers_field_present(ID, t) { __flatbuffers_read_vt(ID, offset__tmp, t) return offset__tmp != 0; }
#define __flatbuffers_scalar_field(T, ID, t)\
{\
    __flatbuffers_read_vt(ID, offset__tmp, t)\
    if (offset__tmp) {\
        return (const T *)((uint8_t *)(t) + offset__tmp);\
    }\
    return 0;\
}
#define __flatbuffers_define_scalar_field(ID, N, NK, TK, T, V)\
static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\
{ __flatbuffers_read_vt(ID, offset__tmp, t__tmp)\
  return offset__tmp ? __flatbuffers_read_scalar_at_byteoffset(TK, t__tmp, offset__tmp) : V;\
}\
static inline T N ## _ ## NK(N ## _table_t t__tmp)\
{ __flatbuffers_read_vt(ID, offset__tmp, t__tmp)\
  return offset__tmp ? __flatbuffers_read_scalar_at_byteoffset(TK, t__tmp, offset__tmp) : V;\
}\
static inline const T *N ## _ ## NK ## _get_ptr(N ## _table_t t__tmp)\
__flatbuffers_scalar_field(T, ID, t__tmp)\
static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\
__flatbuffers_field_present(ID, t__tmp)\
__flatbuffers_define_scan_by_scalar_field(N, NK, T)
#define __flatbuffers_define_scalar_optional_field(ID, N, NK, TK, T, V)\
__flatbuffers_define_scalar_field(ID, N, NK, TK, T, V)\
static inline TK ## _option_t N ## _ ## NK ## _option(N ## _table_t t__tmp)\
{ TK ## _option_t ret; __flatbuffers_read_vt(ID, offset__tmp, t__tmp)\
  ret.is_null = offset__tmp == 0; ret.value = offset__tmp ?\
  __flatbuffers_read_scalar_at_byteoffset(TK, t__tmp, offset__tmp) : V;\
  return ret; }
#define __flatbuffers_struct_field(T, ID, t, r)\
{\
    __flatbuffers_read_vt(ID, offset__tmp, t)\
    if (offset__tmp) {\
        return (T)((uint8_t *)(t) + offset__tmp);\
    }\
    FLATCC_ASSERT(!(r) && "required field missing");\
    return 0;\
}
#define __flatbuffers_offset_field(T, ID, t, r, adjust)\
{\
    flatbuffers_uoffset_t *elem__tmp;\
    __flatbuffers_read_vt(ID, offset__tmp, t)\
    if (offset__tmp) {\
        elem__tmp = (flatbuffers_uoffset_t *)((uint8_t *)(t) + offset__tmp);\
        /* Add sizeof so C api can have raw access past header field. */\
        return (T)((uint8_t *)(elem__tmp) + adjust +\
              __flatbuffers_uoffset_read_from_pe(elem__tmp));\
    }\
    FLATCC_ASSERT(!(r) && "required field missing");\
    return 0;\
}
#define __flatbuffers_vector_field(T, ID, t, r) __flatbuffers_offset_field(T, ID, t, r, sizeof(flatbuffers_uoffset_t))
#define __flatbuffers_table_field(T, ID, t, r) __flatbuffers_offset_field(T, ID, t, r, 0)
#define __flatbuffers_define_struct_field(ID, N, NK, T, r)\
static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\
__flatbuffers_struct_field(T, ID, t__tmp, r)\
static inline T N ## _ ## NK(N ## _table_t t__tmp)\
__flatbuffers_struct_field(T, ID, t__tmp, r)\
static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\
__flatbuffers_field_present(ID, t__tmp)
#define __flatbuffers_define_vector_field(ID, N, NK, T, r)\
static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\
__flatbuffers_vector_field(T, ID, t__tmp, r)\
static inline T N ## _ ## NK(N ## _table_t t__tmp)\
__flatbuffers_vector_field(T, ID, t__tmp, r)\
static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\
__flatbuffers_field_present(ID, t__tmp)
#define __flatbuffers_define_table_field(ID, N, NK, T, r)\
static inline T N ## _ ## NK ## _get(N ## _table_t t__tmp)\
__flatbuffers_table_field(T, ID, t__tmp, r)\
static inline T N ## _ ## NK(N ## _table_t t__tmp)\
__flatbuffers_table_field(T, ID, t__tmp, r)\
static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\
__flatbuffers_field_present(ID, t__tmp)
#define __flatbuffers_define_string_field(ID, N, NK, r)\
static inline flatbuffers_string_t N ## _ ## NK ## _get(N ## _table_t t__tmp)\
__flatbuffers_vector_field(flatbuffers_string_t, ID, t__tmp, r)\
static inline flatbuffers_string_t N ## _ ## NK(N ## _table_t t__tmp)\
__flatbuffers_vector_field(flatbuffers_string_t, ID, t__tmp, r)\
static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\
__flatbuffers_field_present(ID, t__tmp)\
__flatbuffers_define_scan_by_string_field(N, NK)
#define __flatbuffers_vec_len(vec)\
{ return (vec) ? (size_t)__flatbuffers_uoffset_read_from_pe((flatbuffers_uoffset_t *)vec - 1) : 0; }
#define __flatbuffers_string_len(s) __flatbuffers_vec_len(s)
static inline size_t flatbuffers_vec_len(const void *vec)
__flatbuffers_vec_len(vec)
#define __flatbuffers_scalar_vec_at(N, vec, i)\
{ FLATCC_ASSERT(flatbuffers_vec_len(vec) > (i) && "index out of range");\
  return __flatbuffers_read_scalar(N, &(vec)[i]); }
#define __flatbuffers_struct_vec_at(vec, i)\
{ FLATCC_ASSERT(flatbuffers_vec_len(vec) > (i) && "index out of range"); return (vec) + (i); }
/* `adjust` skips past the header for string vectors. */
#define __flatbuffers_offset_vec_at(T, vec, i, adjust)\
{ const flatbuffers_uoffset_t *elem__tmp = (vec) + (i);\
  FLATCC_ASSERT(flatbuffers_vec_len(vec) > (i) && "index out of range");\
  return (T)((uint8_t *)(elem__tmp) + (size_t)__flatbuffers_uoffset_read_from_pe(elem__tmp) + (adjust)); }
#define __flatbuffers_define_scalar_vec_len(N)\
static inline size_t N ## _vec_len(N ##_vec_t vec__tmp)\
{ return flatbuffers_vec_len(vec__tmp); }
#define __flatbuffers_define_scalar_vec_at(N, T) \
static inline T N ## _vec_at(N ## _vec_t vec__tmp, size_t i__tmp)\
__flatbuffers_scalar_vec_at(N, vec__tmp, i__tmp)
typedef const char *flatbuffers_string_t;
static inline size_t flatbuffers_string_len(flatbuffers_string_t s)
__flatbuffers_string_len(s)
typedef const flatbuffers_uoffset_t *flatbuffers_string_vec_t;
typedef flatbuffers_uoffset_t *flatbuffers_string_mutable_vec_t;
static inline size_t flatbuffers_string_vec_len(flatbuffers_string_vec_t vec)
__flatbuffers_vec_len(vec)
static inline flatbuffers_string_t flatbuffers_string_vec_at(flatbuffers_string_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(flatbuffers_string_t, vec, i, sizeof(vec[0]))
typedef const void *flatbuffers_generic_t;
typedef void *flatbuffers_mutable_generic_t;
static inline flatbuffers_string_t flatbuffers_string_cast_from_generic(const flatbuffers_generic_t p)
{ return p ? ((const char *)p) + __flatbuffers_uoffset__size() : 0; }
typedef const flatbuffers_uoffset_t *flatbuffers_generic_vec_t;
typedef flatbuffers_uoffset_t *flatbuffers_generic_table_mutable_vec_t;
static inline size_t flatbuffers_generic_vec_len(flatbuffers_generic_vec_t vec)
__flatbuffers_vec_len(vec)
static inline flatbuffers_generic_t flatbuffers_generic_vec_at(flatbuffers_generic_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(flatbuffers_generic_t, vec, i, 0)
static inline flatbuffers_generic_t flatbuffers_generic_vec_at_as_string(flatbuffers_generic_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(flatbuffers_generic_t, vec, i, sizeof(vec[0]))
typedef struct flatbuffers_union {
    flatbuffers_union_type_t type;
    flatbuffers_generic_t value;
} flatbuffers_union_t;
typedef struct flatbuffers_union_vec {
    const flatbuffers_union_type_t *type;
    const flatbuffers_uoffset_t *value;
} flatbuffers_union_vec_t;
typedef struct flatbuffers_mutable_union {
    flatbuffers_union_type_t type;
    flatbuffers_mutable_generic_t value;
} flatbuffers_mutable_union_t;
typedef struct flatbuffers_mutable_union_vec {
    flatbuffers_union_type_t *type;
    flatbuffers_uoffset_t *value;
} flatbuffers_mutable_union_vec_t;
static inline flatbuffers_mutable_union_t flatbuffers_mutable_union_cast(flatbuffers_union_t u__tmp)\
{ flatbuffers_mutable_union_t mu = { u__tmp.type, (flatbuffers_mutable_generic_t)u__tmp.value };\
  return mu; }
static inline flatbuffers_mutable_union_vec_t flatbuffers_mutable_union_vec_cast(flatbuffers_union_vec_t uv__tmp)\
{ flatbuffers_mutable_union_vec_t muv =\
  { (flatbuffers_union_type_t *)uv__tmp.type, (flatbuffers_uoffset_t *)uv__tmp.value }; return muv; }
#define __flatbuffers_union_type_field(ID, t)\
{\
    __flatbuffers_read_vt(ID, offset__tmp, t)\
    return offset__tmp ? __flatbuffers_read_scalar_at_byteoffset(__flatbuffers_utype, t, offset__tmp) : 0;\
}
static inline flatbuffers_string_t flatbuffers_string_cast_from_union(const flatbuffers_union_t u__tmp)\
{ return flatbuffers_string_cast_from_generic(u__tmp.value); }
#define __flatbuffers_define_union_field(NS, ID, N, NK, T, r)\
static inline T ## _union_type_t N ## _ ## NK ## _type_get(N ## _table_t t__tmp)\
__## NS ## union_type_field(((ID) - 1), t__tmp)\
static inline NS ## generic_t N ## _ ## NK ## _get(N ## _table_t t__tmp)\
__## NS ## table_field(NS ## generic_t, ID, t__tmp, r)\
static inline T ## _union_type_t N ## _ ## NK ## _type(N ## _table_t t__tmp)\
__## NS ## union_type_field(((ID) - 1), t__tmp)\
static inline NS ## generic_t N ## _ ## NK(N ## _table_t t__tmp)\
__## NS ## table_field(NS ## generic_t, ID, t__tmp, r)\
static inline int N ## _ ## NK ## _is_present(N ## _table_t t__tmp)\
__## NS ## field_present(ID, t__tmp)\
static inline T ## _union_t N ## _ ## NK ## _union(N ## _table_t t__tmp)\
{ T ## _union_t u__tmp = { 0, 0 }; u__tmp.type = N ## _ ## NK ## _type_get(t__tmp);\
  if (u__tmp.type == 0) { return u__tmp; } u__tmp.value = N ## _ ## NK ## _get(t__tmp); return u__tmp; }\
static inline NS ## string_t N ## _ ## NK ## _as_string(N ## _table_t t__tmp)\
{ return NS ## string_cast_from_generic(N ## _ ## NK ## _get(t__tmp)); }\

#define __flatbuffers_define_union_vector_ops(NS, T)\
static inline size_t T ## _union_vec_len(T ## _union_vec_t uv__tmp)\
{ return NS ## vec_len(uv__tmp.type); }\
static inline T ## _union_t T ## _union_vec_at(T ## _union_vec_t uv__tmp, size_t i__tmp)\
{ T ## _union_t u__tmp = { 0, 0 }; size_t n__tmp = NS ## vec_len(uv__tmp.type);\
  FLATCC_ASSERT(n__tmp > (i__tmp) && "index out of range"); u__tmp.type = uv__tmp.type[i__tmp];\
  /* Unknown type is treated as NONE for schema evolution. */\
  if (u__tmp.type == 0) return u__tmp;\
  u__tmp.value = NS ## generic_vec_at(uv__tmp.value, i__tmp); return u__tmp; }\
static inline NS ## string_t T ## _union_vec_at_as_string(T ## _union_vec_t uv__tmp, size_t i__tmp)\
{ return (NS ## string_t) NS ## generic_vec_at_as_string(uv__tmp.value, i__tmp); }\

#define __flatbuffers_define_union_vector(NS, T)\
typedef NS ## union_vec_t T ## _union_vec_t;\
typedef NS ## mutable_union_vec_t T ## _mutable_union_vec_t;\
static inline T ## _mutable_union_vec_t T ## _mutable_union_vec_cast(T ## _union_vec_t u__tmp)\
{ return NS ## mutable_union_vec_cast(u__tmp); }\
__## NS ## define_union_vector_ops(NS, T)
#define __flatbuffers_define_union(NS, T)\
typedef NS ## union_t T ## _union_t;\
typedef NS ## mutable_union_t T ## _mutable_union_t;\
static inline T ## _mutable_union_t T ## _mutable_union_cast(T ## _union_t u__tmp)\
{ return NS ## mutable_union_cast(u__tmp); }\
__## NS ## define_union_vector(NS, T)
#define __flatbuffers_define_union_vector_field(NS, ID, N, NK, T, r)\
__## NS ## define_vector_field(ID - 1, N, NK ## _type, T ## _vec_t, r)\
__## NS ## define_vector_field(ID, N, NK, flatbuffers_generic_vec_t, r)\
static inline T ## _union_vec_t N ## _ ## NK ## _union(N ## _table_t t__tmp)\
{ T ## _union_vec_t uv__tmp; uv__tmp.type = N ## _ ## NK ## _type_get(t__tmp);\
  uv__tmp.value = N ## _ ## NK(t__tmp);\
  FLATCC_ASSERT(NS ## vec_len(uv__tmp.type) == NS ## vec_len(uv__tmp.value)\
  && "union vector type length mismatch"); return uv__tmp; }
#include <string.h>
static const size_t flatbuffers_not_found = (size_t)-1;
static const size_t flatbuffers_end = (size_t)-1;
#define __flatbuffers_identity(n) (n)
#define __flatbuffers_min(a, b) ((a) < (b) ? (a) : (b))
/* Subtraction doesn't work for unsigned types. */
#define __flatbuffers_scalar_cmp(x, y, n) ((x) < (y) ? -1 : (x) > (y))
static inline int __flatbuffers_string_n_cmp(flatbuffers_string_t v, const char *s, size_t n)
{ size_t nv = flatbuffers_string_len(v); int x = strncmp(v, s, nv < n ? nv : n);
  return x != 0 ? x : nv < n ? -1 : nv > n; }
/* `n` arg unused, but needed by string find macro expansion. */
static inline int __flatbuffers_string_cmp(flatbuffers_string_t v, const char *s, size_t n) { (void)n; return strcmp(v, s); }
/* A = identity if searching scalar vectors rather than key fields. */
/* Returns lowest matching index or not_found. */
#define __flatbuffers_find_by_field(A, V, E, L, K, Kn, T, D)\
{ T v__tmp; size_t a__tmp = 0, b__tmp, m__tmp; if (!(b__tmp = L(V))) { return flatbuffers_not_found; }\
  --b__tmp;\
  while (a__tmp < b__tmp) {\
    m__tmp = a__tmp + ((b__tmp - a__tmp) >> 1);\
    v__tmp = A(E(V, m__tmp));\
    if ((D(v__tmp, (K), (Kn))) < 0) {\
      a__tmp = m__tmp + 1;\
    } else {\
      b__tmp = m__tmp;\
    }\
  }\
  if (a__tmp == b__tmp) {\
    v__tmp = A(E(V, a__tmp));\
    if (D(v__tmp, (K), (Kn)) == 0) {\
       return a__tmp;\
    }\
  }\
  return flatbuffers_not_found;\
}
#define __flatbuffers_find_by_scalar_field(A, V, E, L, K, T)\
__flatbuffers_find_by_field(A, V, E, L, K, 0, T, __flatbuffers_scalar_cmp)
#define __flatbuffers_find_by_string_field(A, V, E, L, K)\
__flatbuffers_find_by_field(A, V, E, L, K, 0, flatbuffers_string_t, __flatbuffers_string_cmp)
#define __flatbuffers_find_by_string_n_field(A, V, E, L, K, Kn)\
__flatbuffers_find_by_field(A, V, E, L, K, Kn, flatbuffers_string_t, __flatbuffers_string_n_cmp)
#define __flatbuffers_define_find_by_scalar_field(N, NK, TK)\
static inline size_t N ## _vec_find_by_ ## NK(N ## _vec_t vec__tmp, TK key__tmp)\
__flatbuffers_find_by_scalar_field(N ## _ ## NK, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, TK)
#define __flatbuffers_define_scalar_find(N, T)\
static inline size_t N ## _vec_find(N ## _vec_t vec__tmp, T key__tmp)\
__flatbuffers_find_by_scalar_field(__flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)
#define __flatbuffers_define_find_by_string_field(N, NK) \
/* Note: find only works on vectors sorted by this field. */\
static inline size_t N ## _vec_find_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp)\
__flatbuffers_find_by_string_field(N ## _ ## NK, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\
static inline size_t N ## _vec_find_n_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\
__flatbuffers_find_by_string_n_field(N ## _ ## NK, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)
#define __flatbuffers_define_default_find_by_scalar_field(N, NK, TK)\
static inline size_t N ## _vec_find(N ## _vec_t vec__tmp, TK key__tmp)\
{ return N ## _vec_find_by_ ## NK(vec__tmp, key__tmp); }
#define __flatbuffers_define_default_find_by_string_field(N, NK) \
static inline size_t N ## _vec_find(N ## _vec_t vec__tmp, const char *s__tmp)\
{ return N ## _vec_find_by_ ## NK(vec__tmp, s__tmp); }\
static inline size_t N ## _vec_find_n(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\
{ return N ## _vec_find_n_by_ ## NK(vec__tmp, s__tmp, n__tmp); }
/* A = identity if searching scalar vectors rather than key fields. */
/* Returns lowest matching index or not_found. */
#define __flatbuffers_scan_by_field(b, e, A, V, E, L, K, Kn, T, D)\
{ T v__tmp; size_t i__tmp;\
  for (i__tmp = b; i__tmp < e; ++i__tmp) {\
    v__tmp = A(E(V, i__tmp));\
    if (D(v__tmp, (K), (Kn)) == 0) {\
       return i__tmp;\
    }\
  }\
  return flatbuffers_not_found;\
}
#define __flatbuffers_rscan_by_field(b, e, A, V, E, L, K, Kn, T, D)\
{ T v__tmp; size_t i__tmp = e;\
  while (i__tmp-- > b) {\
    v__tmp = A(E(V, i__tmp));\
    if (D(v__tmp, (K), (Kn)) == 0) {\
       return i__tmp;\
    }\
  }\
  return flatbuffers_not_found;\
}
#define __flatbuffers_scan_by_scalar_field(b, e, A, V, E, L, K, T)\
__flatbuffers_scan_by_field(b, e, A, V, E, L, K, 0, T, __flatbuffers_scalar_cmp)
#define __flatbuffers_scan_by_string_field(b, e, A, V, E, L, K)\
__flatbuffers_scan_by_field(b, e, A, V, E, L, K, 0, flatbuffers_string_t, __flatbuffers_string_cmp)
#define __flatbuffers_scan_by_string_n_field(b, e, A, V, E, L, K, Kn)\
__flatbuffers_scan_by_field(b, e, A, V, E, L, K, Kn, flatbuffers_string_t, __flatbuffers_string_n_cmp)
#define __flatbuffers_rscan_by_scalar_field(b, e, A, V, E, L, K, T)\
__flatbuffers_rscan_by_field(b, e, A, V, E, L, K, 0, T, __flatbuffers_scalar_cmp)
#define __flatbuffers_rscan_by_string_field(b, e, A, V, E, L, K)\
__flatbuffers_rscan_by_field(b, e, A, V, E, L, K, 0, flatbuffers_string_t, __flatbuffers_string_cmp)
#define __flatbuffers_rscan_by_string_n_field(b, e, A, V, E, L, K, Kn)\
__flatbuffers_rscan_by_field(b, e, A, V, E, L, K, Kn, flatbuffers_string_t, __flatbuffers_string_n_cmp)
#define __flatbuffers_define_scan_by_scalar_field(N, NK, T)\
static inline size_t N ## _vec_scan_by_ ## NK(N ## _vec_t vec__tmp, T key__tmp)\
__flatbuffers_scan_by_scalar_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\
static inline size_t N ## _vec_scan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\
__flatbuffers_scan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\
static inline size_t N ## _vec_rscan_by_ ## NK(N ## _vec_t vec__tmp, T key__tmp)\
__flatbuffers_rscan_by_scalar_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\
static inline size_t N ## _vec_rscan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\
__flatbuffers_rscan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)
#define __flatbuffers_define_scalar_scan(N, T)\
static inline size_t N ## _vec_scan(N ## _vec_t vec__tmp, T key__tmp)\
__flatbuffers_scan_by_scalar_field(0, N ## _vec_len(vec__tmp), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\
static inline size_t N ## _vec_scan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\
__flatbuffers_scan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\
static inline size_t N ## _vec_rscan(N ## _vec_t vec__tmp, T key__tmp)\
__flatbuffers_rscan_by_scalar_field(0, N ## _vec_len(vec__tmp), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)\
static inline size_t N ## _vec_rscan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, T key__tmp)\
__flatbuffers_rscan_by_scalar_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), __flatbuffers_identity, vec__tmp, N ## _vec_at, N ## _vec_len, key__tmp, T)
#define __flatbuffers_define_scan_by_string_field(N, NK) \
static inline size_t N ## _vec_scan_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp)\
__flatbuffers_scan_by_string_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\
static inline size_t N ## _vec_scan_n_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\
__flatbuffers_scan_by_string_n_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)\
static inline size_t N ## _vec_scan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\
__flatbuffers_scan_by_string_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\
static inline size_t N ## _vec_scan_ex_n_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\
__flatbuffers_scan_by_string_n_field(begin__tmp, __flatbuffers_min( end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)\
static inline size_t N ## _vec_rscan_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp)\
__flatbuffers_rscan_by_string_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\
static inline size_t N ## _vec_rscan_n_by_ ## NK(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\
__flatbuffers_rscan_by_string_n_field(0, N ## _vec_len(vec__tmp), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)\
static inline size_t N ## _vec_rscan_ex_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\
__flatbuffers_rscan_by_string_field(begin__tmp, __flatbuffers_min(end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp)\
static inline size_t N ## _vec_rscan_ex_n_by_ ## NK(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\
__flatbuffers_rscan_by_string_n_field(begin__tmp, __flatbuffers_min( end__tmp, N ## _vec_len(vec__tmp)), N ## _ ## NK ## _get, vec__tmp, N ## _vec_at, N ## _vec_len, s__tmp, n__tmp)
#define __flatbuffers_define_default_scan_by_scalar_field(N, NK, TK)\
static inline size_t N ## _vec_scan(N ## _vec_t vec__tmp, TK key__tmp)\
{ return N ## _vec_scan_by_ ## NK(vec__tmp, key__tmp); }\
static inline size_t N ## _vec_scan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, TK key__tmp)\
{ return N ## _vec_scan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, key__tmp); }\
static inline size_t N ## _vec_rscan(N ## _vec_t vec__tmp, TK key__tmp)\
{ return N ## _vec_rscan_by_ ## NK(vec__tmp, key__tmp); }\
static inline size_t N ## _vec_rscan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, TK key__tmp)\
{ return N ## _vec_rscan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, key__tmp); }
#define __flatbuffers_define_default_scan_by_string_field(N, NK) \
static inline size_t N ## _vec_scan(N ## _vec_t vec__tmp, const char *s__tmp)\
{ return N ## _vec_scan_by_ ## NK(vec__tmp, s__tmp); }\
static inline size_t N ## _vec_scan_n(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\
{ return N ## _vec_scan_n_by_ ## NK(vec__tmp, s__tmp, n__tmp); }\
static inline size_t N ## _vec_scan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\
{ return N ## _vec_scan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp); }\
static inline size_t N ## _vec_scan_ex_n(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\
{ return N ## _vec_scan_ex_n_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp, n__tmp); }\
static inline size_t N ## _vec_rscan(N ## _vec_t vec__tmp, const char *s__tmp)\
{ return N ## _vec_rscan_by_ ## NK(vec__tmp, s__tmp); }\
static inline size_t N ## _vec_rscan_n(N ## _vec_t vec__tmp, const char *s__tmp, size_t n__tmp)\
{ return N ## _vec_rscan_n_by_ ## NK(vec__tmp, s__tmp, n__tmp); }\
static inline size_t N ## _vec_rscan_ex(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp)\
{ return N ## _vec_rscan_ex_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp); }\
static inline size_t N ## _vec_rscan_ex_n(N ## _vec_t vec__tmp, size_t begin__tmp, size_t end__tmp, const char *s__tmp, size_t n__tmp)\
{ return N ## _vec_rscan_ex_n_by_ ## NK(vec__tmp, begin__tmp, end__tmp, s__tmp, n__tmp); }
#define __flatbuffers_heap_sort(N, X, A, E, L, TK, TE, D, S)\
static inline void __ ## N ## X ## __heap_sift_down(\
        N ## _mutable_vec_t vec__tmp, size_t start__tmp, size_t end__tmp)\
{ size_t child__tmp, root__tmp; TK v1__tmp, v2__tmp, vroot__tmp;\
  root__tmp = start__tmp;\
  while ((root__tmp << 1) <= end__tmp) {\
    child__tmp = root__tmp << 1;\
    if (child__tmp < end__tmp) {\
      v1__tmp = A(E(vec__tmp, child__tmp));\
      v2__tmp = A(E(vec__tmp, child__tmp + 1));\
      if (D(v1__tmp, v2__tmp) < 0) {\
        child__tmp++;\
      }\
    }\
    vroot__tmp = A(E(vec__tmp, root__tmp));\
    v1__tmp = A(E(vec__tmp, child__tmp));\
    if (D(vroot__tmp, v1__tmp) < 0) {\
      S(vec__tmp, root__tmp, child__tmp, TE);\
      root__tmp = child__tmp;\
    } else {\
      return;\
    }\
  }\
}\
static inline void __ ## N ## X ## __heap_sort(N ## _mutable_vec_t vec__tmp)\
{ size_t start__tmp, end__tmp, size__tmp;\
  size__tmp = L(vec__tmp); if (size__tmp == 0) return; end__tmp = size__tmp - 1; start__tmp = size__tmp >> 1;\
  do { __ ## N ## X ## __heap_sift_down(vec__tmp, start__tmp, end__tmp); } while (start__tmp--);\
  while (end__tmp > 0) { \
    S(vec__tmp, 0, end__tmp, TE);\
    __ ## N ## X ## __heap_sift_down(vec__tmp, 0, --end__tmp); } }
#define __flatbuffers_define_sort_by_field(N, NK, TK, TE, D, S)\
  __flatbuffers_heap_sort(N, _sort_by_ ## NK, N ## _ ## NK ## _get, N ## _vec_at, N ## _vec_len, TK, TE, D, S)\
static inline void N ## _vec_sort_by_ ## NK(N ## _mutable_vec_t vec__tmp)\
{ __ ## N ## _sort_by_ ## NK ## __heap_sort(vec__tmp); }
#define __flatbuffers_define_sort(N, TK, TE, D, S)\
__flatbuffers_heap_sort(N, , __flatbuffers_identity, N ## _vec_at, N ## _vec_len, TK, TE, D, S)\
static inline void N ## _vec_sort(N ## _mutable_vec_t vec__tmp) { __ ## N ## __heap_sort(vec__tmp); }
#define __flatbuffers_scalar_diff(x, y) ((x) < (y) ? -1 : (x) > (y))
#define __flatbuffers_string_diff(x, y) __flatbuffers_string_n_cmp((x), (const char *)(y), flatbuffers_string_len(y))
#define __flatbuffers_value_swap(vec, a, b, TE) { TE x__tmp = vec[b]; vec[b] = vec[a]; vec[a] = x__tmp; }
#define __flatbuffers_uoffset_swap(vec, a, b, TE)\
{ TE ta__tmp, tb__tmp, d__tmp;\
  d__tmp = (TE)((a - b) * sizeof(vec[0]));\
  ta__tmp =  __flatbuffers_uoffset_read_from_pe(vec + b) - d__tmp;\
  tb__tmp =  __flatbuffers_uoffset_read_from_pe(vec + a) + d__tmp;\
  __flatbuffers_uoffset_write_to_pe(vec + a, ta__tmp);\
  __flatbuffers_uoffset_write_to_pe(vec + b, tb__tmp); }
#define __flatbuffers_scalar_swap(vec, a, b, TE) __flatbuffers_value_swap(vec, a, b, TE)
#define __flatbuffers_string_swap(vec, a, b, TE) __flatbuffers_uoffset_swap(vec, a, b, TE)
#define __flatbuffers_struct_swap(vec, a, b, TE) __flatbuffers_value_swap(vec, a, b, TE)
#define __flatbuffers_table_swap(vec, a, b, TE) __flatbuffers_uoffset_swap(vec, a, b, TE)
#define __flatbuffers_define_struct_sort_by_scalar_field(N, NK, TK, TE)\
  __flatbuffers_define_sort_by_field(N, NK, TK, TE, __flatbuffers_scalar_diff, __flatbuffers_struct_swap)
#define __flatbuffers_define_table_sort_by_scalar_field(N, NK, TK)\
  __flatbuffers_define_sort_by_field(N, NK, TK, flatbuffers_uoffset_t, __flatbuffers_scalar_diff, __flatbuffers_table_swap)
#define __flatbuffers_define_table_sort_by_string_field(N, NK)\
  __flatbuffers_define_sort_by_field(N, NK, flatbuffers_string_t, flatbuffers_uoffset_t, __flatbuffers_string_diff, __flatbuffers_table_swap)
#define __flatbuffers_define_scalar_sort(N, T) __flatbuffers_define_sort(N, T, T, __flatbuffers_scalar_diff, __flatbuffers_scalar_swap)
#define __flatbuffers_define_string_sort() __flatbuffers_define_sort(flatbuffers_string, flatbuffers_string_t, flatbuffers_uoffset_t, __flatbuffers_string_diff, __flatbuffers_string_swap)
#define __flatbuffers_sort_vector_field(N, NK, T, t)\
{ T ## _mutable_vec_t v__tmp = (T ## _mutable_vec_t) N ## _ ## NK ## _get(t);\
  if (v__tmp) T ## _vec_sort(v__tmp); }
#define __flatbuffers_sort_table_field(N, NK, T, t)\
{ T ## _sort((T ## _mutable_table_t)N ## _ ## NK ## _get(t)); }
#define __flatbuffers_sort_union_field(N, NK, T, t)\
{ T ## _sort(T ## _mutable_union_cast(N ## _ ## NK ## _union(t))); }
#define __flatbuffers_sort_table_vector_field_elements(N, NK, T, t)\
{ T ## _vec_t v__tmp = N ## _ ## NK ## _get(t); size_t i__tmp, n__tmp;\
  n__tmp = T ## _vec_len(v__tmp); for (i__tmp = 0; i__tmp < n__tmp; ++i__tmp) {\
  T ## _sort((T ## _mutable_table_t)T ## _vec_at(v__tmp, i__tmp)); }}
#define __flatbuffers_sort_union_vector_field_elements(N, NK, T, t)\
{ T ## _union_vec_t v__tmp = N ## _ ## NK ## _union(t); size_t i__tmp, n__tmp;\
  n__tmp = T ## _union_vec_len(v__tmp); for (i__tmp = 0; i__tmp < n__tmp; ++i__tmp) {\
  T ## _sort(T ## _mutable_union_cast(T ## _union_vec_at(v__tmp, i__tmp))); }}
#define __flatbuffers_define_scalar_vector(N, T)\
typedef const T *N ## _vec_t;\
typedef T *N ## _mutable_vec_t;\
__flatbuffers_define_scalar_vec_len(N)\
__flatbuffers_define_scalar_vec_at(N, T)\
__flatbuffers_define_scalar_find(N, T)\
__flatbuffers_define_scalar_scan(N, T)\
__flatbuffers_define_scalar_sort(N, T)

#define __flatbuffers_define_integer_type(N, T, W)\
__flatcc_define_integer_accessors(N, T, W, flatbuffers_endian)\
__flatbuffers_define_scalar_vector(N, T)
__flatbuffers_define_scalar_vector(flatbuffers_bool, flatbuffers_bool_t)
__flatbuffers_define_scalar_vector(flatbuffers_char, char)
__flatbuffers_define_scalar_vector(flatbuffers_uint8, uint8_t)
__flatbuffers_define_scalar_vector(flatbuffers_int8, int8_t)
__flatbuffers_define_scalar_vector(flatbuffers_uint16, uint16_t)
__flatbuffers_define_scalar_vector(flatbuffers_int16, int16_t)
__flatbuffers_define_scalar_vector(flatbuffers_uint32, uint32_t)
__flatbuffers_define_scalar_vector(flatbuffers_int32, int32_t)
__flatbuffers_define_scalar_vector(flatbuffers_uint64, uint64_t)
__flatbuffers_define_scalar_vector(flatbuffers_int64, int64_t)
__flatbuffers_define_scalar_vector(flatbuffers_float, float)
__flatbuffers_define_scalar_vector(flatbuffers_double, double)
__flatbuffers_define_scalar_vector(flatbuffers_union_type, flatbuffers_union_type_t)
static inline size_t flatbuffers_string_vec_find(flatbuffers_string_vec_t vec, const char *s)
__flatbuffers_find_by_string_field(__flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s)
static inline size_t flatbuffers_string_vec_find_n(flatbuffers_string_vec_t vec, const char *s, size_t n)
__flatbuffers_find_by_string_n_field(__flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n)
static inline size_t flatbuffers_string_vec_scan(flatbuffers_string_vec_t vec, const char *s)
__flatbuffers_scan_by_string_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s)
static inline size_t flatbuffers_string_vec_scan_n(flatbuffers_string_vec_t vec, const char *s, size_t n)
__flatbuffers_scan_by_string_n_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n)
static inline size_t flatbuffers_string_vec_scan_ex(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s)
__flatbuffers_scan_by_string_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s)
static inline size_t flatbuffers_string_vec_scan_ex_n(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s, size_t n)
__flatbuffers_scan_by_string_n_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n)
static inline size_t flatbuffers_string_vec_rscan(flatbuffers_string_vec_t vec, const char *s)
__flatbuffers_rscan_by_string_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s)
static inline size_t flatbuffers_string_vec_rscan_n(flatbuffers_string_vec_t vec, const char *s, size_t n)
__flatbuffers_rscan_by_string_n_field(0, flatbuffers_string_vec_len(vec), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n)
static inline size_t flatbuffers_string_vec_rscan_ex(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s)
__flatbuffers_rscan_by_string_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s)
static inline size_t flatbuffers_string_vec_rscan_ex_n(flatbuffers_string_vec_t vec, size_t begin, size_t end, const char *s, size_t n)
__flatbuffers_rscan_by_string_n_field(begin, __flatbuffers_min(end, flatbuffers_string_vec_len(vec)), __flatbuffers_identity, vec, flatbuffers_string_vec_at, flatbuffers_string_vec_len, s, n)
__flatbuffers_define_string_sort()
#define __flatbuffers_define_struct_scalar_fixed_array_field(N, NK, TK, T, L)\
static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp, size_t i__tmp)\
{ if (!t__tmp || i__tmp >= L) return 0;\
  return __flatbuffers_read_scalar(TK, &(t__tmp->NK[i__tmp])); }\
static inline const T *N ## _ ## NK ## _get_ptr(N ## _struct_t t__tmp)\
{ return t__tmp ? t__tmp->NK : 0; }\
static inline size_t N ## _ ## NK ## _get_len(void) { return L; }\
static inline T N ## _ ## NK (N ## _struct_t t__tmp, size_t i__tmp)\
{ return N ## _ ## NK ## _get(t__tmp, i__tmp); }
#define __flatbuffers_define_struct_struct_fixed_array_field(N, NK, T, L)\
static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp, size_t i__tmp)\
{ if (!t__tmp || i__tmp >= L) return 0; return t__tmp->NK + i__tmp; }static inline T N ## _ ## NK ## _get_ptr(N ## _struct_t t__tmp)\
{ return t__tmp ? t__tmp->NK : 0; }\
static inline size_t N ## _ ## NK ## _get_len(void) { return L; }\
static inline T N ## _ ## NK(N ## _struct_t t__tmp, size_t i__tmp)\
{ if (!t__tmp || i__tmp >= L) return 0; return t__tmp->NK + i__tmp; }
#define __flatbuffers_define_struct_scalar_field(N, NK, TK, T)\
static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp)\
{ return t__tmp ? __flatbuffers_read_scalar(TK, &(t__tmp->NK)) : 0; }\
static inline const T *N ## _ ## NK ## _get_ptr(N ## _struct_t t__tmp)\
{ return t__tmp ? &(t__tmp->NK) : 0; }\
static inline T N ## _ ## NK (N ## _struct_t t__tmp)\
{ return t__tmp ? __flatbuffers_read_scalar(TK, &(t__tmp->NK)) : 0; }\
__flatbuffers_define_scan_by_scalar_field(N, NK, T)
#define __flatbuffers_define_struct_struct_field(N, NK, T)\
static inline T N ## _ ## NK ## _get(N ## _struct_t t__tmp) { return t__tmp ? &(t__tmp->NK) : 0; }\
static inline T N ## _ ## NK (N ## _struct_t t__tmp) { return t__tmp ? &(t__tmp->NK) : 0; }
/* If fid is null, the function returns true without testing as buffer is not expected to have any id. */
static inline int flatbuffers_has_identifier(const void *buffer, const char *fid)
{ flatbuffers_thash_t id, id2 = 0; if (fid == 0) { return 1; };
  id2 = flatbuffers_type_hash_from_string(fid);
  id = __flatbuffers_thash_read_from_pe(((flatbuffers_uoffset_t *)buffer) + 1);
  return id2 == 0 || id == id2; }
static inline int flatbuffers_has_type_hash(const void *buffer, flatbuffers_thash_t thash)
{ return thash == 0 || (__flatbuffers_thash_read_from_pe((flatbuffers_uoffset_t *)buffer + 1) == thash); }

static inline flatbuffers_thash_t flatbuffers_get_type_hash(const void *buffer)
{ return __flatbuffers_thash_read_from_pe((flatbuffers_uoffset_t *)buffer + 1); }

#define flatbuffers_verify_endian() flatbuffers_has_identifier("\x00\x00\x00\x00" "1234", "1234")
static inline void *flatbuffers_read_size_prefix(void *b, size_t *size_out)
{ if (size_out) { *size_out = (size_t)__flatbuffers_uoffset_read_from_pe(b); }
  return (uint8_t *)b + sizeof(flatbuffers_uoffset_t); }
/* Null file identifier accepts anything, otherwise fid should be 4 characters. */
#define __flatbuffers_read_root(T, K, buffer, fid)\
  ((!buffer || !flatbuffers_has_identifier(buffer, fid)) ? 0 :\
  ((T ## _ ## K ## t)(((uint8_t *)buffer) +\
    __flatbuffers_uoffset_read_from_pe(buffer))))
#define __flatbuffers_read_typed_root(T, K, buffer, thash)\
  ((!buffer || !flatbuffers_has_type_hash(buffer, thash)) ? 0 :\
  ((T ## _ ## K ## t)(((uint8_t *)buffer) +\
    __flatbuffers_uoffset_read_from_pe(buffer))))
#define __flatbuffers_nested_buffer_as_root(C, N, T, K)\
static inline T ## _ ## K ## t C ## _ ## N ## _as_root_with_identifier(C ## _ ## table_t t__tmp, const char *fid__tmp)\
{ const uint8_t *buffer__tmp = C ## _ ## N(t__tmp); return __flatbuffers_read_root(T, K, buffer__tmp, fid__tmp); }\
static inline T ## _ ## K ## t C ## _ ## N ## _as_typed_root(C ## _ ## table_t t__tmp)\
{ const uint8_t *buffer__tmp = C ## _ ## N(t__tmp); return __flatbuffers_read_root(T, K, buffer__tmp, C ## _ ## type_identifier); }\
static inline T ## _ ## K ## t C ## _ ## N ## _as_root(C ## _ ## table_t t__tmp)\
{ const char *fid__tmp = T ## _file_identifier;\
  const uint8_t *buffer__tmp = C ## _ ## N(t__tmp); return __flatbuffers_read_root(T, K, buffer__tmp, fid__tmp); }
#define __flatbuffers_buffer_as_root(N, K)\
static inline N ## _ ## K ## t N ## _as_root_with_identifier(const void *buffer__tmp, const char *fid__tmp)\
{ return __flatbuffers_read_root(N, K, buffer__tmp, fid__tmp); }\
static inline N ## _ ## K ## t N ## _as_root_with_type_hash(const void *buffer__tmp, flatbuffers_thash_t thash__tmp)\
{ return __flatbuffers_read_typed_root(N, K, buffer__tmp, thash__tmp); }\
static inline N ## _ ## K ## t N ## _as_root(const void *buffer__tmp)\
{ const char *fid__tmp = N ## _file_identifier;\
  return __flatbuffers_read_root(N, K, buffer__tmp, fid__tmp); }\
static inline N ## _ ## K ## t N ## _as_typed_root(const void *buffer__tmp)\
{ return __flatbuffers_read_typed_root(N, K, buffer__tmp, N ## _type_hash); }
#define __flatbuffers_struct_as_root(N) __flatbuffers_buffer_as_root(N, struct_)
#define __flatbuffers_table_as_root(N) __flatbuffers_buffer_as_root(N, table_)

#include "flatcc/flatcc_epilogue.h"
#endif /* FLATBUFFERS_COMMON_H */
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#define FLATBUFFERS_COMMON_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

/* Common FlatBuffers build functionality for C. */

#include "flatcc/flatcc_prologue.h"
#ifndef FLATBUILDER_H
#include "flatcc/flatcc_builder.h"
#endif
typedef flatcc_builder_t flatbuffers_builder_t;
typedef flatcc_builder_ref_t flatbuffers_ref_t;
typedef flatcc_builder_ref_t flatbuffers_vec_ref_t;
typedef flatcc_builder_union_ref_t flatbuffers_union_ref_t;
typedef flatcc_builder_union_vec_ref_t flatbuffers_union_vec_ref_t;
/* integer return code (ref and ptr always fail on 0) */
#define flatbuffers_failed(x) ((x) < 0)
typedef flatbuffers_ref_t flatbuffers_root_t;
#define flatbuffers_root(ref) ((flatbuffers_root_t)(ref))

#define __flatbuffers_memoize_begin(B, src)\
do { flatcc_builder_ref_t _ref; if ((_ref = flatcc_builder_refmap_find((B), (src)))) return _ref; } while (0)
#define __flatbuffers_memoize_end(B, src, op) do { return flatcc_builder_refmap_insert((B), (src), (op)); } while (0)
#define __flatbuffers_memoize(B, src, op) do { __flatbuffers_memoize_begin(B, src); __flatbuffers_memoize_end(B, src, op); } while (0)

#define __flatbuffers_build_buffer(NS)\
typedef NS ## ref_t NS ## buffer_ref_t;\
static inline int NS ## buffer_start(NS ## builder_t *B, const NS ##fid_t fid)\
{ return flatcc_builder_start_buffer(B, fid, 0, 0); }\
static inline int NS ## buffer_start_with_size(NS ## builder_t *B, const NS ##fid_t fid)\
{ return flatcc_builder_start_buffer(B, fid, 0, flatcc_builder_with_size); }\
static inline int NS ## buffer_start_aligned(NS ## builder_t *B, NS ##fid_t fid, uint16_t block_align)\
{ return flatcc_builder_start_buffer(B, fid, block_align, 0); }\
static inline int NS ## buffer_start_aligned_with_size(NS ## builder_t *B, NS ##fid_t fid, uint16_t block_align)\
{ return flatcc_builder_start_buffer(B, fid, block_align, flatcc_builder_with_size); }\
static inline NS ## buffer_ref_t NS ## buffer_end(NS ## builder_t *B, NS ## ref_t root)\
{ return flatcc_builder_end_buffer(B, root); }

#define __flatbuffers_build_table_root(NS, N, FID, TFID)\
static inline int N ## _start_as_root(NS ## builder_t *B)\
{ return NS ## buffer_start(B, FID) ? -1 : N ## _start(B); }\
static inline int N ## _start_as_root_with_size(NS ## builder_t *B)\
{ return NS ## buffer_start_with_size(B, FID) ? -1 : N ## _start(B); }\
static inline int N ## _start_as_typed_root(NS ## builder_t *B)\
{ return NS ## buffer_start(B, TFID) ? -1 : N ## _start(B); }\
static inline int N ## _start_as_typed_root_with_size(NS ## builder_t *B)\
{ return NS ## buffer_start_with_size(B, TFID) ? -1 : N ## _start(B); }\
static inline NS ## buffer_ref_t N ## _end_as_root(NS ## builder_t *B)\
{ return NS ## buffer_end(B, N ## _end(B)); }\
static inline NS ## buffer_ref_t N ## _end_as_typed_root(NS ## builder_t *B)\
{ return NS ## buffer_end(B, N ## _end(B)); }\
static inline NS ## buffer_ref_t N ## _create_as_root(NS ## builder_t *B __ ## N ## _formal_args)\
{ if (NS ## buffer_start(B, FID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\
static inline NS ## buffer_ref_t N ## _create_as_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\
{ if (NS ## buffer_start_with_size(B, FID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\
static inline NS ## buffer_ref_t N ## _create_as_typed_root(NS ## builder_t *B __ ## N ## _formal_args)\
{ if (NS ## buffer_start(B, TFID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\
static inline NS ## buffer_ref_t N ## _create_as_typed_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\
{ if (NS ## buffer_start_with_size(B, TFID)) return 0; return NS ## buffer_end(B, N ## _create(B __ ## N ## _call_args)); }\
static inline NS ## buffer_ref_t N ## _clone_as_root(NS ## builder_t *B, N ## _table_t t)\
{ if (NS ## buffer_start(B, FID)) return 0; return NS ## buffer_end(B, N ## _clone(B, t)); }\
static inline NS ## buffer_ref_t N ## _clone_as_root_with_size(NS ## builder_t *B, N ## _table_t t)\
{ if (NS ## buffer_start_with_size(B, FID)) return 0; return NS ## buffer_end(B, N ## _clone(B, t)); }\
static inline NS ## buffer_ref_t N ## _clone_as_typed_root(NS ## builder_t *B, N ## _table_t t)\
{ if (NS ## buffer_start(B, TFID)) return 0;return NS ## buffer_end(B, N ## _clone(B, t)); }\
static inline NS ## buffer_ref_t N ## _clone_as_typed_root_with_size(NS ## builder_t *B, N ## _table_t t)\
{ if (NS ## buffer_start_with_size(B, TFID)) return 0; return NS ## buffer_end(B, N ## _clone(B, t)); }

#define __flatbuffers_build_table_prolog(NS, N, FID, TFID)\
__flatbuffers_build_table_vector_ops(NS, N ## _vec, N)\
__flatbuffers_build_table_root(NS, N, FID, TFID)

#define __flatbuffers_build_struct_root(NS, N, A, FID, TFID)\
static inline N ## _t *N ## _start_as_root(NS ## builder_t *B)\
{ return NS ## buffer_start(B, FID) ? 0 : N ## _start(B); }\
static inline N ## _t *N ## _start_as_root_with_size(NS ## builder_t *B)\
{ return NS ## buffer_start_with_size(B, FID) ? 0 : N ## _start(B); }\
static inline N ## _t *N ## _start_as_typed_root(NS ## builder_t *B)\
{ return NS ## buffer_start(B, TFID) ? 0 : N ## _start(B); }\
static inline N ## _t *N ## _start_as_typed_root_with_size(NS ## builder_t *B)\
{ return NS ## buffer_start_with_size(B, TFID) ? 0 : N ## _start(B); }\
static inline NS ## buffer_ref_t N ## _end_as_root(NS ## builder_t *B)\
{ return NS ## buffer_end(B, N ## _end(B)); }\
static inline NS ## buffer_ref_t N ## _end_as_typed_root(NS ## builder_t *B)\
{ return NS ## buffer_end(B, N ## _end(B)); }\
static inline NS ## buffer_ref_t N ## _end_pe_as_root(NS ## builder_t *B)\
{ return NS ## buffer_end(B, N ## _end_pe(B)); }\
static inline NS ## buffer_ref_t N ## _end_pe_as_typed_root(NS ## builder_t *B)\
{ return NS ## buffer_end(B, N ## _end_pe(B)); }\
static inline NS ## buffer_ref_t N ## _create_as_root(NS ## builder_t *B __ ## N ## _formal_args)\
{ return flatcc_builder_create_buffer(B, FID, 0,\
  N ## _create(B __ ## N ## _call_args), A, 0); }\
static inline NS ## buffer_ref_t N ## _create_as_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\
{ return flatcc_builder_create_buffer(B, FID, 0,\
  N ## _create(B __ ## N ## _call_args), A, flatcc_builder_with_size); }\
static inline NS ## buffer_ref_t N ## _create_as_typed_root(NS ## builder_t *B __ ## N ## _formal_args)\
{ return flatcc_builder_create_buffer(B, TFID, 0,\
  N ## _create(B __ ## N ## _call_args), A, 0); }\
static inline NS ## buffer_ref_t N ## _create_as_typed_root_with_size(NS ## builder_t *B __ ## N ## _formal_args)\
{ return flatcc_builder_create_buffer(B, TFID, 0,\
  N ## _create(B __ ## N ## _call_args), A, flatcc_builder_with_size); }\
static inline NS ## buffer_ref_t N ## _clone_as_root(NS ## builder_t *B, N ## _struct_t p)\
{ return flatcc_builder_create_buffer(B, FID, 0, N ## _clone(B, p), A, 0); }\
static inline NS ## buffer_ref_t N ## _clone_as_root_with_size(NS ## builder_t *B, N ## _struct_t p)\
{ return flatcc_builder_create_buffer(B, FID, 0, N ## _clone(B, p), A, flatcc_builder_with_size); }\
static inline NS ## buffer_ref_t N ## _clone_as_typed_root(NS ## builder_t *B, N ## _struct_t p)\
{ return flatcc_builder_create_buffer(B, TFID, 0, N ## _clone(B, p), A, 0); }\
static inline NS ## buffer_ref_t N ## _clone_as_typed_root_with_size(NS ## builder_t *B, N ## _struct_t p)\
{ return flatcc_builder_create_buffer(B, TFID, 0, N ## _clone(B, p), A, flatcc_builder_with_size); }

#define __flatbuffers_build_nested_table_root(NS, N, TN, FID, TFID)\
static inline int N ## _start_as_root(NS ## builder_t *B)\
{ return NS ## buffer_start(B, FID) ? -1 : TN ## _start(B); }\
static inline int N ## _start_as_typed_root(NS ## builder_t *B)\
{ return NS ## buffer_start(B, TFID) ? -1 : TN ## _start(B); }\
static inline int N ## _end_as_root(NS ## builder_t *B)\
{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\
static inline int N ## _end_as_typed_root(NS ## builder_t *B)\
{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\
static inline int N ## _nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\
{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\
  align ? align : 8, FLATBUFFERS_COUNT_MAX(1))); }\
static inline int N ## _typed_nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\
{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\
  align ? align : 8, FLATBUFFERS_COUNT_MAX(1))); }\
static inline int N ## _clone_as_root(NS ## builder_t *B, TN ## _table_t t)\
{ return N ## _add(B, TN ## _clone_as_root(B, t)); }\
static inline int N ## _clone_as_typed_root(NS ## builder_t *B, TN ## _table_t t)\
{ return N ## _add(B, TN ## _clone_as_typed_root(B, t)); }

#define __flatbuffers_build_nested_struct_root(NS, N, TN, A, FID, TFID)\
static inline TN ## _t *N ## _start_as_root(NS ## builder_t *B)\
{ return NS ## buffer_start(B, FID) ? 0 : TN ## _start(B); }\
static inline TN ## _t *N ## _start_as_typed_root(NS ## builder_t *B)\
{ return NS ## buffer_start(B, FID) ? 0 : TN ## _start(B); }\
static inline int N ## _end_as_root(NS ## builder_t *B)\
{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\
static inline int N ## _end_as_typed_root(NS ## builder_t *B)\
{ return N ## _add(B, NS ## buffer_end(B, TN ## _end(B))); }\
static inline int N ## _end_pe_as_root(NS ## builder_t *B)\
{ return N ## _add(B, NS ## buffer_end(B, TN ## _end_pe(B))); }\
static inline int N ## _create_as_root(NS ## builder_t *B __ ## TN ## _formal_args)\
{ return N ## _add(B, flatcc_builder_create_buffer(B, FID, 0,\
  TN ## _create(B __ ## TN ## _call_args), A, flatcc_builder_is_nested)); }\
static inline int N ## _create_as_typed_root(NS ## builder_t *B __ ## TN ## _formal_args)\
{ return N ## _add(B, flatcc_builder_create_buffer(B, TFID, 0,\
  TN ## _create(B __ ## TN ## _call_args), A, flatcc_builder_is_nested)); }\
static inline int N ## _nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\
{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\
  align < A ? A : align, FLATBUFFERS_COUNT_MAX(1))); }\
static inline int N ## _typed_nest(NS ## builder_t *B, void *data, size_t size, uint16_t align)\
{ return N ## _add(B, flatcc_builder_create_vector(B, data, size, 1,\
  align < A ? A : align, FLATBUFFERS_COUNT_MAX(1))); }\
static inline int N ## _clone_as_root(NS ## builder_t *B, TN ## _struct_t p)\
{ return N ## _add(B, TN ## _clone_as_root(B, p)); }\
static inline int N ## _clone_as_typed_root(NS ## builder_t *B, TN ## _struct_t p)\
{ return N ## _add(B, TN ## _clone_as_typed_root(B, p)); }

#define __flatbuffers_build_vector_ops(NS, V, N, TN, T)\
static inline T *V ## _extend(NS ## builder_t *B, size_t len)\
{ return (T *)flatcc_builder_extend_vector(B, len); }\
static inline T *V ## _append(NS ## builder_t *B, const T *data, size_t len)\
{ return (T *)flatcc_builder_append_vector(B, data, len); }\
static inline int V ## _truncate(NS ## builder_t *B, size_t len)\
{ return flatcc_builder_truncate_vector(B, len); }\
static inline T *V ## _edit(NS ## builder_t *B)\
{ return (T *)flatcc_builder_vector_edit(B); }\
static inline size_t V ## _reserved_len(NS ## builder_t *B)\
{ return flatcc_builder_vector_count(B); }\
static inline T *V ## _push(NS ## builder_t *B, const T *p)\
{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? (memcpy(_p, p, TN ## __size()), _p) : 0; }\
static inline T *V ## _push_copy(NS ## builder_t *B, const T *p)\
{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? TN ## _copy(_p, p) : 0; }\
static inline T *V ## _push_clone(NS ## builder_t *B, const T *p)\
{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? TN ## _copy(_p, p) : 0; }\
static inline T *V ## _push_create(NS ## builder_t *B __ ## TN ## _formal_args)\
{ T *_p; return (_p = (T *)flatcc_builder_extend_vector(B, 1)) ? TN ## _assign(_p __ ## TN ## _call_args) : 0; }

#define __flatbuffers_build_vector(NS, N, T, S, A)\
typedef NS ## ref_t N ## _vec_ref_t;\
static inline int N ## _vec_start(NS ## builder_t *B)\
{ return flatcc_builder_start_vector(B, S, A, FLATBUFFERS_COUNT_MAX(S)); }\
static inline N ## _vec_ref_t N ## _vec_end_pe(NS ## builder_t *B)\
{ return flatcc_builder_end_vector(B); }\
static inline N ## _vec_ref_t N ## _vec_end(NS ## builder_t *B)\
{ if (!NS ## is_native_pe()) { size_t i, n; T *p = (T *)flatcc_builder_vector_edit(B);\
    for (i = 0, n = flatcc_builder_vector_count(B); i < n; ++i)\
    { N ## _to_pe(N ## __ptr_add(p, i)); }} return flatcc_builder_end_vector(B); }\
static inline N ## _vec_ref_t N ## _vec_create_pe(NS ## builder_t *B, const T *data, size_t len)\
{ return flatcc_builder_create_vector(B, data, len, S, A, FLATBUFFERS_COUNT_MAX(S)); }\
static inline N ## _vec_ref_t N ## _vec_create(NS ## builder_t *B, const T *data, size_t len)\
{ if (!NS ## is_native_pe()) { size_t i; T *p; int ret = flatcc_builder_start_vector(B, S, A, FLATBUFFERS_COUNT_MAX(S)); if (ret) { return ret; }\
  p = (T *)flatcc_builder_extend_vector(B, len); if (!p) return 0;\
  for (i = 0; i < len; ++i) { N ## _copy_to_pe(N ## __ptr_add(p, i), N ## __const_ptr_add(data, i)); }\
  return flatcc_builder_end_vector(B); } else return flatcc_builder_create_vector(B, data, len, S, A, FLATBUFFERS_COUNT_MAX(S)); }\
static inline N ## _vec_ref_t N ## _vec_clone(NS ## builder_t *B, N ##_vec_t vec)\
{ __flatbuffers_memoize(B, vec, flatcc_builder_create_vector(B, vec, N ## _vec_len(vec), S, A, FLATBUFFERS_COUNT_MAX(S))); }\
static inline N ## _vec_ref_t N ## _vec_slice(NS ## builder_t *B, N ##_vec_t vec, size_t index, size_t len)\
{ size_t n = N ## _vec_len(vec); if (index >= n) index = n; n -= index; if (len > n) len = n;\
  return flatcc_builder_create_vector(B, N ## __const_ptr_add(vec, index), len, S, A, FLATBUFFERS_COUNT_MAX(S)); }\
__flatbuffers_build_vector_ops(NS, N ## _vec, N, N, T)

#define __flatbuffers_build_union_vector_ops(NS, V, N, TN)\
static inline TN ## _union_ref_t *V ## _extend(NS ## builder_t *B, size_t len)\
{ return flatcc_builder_extend_union_vector(B, len); }\
static inline TN ## _union_ref_t *V ## _append(NS ## builder_t *B, const TN ## _union_ref_t *data, size_t len)\
{ return flatcc_builder_append_union_vector(B, data, len); }\
static inline int V ## _truncate(NS ## builder_t *B, size_t len)\
{ return flatcc_builder_truncate_union_vector(B, len); }\
static inline TN ## _union_ref_t *V ## _edit(NS ## builder_t *B)\
{ return (TN ## _union_ref_t *) flatcc_builder_union_vector_edit(B); }\
static inline size_t V ## _reserved_len(NS ## builder_t *B)\
{ return flatcc_builder_union_vector_count(B); }\
static inline TN ## _union_ref_t *V ## _push(NS ## builder_t *B, const TN ## _union_ref_t ref)\
{ return flatcc_builder_union_vector_push(B, ref); }\
static inline TN ## _union_ref_t *V ## _push_clone(NS ## builder_t *B, TN ## _union_t u)\
{ return TN ## _vec_push(B, TN ## _clone(B, u)); }

#define __flatbuffers_build_union_vector(NS, N)\
static inline int N ## _vec_start(NS ## builder_t *B)\
{ return flatcc_builder_start_union_vector(B); }\
static inline N ## _union_vec_ref_t N ## _vec_end(NS ## builder_t *B)\
{ return flatcc_builder_end_union_vector(B); }\
static inline N ## _union_vec_ref_t N ## _vec_create(NS ## builder_t *B, const N ## _union_ref_t *data, size_t len)\
{ return flatcc_builder_create_union_vector(B, data, len); }\
__flatbuffers_build_union_vector_ops(NS, N ## _vec, N, N)\
/* Preserves DAG structure separately for type and value vector, so a type vector could be shared for many value vectors. */\
static inline N ## _union_vec_ref_t N ## _vec_clone(NS ## builder_t *B, N ##_union_vec_t vec)\
{ N ## _union_vec_ref_t _uvref, _ret = { 0, 0 }; NS ## union_ref_t _uref; size_t _i, _len;\
  if (vec.type == 0) return _ret;\
  _uvref.type = flatcc_builder_refmap_find(B, vec.type); _uvref.value = flatcc_builder_refmap_find(B, vec.value);\
  _len = N ## _union_vec_len(vec); if (_uvref.type == 0) {\
  _uvref.type = flatcc_builder_refmap_insert(B, vec.type, (flatcc_builder_create_type_vector(B, vec.type, _len))); }\
  if (_uvref.type == 0) { return _ret; } if (_uvref.value == 0) {\
  if (flatcc_builder_start_offset_vector(B)) return _ret;\
  for (_i = 0; _i < _len; ++_i) { _uref = N ## _clone(B, N ## _union_vec_at(vec, _i));\
    if (!_uref.value || !(flatcc_builder_offset_vector_push(B, _uref.value))) return _ret; }\
  _uvref.value = flatcc_builder_refmap_insert(B, vec.value, flatcc_builder_end_offset_vector(B));\
  if (_uvref.value == 0) return _ret; } return _uvref; }

#define __flatbuffers_build_string_vector_ops(NS, N)\
static inline int N ## _push_start(NS ## builder_t *B)\
{ return NS ## string_start(B); }\
static inline NS ## string_ref_t *N ## _push_end(NS ## builder_t *B)\
{ return NS ## string_vec_push(B, NS ## string_end(B)); }\
static inline NS ## string_ref_t *N ## _push_create(NS ## builder_t *B, const char *s, size_t len)\
{ return NS ## string_vec_push(B, NS ## string_create(B, s, len)); }\
static inline NS ## string_ref_t *N ## _push_create_str(NS ## builder_t *B, const char *s)\
{ return NS ## string_vec_push(B, NS ## string_create_str(B, s)); }\
static inline NS ## string_ref_t *N ## _push_create_strn(NS ## builder_t *B, const char *s, size_t max_len)\
{ return NS ## string_vec_push(B, NS ## string_create_strn(B, s, max_len)); }\
static inline NS ## string_ref_t *N ## _push_clone(NS ## builder_t *B, NS ## string_t string)\
{ return NS ## string_vec_push(B, NS ## string_clone(B, string)); }\
static inline NS ## string_ref_t *N ## _push_slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\
{ return NS ## string_vec_push(B, NS ## string_slice(B, string, index, len)); }

#define __flatbuffers_build_table_vector_ops(NS, N, TN)\
static inline int N ## _push_start(NS ## builder_t *B)\
{ return TN ## _start(B); }\
static inline TN ## _ref_t *N ## _push_end(NS ## builder_t *B)\
{ return N ## _push(B, TN ## _end(B)); }\
static inline TN ## _ref_t *N ## _push_create(NS ## builder_t *B __ ## TN ##_formal_args)\
{ return N ## _push(B, TN ## _create(B __ ## TN ## _call_args)); }

#define __flatbuffers_build_offset_vector_ops(NS, V, N, TN)\
static inline TN ## _ref_t *V ## _extend(NS ## builder_t *B, size_t len)\
{ return flatcc_builder_extend_offset_vector(B, len); }\
static inline TN ## _ref_t *V ## _append(NS ## builder_t *B, const TN ## _ref_t *data, size_t len)\
{ return flatcc_builder_append_offset_vector(B, data, len); }\
static inline int V ## _truncate(NS ## builder_t *B, size_t len)\
{ return flatcc_builder_truncate_offset_vector(B, len); }\
static inline TN ## _ref_t *V ## _edit(NS ## builder_t *B)\
{ return (TN ## _ref_t *)flatcc_builder_offset_vector_edit(B); }\
static inline size_t V ## _reserved_len(NS ## builder_t *B)\
{ return flatcc_builder_offset_vector_count(B); }\
static inline TN ## _ref_t *V ## _push(NS ## builder_t *B, const TN ## _ref_t ref)\
{ return ref ? flatcc_builder_offset_vector_push(B, ref) : 0; }

#define __flatbuffers_build_offset_vector(NS, N)\
typedef NS ## ref_t N ## _vec_ref_t;\
static inline int N ## _vec_start(NS ## builder_t *B)\
{ return flatcc_builder_start_offset_vector(B); }\
static inline N ## _vec_ref_t N ## _vec_end(NS ## builder_t *B)\
{ return flatcc_builder_end_offset_vector(B); }\
static inline N ## _vec_ref_t N ## _vec_create(NS ## builder_t *B, const N ## _ref_t *data, size_t len)\
{ return flatcc_builder_create_offset_vector(B, data, len); }\
__flatbuffers_build_offset_vector_ops(NS, N ## _vec, N, N)\
static inline N ## _vec_ref_t N ## _vec_clone(NS ## builder_t *B, N ##_vec_t vec)\
{ int _ret; N ## _ref_t _e; size_t _i, _len; __flatbuffers_memoize_begin(B, vec);\
 _len = N ## _vec_len(vec); if (flatcc_builder_start_offset_vector(B)) return 0;\
  for (_i = 0; _i < _len; ++_i) { if (!(_e = N ## _clone(B, N ## _vec_at(vec, _i)))) return 0;\
    if (!flatcc_builder_offset_vector_push(B, _e)) return 0; }\
  __flatbuffers_memoize_end(B, vec, flatcc_builder_end_offset_vector(B)); }\

#define __flatbuffers_build_string_ops(NS, N)\
static inline char *N ## _append(NS ## builder_t *B, const char *s, size_t len)\
{ return flatcc_builder_append_string(B, s, len); }\
static inline char *N ## _append_str(NS ## builder_t *B, const char *s)\
{ return flatcc_builder_append_string_str(B, s); }\
static inline char *N ## _append_strn(NS ## builder_t *B, const char *s, size_t len)\
{ return flatcc_builder_append_string_strn(B, s, len); }\
static inline size_t N ## _reserved_len(NS ## builder_t *B)\
{ return flatcc_builder_string_len(B); }\
static inline char *N ## _extend(NS ## builder_t *B, size_t len)\
{ return flatcc_builder_extend_string(B, len); }\
static inline char *N ## _edit(NS ## builder_t *B)\
{ return flatcc_builder_string_edit(B); }\
static inline int N ## _truncate(NS ## builder_t *B, size_t len)\
{ return flatcc_builder_truncate_string(B, len); }

#define __flatbuffers_build_string(NS)\
typedef NS ## ref_t NS ## string_ref_t;\
static inline int NS ## string_start(NS ## builder_t *B)\
{ return flatcc_builder_start_string(B); }\
static inline NS ## string_ref_t NS ## string_end(NS ## builder_t *B)\
{ return flatcc_builder_end_string(B); }\
static inline NS ## ref_t NS ## string_create(NS ## builder_t *B, const char *s, size_t len)\
{ return flatcc_builder_create_string(B, s, len); }\
static inline NS ## ref_t NS ## string_create_str(NS ## builder_t *B, const char *s)\
{ return flatcc_builder_create_string_str(B, s); }\
static inline NS ## ref_t NS ## string_create_strn(NS ## builder_t *B, const char *s, size_t len)\
{ return flatcc_builder_create_string_strn(B, s, len); }\
static inline NS ## string_ref_t NS ## string_clone(NS ## builder_t *B, NS ## string_t string)\
{ __flatbuffers_memoize(B, string, flatcc_builder_create_string(B, string, NS ## string_len(string))); }\
static inline NS ## string_ref_t NS ## string_slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\
{ size_t n = NS ## string_len(string); if (index >= n) index = n; n -= index; if (len > n) len = n;\
  return flatcc_builder_create_string(B, string + index, len); }\
__flatbuffers_build_string_ops(NS, NS ## string)\
__flatbuffers_build_offset_vector(NS, NS ## string)

#define __flatbuffers_copy_from_pe(P, P2, N) (*(P) = N ## _read_from_pe(P2), (P))
#define __flatbuffers_from_pe(P, N) (*(P) = N ## _read_from_pe(P), (P))
#define __flatbuffers_copy_to_pe(P, P2, N) (N ## _write_to_pe((P), *(P2)), (P))
#define __flatbuffers_to_pe(P, N) (N ## _write_to_pe((P), *(P)), (P))
#define __flatbuffers_define_fixed_array_primitives(NS, N, T)\
static inline T *N ## _array_copy(T *p, const T *p2, size_t n)\
{ memcpy(p, p2, n * sizeof(T)); return p; }\
static inline T *N ## _array_copy_from_pe(T *p, const T *p2, size_t n)\
{ size_t i; if (NS ## is_native_pe()) memcpy(p, p2, n * sizeof(T)); else {\
  for (i = 0; i < n; ++i) N ## _copy_from_pe(&p[i], &p2[i]); } return p; }\
static inline T *N ## _array_copy_to_pe(T *p, const T *p2, size_t n)\
{ size_t i; if (NS ## is_native_pe()) memcpy(p, p2, n * sizeof(T)); else {\
  for (i = 0; i < n; ++i) N ## _copy_to_pe(&p[i], &p2[i]); } return p; }
#define __flatbuffers_define_scalar_primitives(NS, N, T)\
static inline T *N ## _from_pe(T *p) { return __ ## NS ## from_pe(p, N); }\
static inline T *N ## _to_pe(T *p) { return __ ## NS ## to_pe(p, N); }\
static inline T *N ## _copy(T *p, const T *p2) { *p = *p2; return p; }\
static inline T *N ## _copy_from_pe(T *p, const T *p2)\
{ return __ ## NS ## copy_from_pe(p, p2, N); }\
static inline T *N ## _copy_to_pe(T *p, const T *p2) \
{ return __ ## NS ## copy_to_pe(p, p2, N); }\
static inline T *N ## _assign(T *p, const T v0) { *p = v0; return p; }\
static inline T *N ## _assign_from_pe(T *p, T v0)\
{ *p = N ## _read_from_pe(&v0); return p; }\
static inline T *N ## _assign_to_pe(T *p, T v0)\
{ N ## _write_to_pe(p, v0); return p; }
#define __flatbuffers_build_scalar(NS, N, T)\
__ ## NS ## define_scalar_primitives(NS, N, T)\
__ ## NS ## define_fixed_array_primitives(NS, N, T)\
__ ## NS ## build_vector(NS, N, T, sizeof(T), sizeof(T))
/* Depends on generated copy_to/from_pe functions, and the type. */
#define __flatbuffers_define_struct_primitives(NS, N)\
static inline N ## _t *N ##_to_pe(N ## _t *p)\
{ if (!NS ## is_native_pe()) { N ## _copy_to_pe(p, p); }; return p; }\
static inline N ## _t *N ##_from_pe(N ## _t *p)\
{ if (!NS ## is_native_pe()) { N ## _copy_from_pe(p, p); }; return p; }\
static inline N ## _t *N ## _clear(N ## _t *p) { return (N ## _t *)memset(p, 0, N ## __size()); }

/* Depends on generated copy/assign_to/from_pe functions, and the type. */
#define __flatbuffers_build_struct(NS, N, S, A, FID, TFID)\
__ ## NS ## define_struct_primitives(NS, N)\
typedef NS ## ref_t N ## _ref_t;\
static inline N ## _t *N ## _start(NS ## builder_t *B)\
{ return (N ## _t *)flatcc_builder_start_struct(B, S, A); }\
static inline N ## _ref_t N ## _end(NS ## builder_t *B)\
{ if (!NS ## is_native_pe()) { N ## _to_pe((N ## _t *)flatcc_builder_struct_edit(B)); }\
  return flatcc_builder_end_struct(B); }\
static inline N ## _ref_t N ## _end_pe(NS ## builder_t *B)\
{ return flatcc_builder_end_struct(B); }\
static inline N ## _ref_t N ## _create(NS ## builder_t *B __ ## N ## _formal_args)\
{ N ## _t *_p = N ## _start(B); if (!_p) return 0; N ##_assign_to_pe(_p __ ## N ## _call_args);\
  return N ## _end_pe(B); }\
static inline N ## _ref_t N ## _clone(NS ## builder_t *B, N ## _struct_t p)\
{ N ## _t *_p; __flatbuffers_memoize_begin(B, p); _p = N ## _start(B); if (!_p) return 0;\
  N ## _copy(_p, p); __flatbuffers_memoize_end(B, p, N ##_end_pe(B)); }\
__flatbuffers_build_vector(NS, N, N ## _t, S, A)\
__flatbuffers_build_struct_root(NS, N, A, FID, TFID)\

#define __flatbuffers_struct_clear_field(p) memset((p), 0, sizeof(*(p)))
#define __flatbuffers_build_table(NS, N, K)\
static inline int N ## _start(NS ## builder_t *B)\
{ return flatcc_builder_start_table(B, K); }\
static inline N ## _ref_t N ## _end(NS ## builder_t *B)\
{ FLATCC_ASSERT(flatcc_builder_check_required(B, __ ## N ## _required,\
  sizeof(__ ## N ## _required) / sizeof(__ ## N ## _required[0]) - 1));\
  return flatcc_builder_end_table(B); }\
__flatbuffers_build_offset_vector(NS, N)

#define __flatbuffers_build_table_field(ID, NS, N, TN, TT)\
static inline int N ## _add(NS ## builder_t *B, TN ## _ref_t ref)\
{ TN ## _ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ?\
  ((*_p = ref), 0) : -1; }\
static inline int N ## _start(NS ## builder_t *B)\
{ return TN ## _start(B); }\
static inline int N ## _end(NS ## builder_t *B)\
{ return N ## _add(B, TN ## _end(B)); }\
static inline TN ## _ref_t N ## _create(NS ## builder_t *B __ ## TN ##_formal_args)\
{ return N ## _add(B, TN ## _create(B __ ## TN ## _call_args)); }\
static inline int N ## _clone(NS ## builder_t *B, TN ## _table_t p)\
{ return N ## _add(B, TN ## _clone(B, p)); }\
static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\
{ TN ## _table_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; }

#define __flatbuffers_build_union_field(ID, NS, N, TN, TT)\
static inline int N ## _add(NS ## builder_t *B, TN ## _union_ref_t uref)\
{ NS ## ref_t *_p; TN ## _union_type_t *_pt; if (uref.type == TN ## _NONE) return 0; if (uref.value == 0) return -1;\
  if (!(_pt = (TN ## _union_type_t *)flatcc_builder_table_add(B, ID - 1, sizeof(*_pt), sizeof(*_pt)))) return -1;\
  *_pt = uref.type; if (!(_p = flatcc_builder_table_add_offset(B, ID))) return -1; *_p = uref.value; return 0; }\
static inline int N ## _add_type(NS ## builder_t *B, TN ## _union_type_t type)\
{ TN ## _union_type_t *_pt; if (type == TN ## _NONE) return 0; return (_pt = (TN ## _union_type_t *)flatcc_builder_table_add(B, ID - 1,\
  sizeof(*_pt), sizeof(*_pt))) ? ((*_pt = type), 0) : -1; }\
static inline int N ## _add_value(NS ## builder_t *B, TN ## _union_ref_t uref)\
{ NS ## ref_t *p; if (uref.type == TN ## _NONE) return 0; return (p = flatcc_builder_table_add_offset(B, ID)) ?\
  ((*p = uref.value), 0) : -1; }\
static inline int N ## _clone(NS ## builder_t *B, TN ## _union_t p)\
{ return N ## _add(B, TN ## _clone(B, p)); }\
static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\
{ TN ## _union_t _p = N ## _union(t); return _p.type ? N ## _clone(B, _p) : 0; }

/* M is the union value name and T is its type, i.e. the qualified name. */
#define __flatbuffers_build_union_table_value_field(NS, N, NU, M, T)\
static inline int N ## _ ## M ## _add(NS ## builder_t *B, T ## _ref_t ref)\
{ return N ## _add(B, NU ## _as_ ## M (ref)); }\
static inline int N ## _ ## M ## _start(NS ## builder_t *B)\
{ return T ## _start(B); }\
static inline int N ## _ ## M ## _end(NS ## builder_t *B)\
{ T ## _ref_t ref = T ## _end(B);\
  return ref ? N ## _ ## M ## _add(B, ref) : -1; }\
static inline int N ## _ ## M ## _create(NS ## builder_t *B __ ## T ##_formal_args)\
{ T ## _ref_t ref = T ## _create(B __ ## T ## _call_args);\
  return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }\
static inline int N ## _ ## M ## _clone(NS ## builder_t *B, T ## _table_t t)\
{ T ## _ref_t ref = T ## _clone(B, t);\
  return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }

/* M is the union value name and T is its type, i.e. the qualified name. */
#define __flatbuffers_build_union_struct_value_field(NS, N, NU, M, T)\
static inline int N ## _ ## M ## _add(NS ## builder_t *B, T ## _ref_t ref)\
{ return N ## _add(B, NU ## _as_ ## M (ref)); }\
static inline T ## _t *N ## _ ## M ## _start(NS ## builder_t *B)\
{ return T ## _start(B); }\
static inline int N ## _ ## M ## _end(NS ## builder_t *B)\
{ T ## _ref_t ref = T ## _end(B);\
  return ref ? N ## _ ## M ## _add(B, ref) : -1; }\
static inline int N ## _ ## M ## _create(NS ## builder_t *B __ ## T ##_formal_args)\
{ T ## _ref_t ref = T ## _create(B __ ## T ## _call_args);\
  return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }\
static inline int N ## _ ## M ## _end_pe(NS ## builder_t *B)\
{ T ## _ref_t ref = T ## _end_pe(B);\
  return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }\
static inline int N ## _ ## M ## _clone(NS ## builder_t *B, T ## _struct_t p)\
{ T ## _ref_t ref = T ## _clone(B, p);\
  return ref ? N ## _add(B, NU ## _as_ ## M(ref)) : -1; }
#define __flatbuffers_build_union_string_value_field(NS, N, NU, M)\
static inline int N ## _ ## M ## _add(NS ## builder_t *B, NS ## string_ref_t ref)\
{ return N ## _add(B, NU ## _as_ ## M (ref)); }\
__flatbuffers_build_string_field_ops(NS, N ## _ ## M)

/* NS: common namespace, ID: table field id (not offset), TN: name of type T, TT: name of table type
 * S: sizeof of scalar type, A: alignment of type T, default value V of type T. */
#define __flatbuffers_build_scalar_field(ID, NS, N, TN, T, S, A, V, TT)\
static inline int N ## _add(NS ## builder_t *B, const T v)\
{ T *_p; if (v == V) return 0; if (!(_p = (T *)flatcc_builder_table_add(B, ID, S, A))) return -1;\
  TN ## _assign_to_pe(_p, v); return 0; }\
static inline int N ## _force_add(NS ## builder_t *B, const T v)\
{ T *_p; if (!(_p = (T *)flatcc_builder_table_add(B, ID, S, A))) return -1;\
  TN ## _assign_to_pe(_p, v); return 0; }\
/* Clone does not skip default values and expects pe endian content. */\
static inline int N ## _clone(NS ## builder_t *B, const T *p)\
{ return 0 == flatcc_builder_table_add_copy(B, ID, p, S, A) ? -1 : 0; }\
/* Transferring a missing field is a nop success with 0 as result. */\
static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\
{ const T *_p = N ## _get_ptr(t); return _p ? N ## _clone(B, _p) : 0; }

/* NS: common namespace, ID: table field id (not offset), TN: name of type T, TT: name of table type
 * S: sizeof of scalar type, A: alignment of type T. */
#define __flatbuffers_build_scalar_optional_field(ID, NS, N, TN, T, S, A, TT)\
static inline int N ## _add(NS ## builder_t *B, const T v)\
{ T *_p; if (!(_p = (T *)flatcc_builder_table_add(B, ID, S, A))) return -1;\
  TN ## _assign_to_pe(_p, v); return 0; }\
/* Clone does not skip default values and expects pe endian content. */\
static inline int N ## _clone(NS ## builder_t *B, const T *p)\
{ return 0 == flatcc_builder_table_add_copy(B, ID, p, S, A) ? -1 : 0; }\
/* Transferring a missing field is a nop success with 0 as result. */\
static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\
{ const T *_p = N ## _get_ptr(t); return _p ? N ## _clone(B, _p) : 0; }

#define __flatbuffers_build_struct_field(ID, NS, N, TN, S, A, TT)\
static inline TN ## _t *N ## _start(NS ## builder_t *B)\
{ return (TN ## _t *)flatcc_builder_table_add(B, ID, S, A); }\
static inline int N ## _end(NS ## builder_t *B)\
{ if (!NS ## is_native_pe()) { TN ## _to_pe((TN ## _t *)flatcc_builder_table_edit(B, S)); } return 0; }\
static inline int N ## _end_pe(NS ## builder_t *B) { return 0; }\
static inline int N ## _create(NS ## builder_t *B __ ## TN ## _formal_args)\
{ TN ## _t *_p = N ## _start(B); if (!_p) return -1; TN ##_assign_to_pe(_p __ ## TN ## _call_args);\
  return 0; }\
static inline int N ## _add(NS ## builder_t *B, const TN ## _t *p)\
{ TN ## _t *_p = N ## _start(B); if (!_p) return -1; TN ##_copy_to_pe(_p, p); return 0; }\
static inline int N ## _clone(NS ## builder_t *B, TN ## _struct_t p)\
{ return 0 == flatcc_builder_table_add_copy(B, ID, p, S, A) ? -1 : 0; }\
static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\
{ TN ## _struct_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; }

#define __flatbuffers_build_vector_field(ID, NS, N, TN, T, TT)\
static inline int N ## _add(NS ## builder_t *B, TN ## _vec_ref_t ref)\
{ TN ## _vec_ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ? ((*_p = ref), 0) : -1; }\
static inline int N ## _start(NS ## builder_t *B)\
{ return TN ## _vec_start(B); }\
static inline int N ## _end_pe(NS ## builder_t *B)\
{ return N ## _add(B, TN ## _vec_end_pe(B)); }\
static inline int N ## _end(NS ## builder_t *B)\
{ return N ## _add(B, TN ## _vec_end(B)); }\
static inline int N ## _create_pe(NS ## builder_t *B, const T *data, size_t len)\
{ return N ## _add(B, TN ## _vec_create_pe(B, data, len)); }\
static inline int N ## _create(NS ## builder_t *B, const T *data, size_t len)\
{ return N ## _add(B, TN ## _vec_create(B, data, len)); }\
static inline int N ## _slice(NS ## builder_t *B, TN ## _vec_t vec, size_t index, size_t len)\
{ return N ## _add(B, TN ## _vec_slice(B, vec, index, len)); }\
static inline int N ## _clone(NS ## builder_t *B, TN ## _vec_t vec)\
{ return N ## _add(B, TN ## _vec_clone(B, vec)); }\
static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\
{ TN ## _vec_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; }\
__flatbuffers_build_vector_ops(NS, N, N, TN, T)\

#define __flatbuffers_build_offset_vector_field(ID, NS, N, TN, TT)\
static inline int N ## _add(NS ## builder_t *B, TN ## _vec_ref_t ref)\
{ TN ## _vec_ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ? ((*_p = ref), 0) : -1; }\
static inline int N ## _start(NS ## builder_t *B)\
{ return flatcc_builder_start_offset_vector(B); }\
static inline int N ## _end(NS ## builder_t *B)\
{ return N ## _add(B, flatcc_builder_end_offset_vector(B)); }\
static inline int N ## _create(NS ## builder_t *B, const TN ## _ref_t *data, size_t len)\
{ return N ## _add(B, flatcc_builder_create_offset_vector(B, data, len)); }\
__flatbuffers_build_offset_vector_ops(NS, N, N, TN)\
static inline int N ## _clone(NS ## builder_t *B, TN ## _vec_t vec)\
{ return N ## _add(B, TN ## _vec_clone(B, vec)); }\
static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\
{ TN ## _vec_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; }

/* depends on N ## _add which differs for union member fields and ordinary fields */\
#define __flatbuffers_build_string_field_ops(NS, N)\
static inline int N ## _start(NS ## builder_t *B)\
{ return flatcc_builder_start_string(B); }\
static inline int N ## _end(NS ## builder_t *B)\
{ return N ## _add(B, flatcc_builder_end_string(B)); }\
static inline int N ## _create(NS ## builder_t *B, const char *s, size_t len)\
{ return N ## _add(B, flatcc_builder_create_string(B, s, len)); }\
static inline int N ## _create_str(NS ## builder_t *B, const char *s)\
{ return N ## _add(B, flatcc_builder_create_string_str(B, s)); }\
static inline int N ## _create_strn(NS ## builder_t *B, const char *s, size_t max_len)\
{ return N ## _add(B, flatcc_builder_create_string_strn(B, s, max_len)); }\
static inline int N ## _clone(NS ## builder_t *B, NS ## string_t string)\
{ return N ## _add(B, NS ## string_clone(B, string)); }\
static inline int N ## _slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\
{ return N ## _add(B, NS ## string_slice(B, string, index, len)); }\
__flatbuffers_build_string_ops(NS, N)

#define __flatbuffers_build_string_field(ID, NS, N, TT)\
static inline int N ## _add(NS ## builder_t *B, NS ## string_ref_t ref)\
{ NS ## string_ref_t *_p; return (ref && (_p = flatcc_builder_table_add_offset(B, ID))) ? ((*_p = ref), 0) : -1; }\
__flatbuffers_build_string_field_ops(NS, N)\
static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\
{ NS ## string_t _p = N ## _get(t); return _p ? N ## _clone(B, _p) : 0; }

#define __flatbuffers_build_table_vector_field(ID, NS, N, TN, TT)\
__flatbuffers_build_offset_vector_field(ID, NS, N, TN, TT)\
__flatbuffers_build_table_vector_ops(NS, N, TN)

#define __flatbuffers_build_union_vector_field(ID, NS, N, TN, TT)\
static inline int N ## _add(NS ## builder_t *B, TN ## _union_vec_ref_t uvref)\
{ NS ## vec_ref_t *_p; if (!uvref.type || !uvref.value) return uvref.type == uvref.value ? 0 : -1;\
  if (!(_p = flatcc_builder_table_add_offset(B, ID - 1))) return -1; *_p = uvref.type;\
  if (!(_p = flatcc_builder_table_add_offset(B, ID))) return -1; *_p = uvref.value; return 0; }\
static inline int N ## _start(NS ## builder_t *B)\
{ return flatcc_builder_start_union_vector(B); }\
static inline int N ## _end(NS ## builder_t *B)\
{ return N ## _add(B, flatcc_builder_end_union_vector(B)); }\
static inline int N ## _create(NS ## builder_t *B, const TN ## _union_ref_t *data, size_t len)\
{ return N ## _add(B, flatcc_builder_create_union_vector(B, data, len)); }\
__flatbuffers_build_union_vector_ops(NS, N, N, TN)\
static inline int N ## _clone(NS ## builder_t *B, TN ## _union_vec_t vec)\
{ return N ## _add(B, TN ## _vec_clone(B, vec)); }\
static inline int N ## _pick(NS ## builder_t *B, TT ## _table_t t)\
{ TN ## _union_vec_t _p = N ## _union(t); return _p.type ? N ## _clone(B, _p) : 0; }

#define __flatbuffers_build_union_table_vector_value_field(NS, N, NU, M, T)\
static inline int N ## _ ## M ## _push_start(NS ## builder_t *B)\
{ return T ## _start(B); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_end(NS ## builder_t *B)\
{ return NU ## _vec_push(B, NU ## _as_ ## M (T ## _end(B))); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push(NS ## builder_t *B, T ## _ref_t ref)\
{ return NU ## _vec_push(B, NU ## _as_ ## M (ref)); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_create(NS ## builder_t *B __ ## T ##_formal_args)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _create(B __ ## T ## _call_args))); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_clone(NS ## builder_t *B, T ## _table_t t)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _clone(B, t))); }

#define __flatbuffers_build_union_struct_vector_value_field(NS, N, NU, M, T)\
static inline T ## _t *N ## _ ## M ## _push_start(NS ## builder_t *B)\
{ return T ## _start(B); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_end(NS ## builder_t *B)\
{ return NU ## _vec_push(B, NU ## _as_ ## M (T ## _end(B))); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push(NS ## builder_t *B, T ## _ref_t ref)\
{ return NU ## _vec_push(B, NU ## _as_ ## M (ref)); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_create(NS ## builder_t *B __ ## T ##_formal_args)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _create(B __ ## T ## _call_args))); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_clone(NS ## builder_t *B, T ## _struct_t p)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(T ## _clone(B, p))); }

#define __flatbuffers_build_union_string_vector_value_field(NS, N, NU, M)\
static inline NU ## _union_ref_t *N ## _ ## M ## _push(NS ## builder_t *B, NS ## string_ref_t ref)\
{ return NU ## _vec_push(B, NU ## _as_ ## M (ref)); }\
static inline int N ## _ ## M ## _push_start(NS ## builder_t *B)\
{ return NS ## string_start(B); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_end(NS ## builder_t *B)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_end(B))); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_create(NS ## builder_t *B, const char *s, size_t len)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_create(B, s, len))); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_create_str(NS ## builder_t *B, const char *s)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_create_str(B, s))); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_create_strn(NS ## builder_t *B, const char *s, size_t max_len)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_create_strn(B, s, max_len))); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_clone(NS ## builder_t *B, NS ## string_t string)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_clone(B, string))); }\
static inline NU ## _union_ref_t *N ## _ ## M ## _push_slice(NS ## builder_t *B, NS ## string_t string, size_t index, size_t len)\
{ return NU ## _vec_push(B, NU ## _as_ ## M(NS ## string_slice(B, string, index, len))); }

#define __flatbuffers_build_string_vector_field(ID, NS, N, TT)\
__flatbuffers_build_offset_vector_field(ID, NS, N, NS ## string, TT)\
__flatbuffers_build_string_vector_ops(NS, N)

#define __flatbuffers_char_formal_args , char v0
#define __flatbuffers_char_call_args , v0
#define __flatbuffers_uint8_formal_args , uint8_t v0
#define __flatbuffers_uint8_call_args , v0
#define __flatbuffers_int8_formal_args , int8_t v0
#define __flatbuffers_int8_call_args , v0
#define __flatbuffers_bool_formal_args , flatbuffers_bool_t v0
#define __flatbuffers_bool_call_args , v0
#define __flatbuffers_uint16_formal_args , uint16_t v0
#define __flatbuffers_uint16_call_args , v0
#define __flatbuffers_uint32_formal_args , uint32_t v0
#define __flatbuffers_uint32_call_args , v0
#define __flatbuffers_uint64_formal_args , uint64_t v0
#define __flatbuffers_uint64_call_args , v0
#define __flatbuffers_int16_formal_args , int16_t v0
#define __flatbuffers_int16_call_args , v0
#define __flatbuffers_int32_formal_args , int32_t v0
#define __flatbuffers_int32_call_args , v0
#define __flatbuffers_int64_formal_args , int64_t v0
#define __flatbuffers_int64_call_args , v0
#define __flatbuffers_float_formal_args , float v0
#define __flatbuffers_float_call_args , v0
#define __flatbuffers_double_formal_args , double v0
#define __flatbuffers_double_call_args , v0

__flatbuffers_build_scalar(flatbuffers_, flatbuffers_char, char)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint8, uint8_t)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int8, int8_t)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_bool, flatbuffers_bool_t)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint16, uint16_t)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint32, uint32_t)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_uint64, uint64_t)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int16, int16_t)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int32, int32_t)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_int64, int64_t)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_float, float)
__flatbuffers_build_scalar(flatbuffers_, flatbuffers_double, double)

__flatbuffers_build_string(flatbuffers_)

__flatbuffers_build_buffer(flatbuffers_)
#include "flatcc/flatcc_epilogue.h"
#endif /* FLATBUFFERS_COMMON_BUILDER_H */
#ifndef SCHEMA_READER_H
#define SCHEMA_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

typedef struct org_apache_arrow_flatbuf_Buffer org_apache_arrow_flatbuf_Buffer_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_struct_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_struct_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_vec_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_vec_t;

typedef const struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_table_t;
typedef struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__table_t;
typedef struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_table_t;
typedef struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_table_t;
typedef struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_table_t;
typedef struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_table_t;
typedef struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_table_t;
typedef struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_table_t;
typedef struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_table_t;
typedef struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_table_t;
typedef struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_table_t;
typedef struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_table_t;
typedef struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_table_t;
typedef struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_table_t;
typedef struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_table_t;
typedef struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_table_t;
typedef struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_table_t;
typedef struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_table_t;
typedef struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_table_t;
typedef struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_table_t;
typedef struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_table_t;
typedef struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_table_t;
typedef struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_table_t;
typedef struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_table_t;
typedef struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_table_t;
typedef struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_Null_file_identifier
#define org_apache_arrow_flatbuf_Null_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Null_file_identifier */
#ifndef org_apache_arrow_flatbuf_Null_identifier
#define org_apache_arrow_flatbuf_Null_identifier 0
#endif
#define org_apache_arrow_flatbuf_Null_type_hash ((flatbuffers_thash_t)0x7b36a4dd)
#define org_apache_arrow_flatbuf_Null_type_identifier "\xdd\xa4\x36\x7b"
#ifndef org_apache_arrow_flatbuf_Null_file_extension
#define org_apache_arrow_flatbuf_Null_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Struct__file_identifier
#define org_apache_arrow_flatbuf_Struct__file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Struct__file_identifier */
#ifndef org_apache_arrow_flatbuf_Struct__identifier
#define org_apache_arrow_flatbuf_Struct__identifier 0
#endif
#define org_apache_arrow_flatbuf_Struct__type_hash ((flatbuffers_thash_t)0x6310f362)
#define org_apache_arrow_flatbuf_Struct__type_identifier "\x62\xf3\x10\x63"
#ifndef org_apache_arrow_flatbuf_Struct__file_extension
#define org_apache_arrow_flatbuf_Struct__file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_List_file_identifier
#define org_apache_arrow_flatbuf_List_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_List_file_identifier */
#ifndef org_apache_arrow_flatbuf_List_identifier
#define org_apache_arrow_flatbuf_List_identifier 0
#endif
#define org_apache_arrow_flatbuf_List_type_hash ((flatbuffers_thash_t)0xd4ce5878)
#define org_apache_arrow_flatbuf_List_type_identifier "\x78\x58\xce\xd4"
#ifndef org_apache_arrow_flatbuf_List_file_extension
#define org_apache_arrow_flatbuf_List_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeList_file_identifier
#define org_apache_arrow_flatbuf_LargeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeList_identifier
#define org_apache_arrow_flatbuf_LargeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeList_type_hash ((flatbuffers_thash_t)0x38aa7e27)
#define org_apache_arrow_flatbuf_LargeList_type_identifier "\x27\x7e\xaa\x38"
#ifndef org_apache_arrow_flatbuf_LargeList_file_extension
#define org_apache_arrow_flatbuf_LargeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_ListView_file_identifier
#define org_apache_arrow_flatbuf_ListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_ListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_ListView_identifier
#define org_apache_arrow_flatbuf_ListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_ListView_type_hash ((flatbuffers_thash_t)0x23d37919)
#define org_apache_arrow_flatbuf_ListView_type_identifier "\x19\x79\xd3\x23"
#ifndef org_apache_arrow_flatbuf_ListView_file_extension
#define org_apache_arrow_flatbuf_ListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeListView_file_identifier
#define org_apache_arrow_flatbuf_LargeListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeListView_identifier
#define org_apache_arrow_flatbuf_LargeListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeListView_type_hash ((flatbuffers_thash_t)0x28efac02)
#define org_apache_arrow_flatbuf_LargeListView_type_identifier "\x02\xac\xef\x28"
#ifndef org_apache_arrow_flatbuf_LargeListView_file_extension
#define org_apache_arrow_flatbuf_LargeListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeList_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeList_type_hash ((flatbuffers_thash_t)0xcef245bb)
#define org_apache_arrow_flatbuf_FixedSizeList_type_identifier "\xbb\x45\xf2\xce"
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_extension
#define org_apache_arrow_flatbuf_FixedSizeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Map_file_identifier
#define org_apache_arrow_flatbuf_Map_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Map_file_identifier */
#ifndef org_apache_arrow_flatbuf_Map_identifier
#define org_apache_arrow_flatbuf_Map_identifier 0
#endif
#define org_apache_arrow_flatbuf_Map_type_hash ((flatbuffers_thash_t)0xcebef8e6)
#define org_apache_arrow_flatbuf_Map_type_identifier "\xe6\xf8\xbe\xce"
#ifndef org_apache_arrow_flatbuf_Map_file_extension
#define org_apache_arrow_flatbuf_Map_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Union_file_identifier
#define org_apache_arrow_flatbuf_Union_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Union_file_identifier */
#ifndef org_apache_arrow_flatbuf_Union_identifier
#define org_apache_arrow_flatbuf_Union_identifier 0
#endif
#define org_apache_arrow_flatbuf_Union_type_hash ((flatbuffers_thash_t)0x896bda57)
#define org_apache_arrow_flatbuf_Union_type_identifier "\x57\xda\x6b\x89"
#ifndef org_apache_arrow_flatbuf_Union_file_extension
#define org_apache_arrow_flatbuf_Union_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Int_file_identifier
#define org_apache_arrow_flatbuf_Int_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Int_file_identifier */
#ifndef org_apache_arrow_flatbuf_Int_identifier
#define org_apache_arrow_flatbuf_Int_identifier 0
#endif
#define org_apache_arrow_flatbuf_Int_type_hash ((flatbuffers_thash_t)0x30789001)
#define org_apache_arrow_flatbuf_Int_type_identifier "\x01\x90\x78\x30"
#ifndef org_apache_arrow_flatbuf_Int_file_extension
#define org_apache_arrow_flatbuf_Int_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FloatingPoint_file_identifier */
#ifndef org_apache_arrow_flatbuf_FloatingPoint_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_identifier 0
#endif
#define org_apache_arrow_flatbuf_FloatingPoint_type_hash ((flatbuffers_thash_t)0xf7d06268)
#define org_apache_arrow_flatbuf_FloatingPoint_type_identifier "\x68\x62\xd0\xf7"
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_extension
#define org_apache_arrow_flatbuf_FloatingPoint_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8_file_identifier
#define org_apache_arrow_flatbuf_Utf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8_identifier
#define org_apache_arrow_flatbuf_Utf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8_type_hash ((flatbuffers_thash_t)0x8fe60d37)
#define org_apache_arrow_flatbuf_Utf8_type_identifier "\x37\x0d\xe6\x8f"
#ifndef org_apache_arrow_flatbuf_Utf8_file_extension
#define org_apache_arrow_flatbuf_Utf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Binary_file_identifier
#define org_apache_arrow_flatbuf_Binary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Binary_file_identifier */
#ifndef org_apache_arrow_flatbuf_Binary_identifier
#define org_apache_arrow_flatbuf_Binary_identifier 0
#endif
#define org_apache_arrow_flatbuf_Binary_type_hash ((flatbuffers_thash_t)0x8e21a795)
#define org_apache_arrow_flatbuf_Binary_type_identifier "\x95\xa7\x21\x8e"
#ifndef org_apache_arrow_flatbuf_Binary_file_extension
#define org_apache_arrow_flatbuf_Binary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeUtf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeUtf8_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeUtf8_type_hash ((flatbuffers_thash_t)0x24ed2fb0)
#define org_apache_arrow_flatbuf_LargeUtf8_type_identifier "\xb0\x2f\xed\x24"
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_extension
#define org_apache_arrow_flatbuf_LargeUtf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_identifier
#define org_apache_arrow_flatbuf_LargeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeBinary_identifier
#define org_apache_arrow_flatbuf_LargeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeBinary_type_hash ((flatbuffers_thash_t)0xbd437872)
#define org_apache_arrow_flatbuf_LargeBinary_type_identifier "\x72\x78\x43\xbd"
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_extension
#define org_apache_arrow_flatbuf_LargeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8View_file_identifier
#define org_apache_arrow_flatbuf_Utf8View_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8View_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8View_identifier
#define org_apache_arrow_flatbuf_Utf8View_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8View_type_hash ((flatbuffers_thash_t)0xab7692)
#define org_apache_arrow_flatbuf_Utf8View_type_identifier "\x92\x76\xab\x00"
#ifndef org_apache_arrow_flatbuf_Utf8View_file_extension
#define org_apache_arrow_flatbuf_Utf8View_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_BinaryView_file_identifier
#define org_apache_arrow_flatbuf_BinaryView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_BinaryView_file_identifier */
#ifndef org_apache_arrow_flatbuf_BinaryView_identifier
#define org_apache_arrow_flatbuf_BinaryView_identifier 0
#endif
#define org_apache_arrow_flatbuf_BinaryView_type_hash ((flatbuffers_thash_t)0x18c52428)
#define org_apache_arrow_flatbuf_BinaryView_type_identifier "\x28\x24\xc5\x18"
#ifndef org_apache_arrow_flatbuf_BinaryView_file_extension
#define org_apache_arrow_flatbuf_BinaryView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_hash ((flatbuffers_thash_t)0x80d0f4ce)
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier "\xce\xf4\xd0\x80"
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_extension
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Bool_file_identifier
#define org_apache_arrow_flatbuf_Bool_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Bool_file_identifier */
#ifndef org_apache_arrow_flatbuf_Bool_identifier
#define org_apache_arrow_flatbuf_Bool_identifier 0
#endif
#define org_apache_arrow_flatbuf_Bool_type_hash ((flatbuffers_thash_t)0x96bf83f0)
#define org_apache_arrow_flatbuf_Bool_type_identifier "\xf0\x83\xbf\x96"
#ifndef org_apache_arrow_flatbuf_Bool_file_extension
#define org_apache_arrow_flatbuf_Bool_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_RunEndEncoded_file_identifier */
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_identifier 0
#endif
#define org_apache_arrow_flatbuf_RunEndEncoded_type_hash ((flatbuffers_thash_t)0x5a98bcc)
#define org_apache_arrow_flatbuf_RunEndEncoded_type_identifier "\xcc\x8b\xa9\x05"
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_extension
#define org_apache_arrow_flatbuf_RunEndEncoded_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Decimal_file_identifier
#define org_apache_arrow_flatbuf_Decimal_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Decimal_file_identifier */
#ifndef org_apache_arrow_flatbuf_Decimal_identifier
#define org_apache_arrow_flatbuf_Decimal_identifier 0
#endif
#define org_apache_arrow_flatbuf_Decimal_type_hash ((flatbuffers_thash_t)0x91d1beb7)
#define org_apache_arrow_flatbuf_Decimal_type_identifier "\xb7\xbe\xd1\x91"
#ifndef org_apache_arrow_flatbuf_Decimal_file_extension
#define org_apache_arrow_flatbuf_Decimal_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Date_file_identifier
#define org_apache_arrow_flatbuf_Date_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Date_file_identifier */
#ifndef org_apache_arrow_flatbuf_Date_identifier
#define org_apache_arrow_flatbuf_Date_identifier 0
#endif
#define org_apache_arrow_flatbuf_Date_type_hash ((flatbuffers_thash_t)0xe0ccf624)
#define org_apache_arrow_flatbuf_Date_type_identifier "\x24\xf6\xcc\xe0"
#ifndef org_apache_arrow_flatbuf_Date_file_extension
#define org_apache_arrow_flatbuf_Date_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Time_file_identifier
#define org_apache_arrow_flatbuf_Time_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Time_file_identifier */
#ifndef org_apache_arrow_flatbuf_Time_identifier
#define org_apache_arrow_flatbuf_Time_identifier 0
#endif
#define org_apache_arrow_flatbuf_Time_type_hash ((flatbuffers_thash_t)0x2442a489)
#define org_apache_arrow_flatbuf_Time_type_identifier "\x89\xa4\x42\x24"
#ifndef org_apache_arrow_flatbuf_Time_file_extension
#define org_apache_arrow_flatbuf_Time_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Timestamp_file_identifier
#define org_apache_arrow_flatbuf_Timestamp_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Timestamp_file_identifier */
#ifndef org_apache_arrow_flatbuf_Timestamp_identifier
#define org_apache_arrow_flatbuf_Timestamp_identifier 0
#endif
#define org_apache_arrow_flatbuf_Timestamp_type_hash ((flatbuffers_thash_t)0x1fddf080)
#define org_apache_arrow_flatbuf_Timestamp_type_identifier "\x80\xf0\xdd\x1f"
#ifndef org_apache_arrow_flatbuf_Timestamp_file_extension
#define org_apache_arrow_flatbuf_Timestamp_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Interval_file_identifier
#define org_apache_arrow_flatbuf_Interval_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Interval_file_identifier */
#ifndef org_apache_arrow_flatbuf_Interval_identifier
#define org_apache_arrow_flatbuf_Interval_identifier 0
#endif
#define org_apache_arrow_flatbuf_Interval_type_hash ((flatbuffers_thash_t)0x1e2d6809)
#define org_apache_arrow_flatbuf_Interval_type_identifier "\x09\x68\x2d\x1e"
#ifndef org_apache_arrow_flatbuf_Interval_file_extension
#define org_apache_arrow_flatbuf_Interval_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Duration_file_identifier
#define org_apache_arrow_flatbuf_Duration_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Duration_file_identifier */
#ifndef org_apache_arrow_flatbuf_Duration_identifier
#define org_apache_arrow_flatbuf_Duration_identifier 0
#endif
#define org_apache_arrow_flatbuf_Duration_type_hash ((flatbuffers_thash_t)0x1ecea6b0)
#define org_apache_arrow_flatbuf_Duration_type_identifier "\xb0\xa6\xce\x1e"
#ifndef org_apache_arrow_flatbuf_Duration_file_extension
#define org_apache_arrow_flatbuf_Duration_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_KeyValue_file_identifier
#define org_apache_arrow_flatbuf_KeyValue_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_KeyValue_file_identifier */
#ifndef org_apache_arrow_flatbuf_KeyValue_identifier
#define org_apache_arrow_flatbuf_KeyValue_identifier 0
#endif
#define org_apache_arrow_flatbuf_KeyValue_type_hash ((flatbuffers_thash_t)0x3b264744)
#define org_apache_arrow_flatbuf_KeyValue_type_identifier "\x44\x47\x26\x3b"
#ifndef org_apache_arrow_flatbuf_KeyValue_file_extension
#define org_apache_arrow_flatbuf_KeyValue_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier */
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_identifier 0
#endif
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_hash ((flatbuffers_thash_t)0x8c703261)
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier "\x61\x32\x70\x8c"
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_extension
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Field_file_identifier
#define org_apache_arrow_flatbuf_Field_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Field_file_identifier */
#ifndef org_apache_arrow_flatbuf_Field_identifier
#define org_apache_arrow_flatbuf_Field_identifier 0
#endif
#define org_apache_arrow_flatbuf_Field_type_hash ((flatbuffers_thash_t)0xd981525c)
#define org_apache_arrow_flatbuf_Field_type_identifier "\x5c\x52\x81\xd9"
#ifndef org_apache_arrow_flatbuf_Field_file_extension
#define org_apache_arrow_flatbuf_Field_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Buffer_file_identifier
#define org_apache_arrow_flatbuf_Buffer_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Buffer_file_identifier */
#ifndef org_apache_arrow_flatbuf_Buffer_identifier
#define org_apache_arrow_flatbuf_Buffer_identifier 0
#endif
#define org_apache_arrow_flatbuf_Buffer_type_hash ((flatbuffers_thash_t)0x519d7fea)
#define org_apache_arrow_flatbuf_Buffer_type_identifier "\xea\x7f\x9d\x51"
#ifndef org_apache_arrow_flatbuf_Buffer_file_extension
#define org_apache_arrow_flatbuf_Buffer_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Schema_file_identifier
#define org_apache_arrow_flatbuf_Schema_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Schema_file_identifier */
#ifndef org_apache_arrow_flatbuf_Schema_identifier
#define org_apache_arrow_flatbuf_Schema_identifier 0
#endif
#define org_apache_arrow_flatbuf_Schema_type_hash ((flatbuffers_thash_t)0x406570b)
#define org_apache_arrow_flatbuf_Schema_type_identifier "\x0b\x57\x06\x04"
#ifndef org_apache_arrow_flatbuf_Schema_file_extension
#define org_apache_arrow_flatbuf_Schema_file_extension "bin"
#endif

typedef int16_t org_apache_arrow_flatbuf_MetadataVersion_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t, 16)
/**  0.1.0 (October 2016). */
#define org_apache_arrow_flatbuf_MetadataVersion_V1 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_MetadataVersion_V2 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_MetadataVersion_V3 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_MetadataVersion_V4 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(3))
#define org_apache_arrow_flatbuf_MetadataVersion_V5 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(4))

static inline const char *org_apache_arrow_flatbuf_MetadataVersion_name(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return "V1";
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return "V2";
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return "V3";
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return "V4";
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return "V5";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_MetadataVersion_is_known_value(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return 1;
    default: return 0;
    }
}

/**  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 intended to represent higher level
 *       features, additional details may be 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. */
typedef int64_t org_apache_arrow_flatbuf_Feature_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, 64)
/**  Needed to make flatbuffers happy. */
#define org_apache_arrow_flatbuf_Feature_UNUSED ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(0))
#define org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(1))
#define org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(2))

static inline const char *org_apache_arrow_flatbuf_Feature_name(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return "UNUSED";
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return "DICTIONARY_REPLACEMENT";
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return "COMPRESSED_BODY";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Feature_is_known_value(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return 1;
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return 1;
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_UnionMode_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 16)
#define org_apache_arrow_flatbuf_UnionMode_Sparse ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_UnionMode_Dense ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_UnionMode_name(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return "Sparse";
    case org_apache_arrow_flatbuf_UnionMode_Dense: return "Dense";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_UnionMode_is_known_value(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return 1;
    case org_apache_arrow_flatbuf_UnionMode_Dense: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_Precision_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 16)
#define org_apache_arrow_flatbuf_Precision_HALF ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Precision_SINGLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_Precision_DOUBLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_Precision_name(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return "HALF";
    case org_apache_arrow_flatbuf_Precision_SINGLE: return "SINGLE";
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return "DOUBLE";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Precision_is_known_value(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return 1;
    case org_apache_arrow_flatbuf_Precision_SINGLE: return 1;
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_DateUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_DateUnit_DAY ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_DateUnit_MILLISECOND ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_DateUnit_name(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return "DAY";
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return "MILLISECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DateUnit_is_known_value(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return 1;
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_TimeUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_TimeUnit_SECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_TimeUnit_MILLISECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_TimeUnit_MICROSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_TimeUnit_NANOSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(3))

static inline const char *org_apache_arrow_flatbuf_TimeUnit_name(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return "SECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return "MILLISECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return "MICROSECOND";
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return "NANOSECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_TimeUnit_is_known_value(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_IntervalUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_IntervalUnit_name(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return "YEAR_MONTH";
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return "DAY_TIME";
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return "MONTH_DAY_NANO";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_IntervalUnit_is_known_value(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  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 */
typedef int16_t org_apache_arrow_flatbuf_DictionaryKind_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 16)
#define org_apache_arrow_flatbuf_DictionaryKind_DenseArray ((org_apache_arrow_flatbuf_DictionaryKind_enum_t)INT16_C(0))

static inline const char *org_apache_arrow_flatbuf_DictionaryKind_name(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return "DenseArray";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DictionaryKind_is_known_value(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  Endianness of the platform producing the data */
typedef int16_t org_apache_arrow_flatbuf_Endianness_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 16)
#define org_apache_arrow_flatbuf_Endianness_Little ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Endianness_Big ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_Endianness_name(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return "Little";
    case org_apache_arrow_flatbuf_Endianness_Big: return "Big";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Endianness_is_known_value(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return 1;
    case org_apache_arrow_flatbuf_Endianness_Big: return 1;
    default: return 0;
    }
}


/**  ----------------------------------------------------------------------
 *  A Buffer represents a single contiguous memory segment */
struct org_apache_arrow_flatbuf_Buffer {
    /**  The relative offset into the shared memory page where the bytes for this
     *  buffer starts */
    alignas(8) int64_t 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. */
    alignas(8) int64_t length;
};
static_assert(sizeof(org_apache_arrow_flatbuf_Buffer_t) == 16, "struct size mismatch");

static inline const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__const_ptr_add(const org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__ptr_add(org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_struct_t org_apache_arrow_flatbuf_Buffer_vec_at(org_apache_arrow_flatbuf_Buffer_vec_t vec, size_t i)
__flatbuffers_struct_vec_at(vec, i)
static inline size_t org_apache_arrow_flatbuf_Buffer__size(void) { return 16; }
static inline size_t org_apache_arrow_flatbuf_Buffer_vec_len(org_apache_arrow_flatbuf_Buffer_vec_t vec)
__flatbuffers_vec_len(vec)
__flatbuffers_struct_as_root(org_apache_arrow_flatbuf_Buffer)

__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, offset, flatbuffers_int64, int64_t)
__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, length, flatbuffers_int64, int64_t)


/**  These are stored in the flatbuffer in the Type union below */
struct org_apache_arrow_flatbuf_Null_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Null_vec_len(org_apache_arrow_flatbuf_Null_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Null_table_t org_apache_arrow_flatbuf_Null_vec_at(org_apache_arrow_flatbuf_Null_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Null_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Null)


/**  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 org_apache_arrow_flatbuf_Struct__table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Struct__vec_len(org_apache_arrow_flatbuf_Struct__vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Struct__table_t org_apache_arrow_flatbuf_Struct__vec_at(org_apache_arrow_flatbuf_Struct__vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Struct__table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Struct_)


struct org_apache_arrow_flatbuf_List_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_List_vec_len(org_apache_arrow_flatbuf_List_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_List_table_t org_apache_arrow_flatbuf_List_vec_at(org_apache_arrow_flatbuf_List_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_List_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_List)


/**  Same as List, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeList_vec_len(org_apache_arrow_flatbuf_LargeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeList_table_t org_apache_arrow_flatbuf_LargeList_vec_at(org_apache_arrow_flatbuf_LargeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeList)


/**  Represents the same logical types that List can, but contains offsets and
 *  sizes allowing for writes in any order and sharing of child values among
 *  list values. */
struct org_apache_arrow_flatbuf_ListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_ListView_vec_len(org_apache_arrow_flatbuf_ListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_ListView_table_t org_apache_arrow_flatbuf_ListView_vec_at(org_apache_arrow_flatbuf_ListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_ListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_ListView)


/**  Same as ListView, but with 64-bit offsets and sizes, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeListView_vec_len(org_apache_arrow_flatbuf_LargeListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeListView_table_t org_apache_arrow_flatbuf_LargeListView_vec_at(org_apache_arrow_flatbuf_LargeListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeListView)


struct org_apache_arrow_flatbuf_FixedSizeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeList_vec_len(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeList_table_t org_apache_arrow_flatbuf_FixedSizeList_vec_at(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeList)

/**  Number of list items per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeList, listSize, flatbuffers_int32, int32_t, INT32_C(0))

/**  A Map is a logical nested type that is represented as
 *
 *  List<entries: Struct<key: K, value: V>>
 *
 *  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: the key type and the value type. The names of the
 *  child fields may be respectively "entries", "key", and "value", but this is
 *  not enforced.
 *
 *  Map
 *  ```text
 *    - 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 org_apache_arrow_flatbuf_Map_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Map_vec_len(org_apache_arrow_flatbuf_Map_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Map_table_t org_apache_arrow_flatbuf_Map_vec_at(org_apache_arrow_flatbuf_Map_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Map_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Map)

/**  Set to true if the keys within each value are sorted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Map, keysSorted, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

/**  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 org_apache_arrow_flatbuf_Union_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Union_vec_len(org_apache_arrow_flatbuf_Union_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Union_table_t org_apache_arrow_flatbuf_Union_vec_at(org_apache_arrow_flatbuf_Union_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Union_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Union)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Union, mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Union, typeIds, flatbuffers_int32_vec_t, 0)

struct org_apache_arrow_flatbuf_Int_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Int_vec_len(org_apache_arrow_flatbuf_Int_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Int_table_t org_apache_arrow_flatbuf_Int_vec_at(org_apache_arrow_flatbuf_Int_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Int_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Int)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Int, bitWidth, flatbuffers_int32, int32_t, INT32_C(0))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Int, is_signed, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

struct org_apache_arrow_flatbuf_FloatingPoint_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FloatingPoint_vec_len(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FloatingPoint_table_t org_apache_arrow_flatbuf_FloatingPoint_vec_at(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FloatingPoint_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FloatingPoint)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FloatingPoint, precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, INT16_C(0))

/**  Unicode with UTF-8 encoding */
struct org_apache_arrow_flatbuf_Utf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8_vec_len(org_apache_arrow_flatbuf_Utf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8_table_t org_apache_arrow_flatbuf_Utf8_vec_at(org_apache_arrow_flatbuf_Utf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8)


/**  Opaque binary data */
struct org_apache_arrow_flatbuf_Binary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Binary_vec_len(org_apache_arrow_flatbuf_Binary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Binary_table_t org_apache_arrow_flatbuf_Binary_vec_at(org_apache_arrow_flatbuf_Binary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Binary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Binary)


/**  Same as Utf8, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeUtf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeUtf8_vec_len(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeUtf8_table_t org_apache_arrow_flatbuf_LargeUtf8_vec_at(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeUtf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeUtf8)


/**  Same as Binary, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeBinary_vec_len(org_apache_arrow_flatbuf_LargeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeBinary_table_t org_apache_arrow_flatbuf_LargeBinary_vec_at(org_apache_arrow_flatbuf_LargeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeBinary)


/**  Logically the same as Utf8, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_Utf8View_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8View_vec_len(org_apache_arrow_flatbuf_Utf8View_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8View_table_t org_apache_arrow_flatbuf_Utf8View_vec_at(org_apache_arrow_flatbuf_Utf8View_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8View_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8View)


/**  Logically the same as Binary, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_BinaryView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_BinaryView_vec_len(org_apache_arrow_flatbuf_BinaryView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_BinaryView_table_t org_apache_arrow_flatbuf_BinaryView_vec_at(org_apache_arrow_flatbuf_BinaryView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_BinaryView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_BinaryView)


struct org_apache_arrow_flatbuf_FixedSizeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_len(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeBinary_table_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeBinary)

/**  Number of bytes per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeBinary, byteWidth, flatbuffers_int32, int32_t, INT32_C(0))

struct org_apache_arrow_flatbuf_Bool_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Bool_vec_len(org_apache_arrow_flatbuf_Bool_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Bool_table_t org_apache_arrow_flatbuf_Bool_vec_at(org_apache_arrow_flatbuf_Bool_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Bool_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Bool)


/**  Contains two child arrays, run_ends and values.
 *  The run_ends child array must be a 16/32/64-bit integer array
 *  which encodes the indices at which the run with the value in
 *  each corresponding index in the values child array ends.
 *  Like list/struct types, the value array can be of any type. */
struct org_apache_arrow_flatbuf_RunEndEncoded_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_RunEndEncoded_vec_len(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_RunEndEncoded_table_t org_apache_arrow_flatbuf_RunEndEncoded_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_RunEndEncoded)


/**  Exact decimal value represented as an integer value in two's
 *  complement. Currently 32-bit (4-byte), 64-bit (8-byte),
 *  128-bit (16-byte) and 256-bit (32-byte) integers are used.
 *  The representation uses the endianness indicated in the Schema. */
struct org_apache_arrow_flatbuf_Decimal_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Decimal_vec_len(org_apache_arrow_flatbuf_Decimal_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Decimal_table_t org_apache_arrow_flatbuf_Decimal_vec_at(org_apache_arrow_flatbuf_Decimal_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Decimal_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Decimal)

/**  Total number of decimal digits */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Decimal, precision, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of digits after the decimal point "." */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Decimal, scale, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of bits per value. The accepted widths are 32, 64, 128 and 256.
 *  We use bitWidth for consistency with Int::bitWidth. */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_Decimal, bitWidth, flatbuffers_int32, int32_t, INT32_C(128))

/**  Date is either a 32-bit or 64-bit signed integer type representing an
 *  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 org_apache_arrow_flatbuf_Date_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Date_vec_len(org_apache_arrow_flatbuf_Date_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Date_table_t org_apache_arrow_flatbuf_Date_vec_at(org_apache_arrow_flatbuf_Date_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Date_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Date)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Date, unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, INT16_C(1))

/**  Time is either a 32-bit or 64-bit signed integer type representing an
 *  elapsed time since midnight, stored in either of four units: seconds,
 *  milliseconds, microseconds or nanoseconds.
 *
 *  The integer `bitWidth` depends on the `unit` and must be one of the following:
 *  * SECOND and MILLISECOND: 32 bits
 *  * MICROSECOND and NANOSECOND: 64 bits
 *
 *  The allowed values are between 0 (inclusive) and 86400 (=24*60*60) seconds
 *  (exclusive), adjusted for the time unit (for example, up to 86400000
 *  exclusive for the MILLISECOND unit).
 *  This definition doesn't allow for leap seconds. Time values from
 *  measurements with leap seconds will need to be corrected when ingesting
 *  into Arrow (for example by replacing the value 86400 with 86399). */
struct org_apache_arrow_flatbuf_Time_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Time_vec_len(org_apache_arrow_flatbuf_Time_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Time_table_t org_apache_arrow_flatbuf_Time_vec_at(org_apache_arrow_flatbuf_Time_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Time_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Time)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Time, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Time, bitWidth, flatbuffers_int32, int32_t, INT32_C(32))

/**  Timestamp is a 64-bit signed integer representing an elapsed time since a
 *  fixed epoch, stored in either of four units: seconds, milliseconds,
 *  microseconds or nanoseconds, and is optionally annotated with a timezone.
 *
 *  Timestamp values do not include any leap seconds (in other words, all
 *  days are considered 86400 seconds long).
 *
 *  Timestamps with a non-empty timezone
 *  ------------------------------------
 *
 *  If a Timestamp column has a non-empty timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in the *UTC* timezone
 *  (the Unix epoch), regardless of the Timestamp's own timezone.
 *
 *  Therefore, timestamp values with a non-empty timezone correspond to
 *  physical points in time together with some additional information about
 *  how the data was obtained and/or how to display it (the timezone).
 *
 *    For example, the timestamp value 0 with the timezone string "Europe/Paris"
 *    corresponds to "January 1st 1970, 00h00" in the UTC timezone, but the
 *    application may prefer to display it as "January 1st 1970, 01h00" in
 *    the Europe/Paris timezone (which is the same physical point in time).
 *
 *  One consequence is that timestamp values with a non-empty timezone
 *  can be compared and ordered directly, since they all share the same
 *  well-known point of reference (the Unix epoch).
 *
 *  Timestamps with an unset / empty timezone
 *  -----------------------------------------
 *
 *  If a Timestamp column has no timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in an *unknown* timezone.
 *
 *  Therefore, timestamp values without a timezone cannot be meaningfully
 *  interpreted as physical points in time, but only as calendar / clock
 *  indications ("wall clock time") in an unspecified timezone.
 *
 *    For example, the timestamp value 0 with an empty timezone string
 *    corresponds to "January 1st 1970, 00h00" in an unknown timezone: there
 *    is not enough information to interpret it as a well-defined physical
 *    point in time.
 *
 *  One consequence is that timestamp values without a timezone cannot
 *  be reliably compared or ordered, since they may have different points of
 *  reference.  In particular, it is *not* possible to interpret an unset
 *  or empty timezone as the same as "UTC".
 *
 *  Conversion between timezones
 *  ----------------------------
 *
 *  If a Timestamp column has a non-empty timezone, changing the timezone
 *  to a different non-empty value is a metadata-only operation:
 *  the timestamp values need not change as their point of reference remains
 *  the same (the Unix epoch).
 *
 *  However, if a Timestamp column has no timezone value, changing it to a
 *  non-empty value requires to think about the desired semantics.
 *  One possibility is to assume that the original timestamp values are
 *  relative to the epoch of the timezone being set; timestamp values should
 *  then adjusted to the Unix epoch (for example, changing the timezone from
 *  empty to "Europe/Paris" would require converting the timestamp values
 *  from "Europe/Paris" to "UTC", which seems counter-intuitive but is
 *  nevertheless correct).
 *
 *  Guidelines for encoding data from external libraries
 *  ----------------------------------------------------
 *
 *  Date & time libraries often have multiple different data types for temporal
 *  data. In order to ease interoperability between different implementations the
 *  Arrow project has some recommendations for encoding these types into a Timestamp
 *  column.
 *
 *  An "instant" represents a physical point in time that has no relevant timezone
 *  (for example, astronomical data). To encode an instant, use a Timestamp with
 *  the timezone string set to "UTC", and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *  A "zoned date-time" represents a physical point in time annotated with an
 *  informative timezone (for example, the timezone in which the data was
 *  recorded).  To encode a zoned date-time, use a Timestamp with the timezone
 *  string set to the name of the timezone, and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *   (There is some ambiguity between an instant and a zoned date-time with the
 *    UTC timezone.  Both of these are stored the same in Arrow.  Typically,
 *    this distinction does not matter.  If it does, then an application should
 *    use custom metadata or an extension type to distinguish between the two cases.)
 *
 *  An "offset date-time" represents a physical point in time combined with an
 *  explicit offset from UTC.  To encode an offset date-time, use a Timestamp
 *  with the timezone string set to the numeric timezone offset string
 *  (e.g. "+03:00"), and make sure the Timestamp values are relative to
 *  the UTC epoch (January 1st 1970, midnight).
 *
 *  A "naive date-time" (also called "local date-time" in some libraries)
 *  represents a wall clock time combined with a calendar date, but with
 *  no indication of how to map this information to a physical point in time.
 *  Naive date-times must be handled with care because of this missing
 *  information, and also because daylight saving time (DST) may make
 *  some values ambiguous or nonexistent. A naive date-time may be
 *  stored as a struct with Date and Time fields. However, it may also be
 *  encoded into a Timestamp column with an empty timezone. The timestamp
 *  values should be computed "as if" the timezone of the date-time values
 *  was UTC; for example, the naive date-time "January 1st 1970, 00h00" would
 *  be encoded as timestamp value 0. */
struct org_apache_arrow_flatbuf_Timestamp_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Timestamp_vec_len(org_apache_arrow_flatbuf_Timestamp_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Timestamp_table_t org_apache_arrow_flatbuf_Timestamp_vec_at(org_apache_arrow_flatbuf_Timestamp_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Timestamp_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Timestamp)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Timestamp, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(0))
/**  The timezone is an optional string indicating the name of a timezone,
 *  one of:
 *
 *  * As used in the Olson timezone database (the "tz database" or
 *    "tzdata"), such as "America/New_York".
 *  * An absolute timezone offset of the form "+XX:XX" or "-XX:XX",
 *    such as "+07:30".
 *
 *  Whether a timezone string is present indicates different semantics about
 *  the data (see above). */
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_Timestamp, timezone, 0)

struct org_apache_arrow_flatbuf_Interval_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Interval_vec_len(org_apache_arrow_flatbuf_Interval_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Interval_table_t org_apache_arrow_flatbuf_Interval_vec_at(org_apache_arrow_flatbuf_Interval_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Interval_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Interval)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Interval, unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, INT16_C(0))

struct org_apache_arrow_flatbuf_Duration_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Duration_vec_len(org_apache_arrow_flatbuf_Duration_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Duration_table_t org_apache_arrow_flatbuf_Duration_vec_at(org_apache_arrow_flatbuf_Duration_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Duration_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Duration)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Duration, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
/**  ----------------------------------------------------------------------
 *  Top-level Type value, enabling extensible type-specific metadata. We can
 *  add new logical types to Type without breaking backwards compatibility */
typedef uint8_t org_apache_arrow_flatbuf_Type_union_type_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Type_union_type_t, 8)
__flatbuffers_define_union(flatbuffers_, org_apache_arrow_flatbuf_Type)
/**  ----------------------------------------------------------------------
 *  user defined key value pairs to add custom metadata to arrow
 *  key namespacing is the responsibility of the user */
#define org_apache_arrow_flatbuf_Type_NONE ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(0))
#define org_apache_arrow_flatbuf_Type_Null ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(1))
#define org_apache_arrow_flatbuf_Type_Int ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(2))
#define org_apache_arrow_flatbuf_Type_FloatingPoint ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(3))
#define org_apache_arrow_flatbuf_Type_Binary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(4))
#define org_apache_arrow_flatbuf_Type_Utf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(5))
#define org_apache_arrow_flatbuf_Type_Bool ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(6))
#define org_apache_arrow_flatbuf_Type_Decimal ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(7))
#define org_apache_arrow_flatbuf_Type_Date ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(8))
#define org_apache_arrow_flatbuf_Type_Time ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(9))
#define org_apache_arrow_flatbuf_Type_Timestamp ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(10))
#define org_apache_arrow_flatbuf_Type_Interval ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(11))
#define org_apache_arrow_flatbuf_Type_List ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(12))
#define org_apache_arrow_flatbuf_Type_Struct_ ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(13))
#define org_apache_arrow_flatbuf_Type_Union ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(14))
#define org_apache_arrow_flatbuf_Type_FixedSizeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(15))
#define org_apache_arrow_flatbuf_Type_FixedSizeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(16))
#define org_apache_arrow_flatbuf_Type_Map ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(17))
#define org_apache_arrow_flatbuf_Type_Duration ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(18))
#define org_apache_arrow_flatbuf_Type_LargeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(19))
#define org_apache_arrow_flatbuf_Type_LargeUtf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(20))
#define org_apache_arrow_flatbuf_Type_LargeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(21))
#define org_apache_arrow_flatbuf_Type_RunEndEncoded ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(22))
#define org_apache_arrow_flatbuf_Type_BinaryView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(23))
#define org_apache_arrow_flatbuf_Type_Utf8View ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(24))
#define org_apache_arrow_flatbuf_Type_ListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(25))
#define org_apache_arrow_flatbuf_Type_LargeListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(26))

static inline const char *org_apache_arrow_flatbuf_Type_type_name(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return "NONE";
    case org_apache_arrow_flatbuf_Type_Null: return "Null";
    case org_apache_arrow_flatbuf_Type_Int: return "Int";
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return "FloatingPoint";
    case org_apache_arrow_flatbuf_Type_Binary: return "Binary";
    case org_apache_arrow_flatbuf_Type_Utf8: return "Utf8";
    case org_apache_arrow_flatbuf_Type_Bool: return "Bool";
    case org_apache_arrow_flatbuf_Type_Decimal: return "Decimal";
    case org_apache_arrow_flatbuf_Type_Date: return "Date";
    case org_apache_arrow_flatbuf_Type_Time: return "Time";
    case org_apache_arrow_flatbuf_Type_Timestamp: return "Timestamp";
    case org_apache_arrow_flatbuf_Type_Interval: return "Interval";
    case org_apache_arrow_flatbuf_Type_List: return "List";
    case org_apache_arrow_flatbuf_Type_Struct_: return "Struct_";
    case org_apache_arrow_flatbuf_Type_Union: return "Union";
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return "FixedSizeBinary";
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return "FixedSizeList";
    case org_apache_arrow_flatbuf_Type_Map: return "Map";
    case org_apache_arrow_flatbuf_Type_Duration: return "Duration";
    case org_apache_arrow_flatbuf_Type_LargeBinary: return "LargeBinary";
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return "LargeUtf8";
    case org_apache_arrow_flatbuf_Type_LargeList: return "LargeList";
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return "RunEndEncoded";
    case org_apache_arrow_flatbuf_Type_BinaryView: return "BinaryView";
    case org_apache_arrow_flatbuf_Type_Utf8View: return "Utf8View";
    case org_apache_arrow_flatbuf_Type_ListView: return "ListView";
    case org_apache_arrow_flatbuf_Type_LargeListView: return "LargeListView";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Type_is_known_type(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return 1;
    case org_apache_arrow_flatbuf_Type_Null: return 1;
    case org_apache_arrow_flatbuf_Type_Int: return 1;
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return 1;
    case org_apache_arrow_flatbuf_Type_Binary: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8: return 1;
    case org_apache_arrow_flatbuf_Type_Bool: return 1;
    case org_apache_arrow_flatbuf_Type_Decimal: return 1;
    case org_apache_arrow_flatbuf_Type_Date: return 1;
    case org_apache_arrow_flatbuf_Type_Time: return 1;
    case org_apache_arrow_flatbuf_Type_Timestamp: return 1;
    case org_apache_arrow_flatbuf_Type_Interval: return 1;
    case org_apache_arrow_flatbuf_Type_List: return 1;
    case org_apache_arrow_flatbuf_Type_Struct_: return 1;
    case org_apache_arrow_flatbuf_Type_Union: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return 1;
    case org_apache_arrow_flatbuf_Type_Map: return 1;
    case org_apache_arrow_flatbuf_Type_Duration: return 1;
    case org_apache_arrow_flatbuf_Type_LargeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return 1;
    case org_apache_arrow_flatbuf_Type_LargeList: return 1;
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return 1;
    case org_apache_arrow_flatbuf_Type_BinaryView: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8View: return 1;
    case org_apache_arrow_flatbuf_Type_ListView: return 1;
    case org_apache_arrow_flatbuf_Type_LargeListView: return 1;
    default: return 0;
    }
}


struct org_apache_arrow_flatbuf_KeyValue_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_KeyValue_vec_len(org_apache_arrow_flatbuf_KeyValue_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_KeyValue_table_t org_apache_arrow_flatbuf_KeyValue_vec_at(org_apache_arrow_flatbuf_KeyValue_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_KeyValue_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_KeyValue)

__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_KeyValue, key, 0)
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_KeyValue, value, 0)

struct org_apache_arrow_flatbuf_DictionaryEncoding_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_len(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_DictionaryEncoding_table_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_DictionaryEncoding)

/**  The known dictionary id in the application where this data is used. In
 *  the file or streaming formats, the dictionary ids are found in the
 *  DictionaryBatch messages */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_DictionaryEncoding, id, flatbuffers_int64, int64_t, INT64_C(0))
/**  The dictionary indices are constrained to be non-negative integers. If
 *  this field is null, the indices must be signed int32. To maximize
 *  cross-language compatibility and performance, implementations are
 *  recommended to prefer signed integer types over unsigned integer types
 *  and to avoid uint64 indices unless they are required by an application. */
__flatbuffers_define_table_field(1, org_apache_arrow_flatbuf_DictionaryEncoding, indexType, org_apache_arrow_flatbuf_Int_table_t, 0)
/**  By default, dictionaries are not ordered, or the order does not have
 *  semantic meaning. In some statistical applications, dictionary-encoding
 *  is used to represent ordered categorical data, and we provide a way to
 *  preserve that metadata here */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_DictionaryEncoding, isOrdered, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_DictionaryEncoding, dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, INT16_C(0))

/**  ----------------------------------------------------------------------
 *  A field represents a named column in a record / row batch or child of a
 *  nested type. */
struct org_apache_arrow_flatbuf_Field_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Field_vec_len(org_apache_arrow_flatbuf_Field_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Field_table_t org_apache_arrow_flatbuf_Field_vec_at(org_apache_arrow_flatbuf_Field_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Field_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Field)

/**  Name is not required (e.g., in a List) */
__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_Field, name, 0)
/**  Whether or not this field can contain nulls. Should be true in general. */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Field, nullable, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
/**  This is the type of the decoded value if the field is dictionary encoded. */
__flatbuffers_define_union_field(flatbuffers_, 3, org_apache_arrow_flatbuf_Field, type, org_apache_arrow_flatbuf_Type, 0)
/**  Present only if the field is dictionary encoded. */
__flatbuffers_define_table_field(4, org_apache_arrow_flatbuf_Field, dictionary, org_apache_arrow_flatbuf_DictionaryEncoding_table_t, 0)
/**  children apply only to nested data types like Struct, List and Union. For
 *  primitive types children will have length 0. */
__flatbuffers_define_vector_field(5, org_apache_arrow_flatbuf_Field, children, org_apache_arrow_flatbuf_Field_vec_t, 0)
/**  User-defined metadata */
__flatbuffers_define_vector_field(6, org_apache_arrow_flatbuf_Field, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)

/**  ----------------------------------------------------------------------
 *  A Schema describes the columns in a row batch */
struct org_apache_arrow_flatbuf_Schema_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Schema_vec_len(org_apache_arrow_flatbuf_Schema_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Schema_table_t org_apache_arrow_flatbuf_Schema_vec_at(org_apache_arrow_flatbuf_Schema_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Schema_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Schema)

/**  endianness of the buffer
 *  it is Little Endian by default
 *  if endianness doesn't match the underlying system then the vectors need to be converted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Schema, endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Schema, fields, org_apache_arrow_flatbuf_Field_vec_t, 0)
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_Schema, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)
/**  Features used in the stream/file. */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_Schema, features, org_apache_arrow_flatbuf_Feature_vec_t, 0)


#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_READER_H */
#ifndef SCHEMA_BUILDER_H
#define SCHEMA_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

#define __org_apache_arrow_flatbuf_MetadataVersion_formal_args , org_apache_arrow_flatbuf_MetadataVersion_enum_t v0
#define __org_apache_arrow_flatbuf_MetadataVersion_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t)
#define __org_apache_arrow_flatbuf_Feature_formal_args , org_apache_arrow_flatbuf_Feature_enum_t v0
#define __org_apache_arrow_flatbuf_Feature_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t)
#define __org_apache_arrow_flatbuf_UnionMode_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0
#define __org_apache_arrow_flatbuf_UnionMode_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t)
#define __org_apache_arrow_flatbuf_Precision_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_Precision_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t)
#define __org_apache_arrow_flatbuf_DateUnit_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_DateUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t)
#define __org_apache_arrow_flatbuf_TimeUnit_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_TimeUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t)
#define __org_apache_arrow_flatbuf_IntervalUnit_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_IntervalUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t)
#define __org_apache_arrow_flatbuf_DictionaryKind_formal_args , org_apache_arrow_flatbuf_DictionaryKind_enum_t v0
#define __org_apache_arrow_flatbuf_DictionaryKind_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t)
#define __org_apache_arrow_flatbuf_Endianness_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0
#define __org_apache_arrow_flatbuf_Endianness_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t)

#define __org_apache_arrow_flatbuf_Buffer_formal_args , int64_t v0, int64_t v1
#define __org_apache_arrow_flatbuf_Buffer_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ p->offset = v0; p->length = v1;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ p->offset = p2->offset; p->length = p2->length;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_to_pe(&p->offset, v0); flatbuffers_int64_assign_to_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_to_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_to_pe(&p->length, &p2->length);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_from_pe(&p->offset, v0); flatbuffers_int64_assign_from_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_from_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_from_pe(&p->length, &p2->length);
  return p; }
__flatbuffers_build_struct(flatbuffers_, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_Buffer_file_identifier, org_apache_arrow_flatbuf_Buffer_type_identifier)
__flatbuffers_define_fixed_array_primitives(flatbuffers_, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t)

typedef flatbuffers_union_ref_t org_apache_arrow_flatbuf_Type_union_ref_t;
typedef flatbuffers_union_vec_ref_t org_apache_arrow_flatbuf_Type_union_vec_ref_t;
static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t t);

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Null_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Null_ref_t;
static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Null, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Struct__required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Struct__ref_t;
static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Struct_, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_List_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_List_ref_t;
static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_List, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeList_ref_t;
static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeList, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_ListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_ListView_ref_t;
static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_ListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeListView_ref_t;
static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeList_ref_t;
static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Map_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Map_ref_t;
static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Map, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Union_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Union_ref_t;
static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Union, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Int_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Int_ref_t;
static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Int, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FloatingPoint_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FloatingPoint_ref_t;
static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8_ref_t;
static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Binary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Binary_ref_t;
static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Binary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeUtf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeUtf8_ref_t;
static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeBinary_ref_t;
static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8View_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8View_ref_t;
static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_BinaryView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_BinaryView_ref_t;
static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_ref_t;
static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Bool_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Bool_ref_t;
static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Bool, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_RunEndEncoded_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_RunEndEncoded_ref_t;
static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Decimal_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Decimal_ref_t;
static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Decimal, 3)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Date_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Date_ref_t;
static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Date, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Time_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Time_ref_t;
static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Time, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Timestamp_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Timestamp_ref_t;
static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Interval_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Interval_ref_t;
static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Interval, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Duration_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Duration_ref_t;
static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Duration, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_KeyValue_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_KeyValue_ref_t;
static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_DictionaryEncoding_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_ref_t;
static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, 4)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Field_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Field_ref_t;
static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Field, 7)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Schema_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Schema_ref_t;
static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Schema, 4)

#define __org_apache_arrow_flatbuf_Null_formal_args
#define __org_apache_arrow_flatbuf_Null_call_args
static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Null, org_apache_arrow_flatbuf_Null_file_identifier, org_apache_arrow_flatbuf_Null_type_identifier)

#define __org_apache_arrow_flatbuf_Struct__formal_args
#define __org_apache_arrow_flatbuf_Struct__call_args
static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Struct_, org_apache_arrow_flatbuf_Struct__file_identifier, org_apache_arrow_flatbuf_Struct__type_identifier)

#define __org_apache_arrow_flatbuf_List_formal_args
#define __org_apache_arrow_flatbuf_List_call_args
static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_List, org_apache_arrow_flatbuf_List_file_identifier, org_apache_arrow_flatbuf_List_type_identifier)

#define __org_apache_arrow_flatbuf_LargeList_formal_args
#define __org_apache_arrow_flatbuf_LargeList_call_args
static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeList, org_apache_arrow_flatbuf_LargeList_file_identifier, org_apache_arrow_flatbuf_LargeList_type_identifier)

#define __org_apache_arrow_flatbuf_ListView_formal_args
#define __org_apache_arrow_flatbuf_ListView_call_args
static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_ListView, org_apache_arrow_flatbuf_ListView_file_identifier, org_apache_arrow_flatbuf_ListView_type_identifier)

#define __org_apache_arrow_flatbuf_LargeListView_formal_args
#define __org_apache_arrow_flatbuf_LargeListView_call_args
static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, org_apache_arrow_flatbuf_LargeListView_file_identifier, org_apache_arrow_flatbuf_LargeListView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeList_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeList_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList_file_identifier, org_apache_arrow_flatbuf_FixedSizeList_type_identifier)

#define __org_apache_arrow_flatbuf_Map_formal_args , flatbuffers_bool_t v0
#define __org_apache_arrow_flatbuf_Map_call_args , v0
static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Map, org_apache_arrow_flatbuf_Map_file_identifier, org_apache_arrow_flatbuf_Map_type_identifier)

#define __org_apache_arrow_flatbuf_Union_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0, flatbuffers_int32_vec_ref_t v1
#define __org_apache_arrow_flatbuf_Union_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Union, org_apache_arrow_flatbuf_Union_file_identifier, org_apache_arrow_flatbuf_Union_type_identifier)

#define __org_apache_arrow_flatbuf_Int_formal_args , int32_t v0, flatbuffers_bool_t v1
#define __org_apache_arrow_flatbuf_Int_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_Int_file_identifier, org_apache_arrow_flatbuf_Int_type_identifier)

#define __org_apache_arrow_flatbuf_FloatingPoint_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_FloatingPoint_call_args , v0
static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint_file_identifier, org_apache_arrow_flatbuf_FloatingPoint_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8_formal_args
#define __org_apache_arrow_flatbuf_Utf8_call_args
static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8, org_apache_arrow_flatbuf_Utf8_file_identifier, org_apache_arrow_flatbuf_Utf8_type_identifier)

#define __org_apache_arrow_flatbuf_Binary_formal_args
#define __org_apache_arrow_flatbuf_Binary_call_args
static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Binary, org_apache_arrow_flatbuf_Binary_file_identifier, org_apache_arrow_flatbuf_Binary_type_identifier)

#define __org_apache_arrow_flatbuf_LargeUtf8_formal_args
#define __org_apache_arrow_flatbuf_LargeUtf8_call_args
static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8_file_identifier, org_apache_arrow_flatbuf_LargeUtf8_type_identifier)

#define __org_apache_arrow_flatbuf_LargeBinary_formal_args
#define __org_apache_arrow_flatbuf_LargeBinary_call_args
static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, org_apache_arrow_flatbuf_LargeBinary_file_identifier, org_apache_arrow_flatbuf_LargeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8View_formal_args
#define __org_apache_arrow_flatbuf_Utf8View_call_args
static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, org_apache_arrow_flatbuf_Utf8View_file_identifier, org_apache_arrow_flatbuf_Utf8View_type_identifier)

#define __org_apache_arrow_flatbuf_BinaryView_formal_args
#define __org_apache_arrow_flatbuf_BinaryView_call_args
static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, org_apache_arrow_flatbuf_BinaryView_file_identifier, org_apache_arrow_flatbuf_BinaryView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeBinary_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Bool_formal_args
#define __org_apache_arrow_flatbuf_Bool_call_args
static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Bool, org_apache_arrow_flatbuf_Bool_file_identifier, org_apache_arrow_flatbuf_Bool_type_identifier)

#define __org_apache_arrow_flatbuf_RunEndEncoded_formal_args
#define __org_apache_arrow_flatbuf_RunEndEncoded_call_args
static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded_file_identifier, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier)

#define __org_apache_arrow_flatbuf_Decimal_formal_args , int32_t v0, int32_t v1, int32_t v2
#define __org_apache_arrow_flatbuf_Decimal_call_args , v0, v1, v2
static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Decimal, org_apache_arrow_flatbuf_Decimal_file_identifier, org_apache_arrow_flatbuf_Decimal_type_identifier)

#define __org_apache_arrow_flatbuf_Date_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Date_call_args , v0
static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Date, org_apache_arrow_flatbuf_Date_file_identifier, org_apache_arrow_flatbuf_Date_type_identifier)

#define __org_apache_arrow_flatbuf_Time_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, int32_t v1
#define __org_apache_arrow_flatbuf_Time_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Time, org_apache_arrow_flatbuf_Time_file_identifier, org_apache_arrow_flatbuf_Time_type_identifier)

#define __org_apache_arrow_flatbuf_Timestamp_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_Timestamp_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, org_apache_arrow_flatbuf_Timestamp_file_identifier, org_apache_arrow_flatbuf_Timestamp_type_identifier)

#define __org_apache_arrow_flatbuf_Interval_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Interval_call_args , v0
static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Interval, org_apache_arrow_flatbuf_Interval_file_identifier, org_apache_arrow_flatbuf_Interval_type_identifier)

#define __org_apache_arrow_flatbuf_Duration_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Duration_call_args , v0
static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Duration, org_apache_arrow_flatbuf_Duration_file_identifier, org_apache_arrow_flatbuf_Duration_type_identifier)

#define __org_apache_arrow_flatbuf_KeyValue_formal_args , flatbuffers_string_ref_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_KeyValue_call_args , v0, v1
static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_KeyValue_file_identifier, org_apache_arrow_flatbuf_KeyValue_type_identifier)

#define __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args , int64_t v0, org_apache_arrow_flatbuf_Int_ref_t v1, flatbuffers_bool_t v2, org_apache_arrow_flatbuf_DictionaryKind_enum_t v3
#define __org_apache_arrow_flatbuf_DictionaryEncoding_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier)

#define __org_apache_arrow_flatbuf_Field_formal_args ,\
  flatbuffers_string_ref_t v0, flatbuffers_bool_t v1, org_apache_arrow_flatbuf_Type_union_ref_t v3, org_apache_arrow_flatbuf_DictionaryEncoding_ref_t v4, org_apache_arrow_flatbuf_Field_vec_ref_t v5, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v6
#define __org_apache_arrow_flatbuf_Field_call_args ,\
  v0, v1, v3, v4, v5, v6
static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field_file_identifier, org_apache_arrow_flatbuf_Field_type_identifier)

#define __org_apache_arrow_flatbuf_Schema_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0, org_apache_arrow_flatbuf_Field_vec_ref_t v1, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v2, org_apache_arrow_flatbuf_Feature_vec_ref_t v3
#define __org_apache_arrow_flatbuf_Schema_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Schema, org_apache_arrow_flatbuf_Schema_file_identifier, org_apache_arrow_flatbuf_Schema_type_identifier)

static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_NONE(void)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_NONE; uref.value = 0; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Null; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Int; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FloatingPoint; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Binary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Bool; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Decimal; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Date; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Time; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Timestamp; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Interval; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_List; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Struct_; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Union; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Map; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Duration; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeUtf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_RunEndEncoded; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_BinaryView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8View; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_ListView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeListView; uref.value = ref; return uref; }
__flatbuffers_build_union_vector(flatbuffers_, org_apache_arrow_flatbuf_Type)

static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t u)
{
    switch (u.type) {
    case 1: return org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_clone(B, (org_apache_arrow_flatbuf_Null_table_t)u.value));
    case 2: return org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_clone(B, (org_apache_arrow_flatbuf_Int_table_t)u.value));
    case 3: return org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_clone(B, (org_apache_arrow_flatbuf_FloatingPoint_table_t)u.value));
    case 4: return org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_clone(B, (org_apache_arrow_flatbuf_Binary_table_t)u.value));
    case 5: return org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_clone(B, (org_apache_arrow_flatbuf_Utf8_table_t)u.value));
    case 6: return org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_clone(B, (org_apache_arrow_flatbuf_Bool_table_t)u.value));
    case 7: return org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_clone(B, (org_apache_arrow_flatbuf_Decimal_table_t)u.value));
    case 8: return org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_clone(B, (org_apache_arrow_flatbuf_Date_table_t)u.value));
    case 9: return org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_clone(B, (org_apache_arrow_flatbuf_Time_table_t)u.value));
    case 10: return org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_clone(B, (org_apache_arrow_flatbuf_Timestamp_table_t)u.value));
    case 11: return org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_clone(B, (org_apache_arrow_flatbuf_Interval_table_t)u.value));
    case 12: return org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_clone(B, (org_apache_arrow_flatbuf_List_table_t)u.value));
    case 13: return org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__clone(B, (org_apache_arrow_flatbuf_Struct__table_t)u.value));
    case 14: return org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_clone(B, (org_apache_arrow_flatbuf_Union_table_t)u.value));
    case 15: return org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_clone(B, (org_apache_arrow_flatbuf_FixedSizeBinary_table_t)u.value));
    case 16: return org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_clone(B, (org_apache_arrow_flatbuf_FixedSizeList_table_t)u.value));
    case 17: return org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_clone(B, (org_apache_arrow_flatbuf_Map_table_t)u.value));
    case 18: return org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_clone(B, (org_apache_arrow_flatbuf_Duration_table_t)u.value));
    case 19: return org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_clone(B, (org_apache_arrow_flatbuf_LargeBinary_table_t)u.value));
    case 20: return org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_clone(B, (org_apache_arrow_flatbuf_LargeUtf8_table_t)u.value));
    case 21: return org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_clone(B, (org_apache_arrow_flatbuf_LargeList_table_t)u.value));
    case 22: return org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_clone(B, (org_apache_arrow_flatbuf_RunEndEncoded_table_t)u.value));
    case 23: return org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_clone(B, (org_apache_arrow_flatbuf_BinaryView_table_t)u.value));
    case 24: return org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_clone(B, (org_apache_arrow_flatbuf_Utf8View_table_t)u.value));
    case 25: return org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_clone(B, (org_apache_arrow_flatbuf_ListView_table_t)u.value));
    case 26: return org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_clone(B, (org_apache_arrow_flatbuf_LargeListView_table_t)u.value));
    default: return org_apache_arrow_flatbuf_Type_as_NONE();
    }
}


static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args)
{
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Null_end(B);
}

static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Null_end(B));
}


static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args)
{
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Struct__end(B);
}

static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Struct__end(B));
}


static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args)
{
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_List_end(B);
}

static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_List_end(B));
}


static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeList_end(B);
}

static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeList_end(B));
}


static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args)
{
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_ListView_end(B);
}

static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_ListView_end(B));
}


static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeListView_end(B);
}

static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeListView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList_listSize, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeList)

static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeList_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeList_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Map_keysSorted, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Map)

static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args)
{
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Map_end(B);
}

static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Map_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Union_mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Union)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Union_typeIds, flatbuffers_int32, int32_t, org_apache_arrow_flatbuf_Union)

static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args)
{
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_add(B, v1)
        || org_apache_arrow_flatbuf_Union_mode_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Union_end(B);
}

static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_pick(B, t)
        || org_apache_arrow_flatbuf_Union_mode_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Union_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Int_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Int)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Int_is_signed, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Int)

static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args)
{
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_add(B, v0)
        || org_apache_arrow_flatbuf_Int_is_signed_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Int_end(B);
}

static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Int_is_signed_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Int_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint_precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_FloatingPoint)

static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args)
{
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FloatingPoint_end(B);
}

static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FloatingPoint_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8_end(B);
}

static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8_end(B));
}


static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args)
{
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Binary_end(B);
}

static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Binary_end(B));
}


static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeUtf8_end(B);
}

static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeUtf8_end(B));
}


static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeBinary_end(B);
}

static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8View_end(B);
}

static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8View_end(B));
}


static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args)
{
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_BinaryView_end(B);
}

static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_BinaryView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeBinary)

static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeBinary_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args)
{
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Bool_end(B);
}

static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Bool_end(B));
}


static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args)
{
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_RunEndEncoded_end(B);
}

static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_RunEndEncoded_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Decimal_precision, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Decimal_scale, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_Decimal_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(128), org_apache_arrow_flatbuf_Decimal)

static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args)
{
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_add(B, v0)
        || org_apache_arrow_flatbuf_Decimal_scale_add(B, v1)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Decimal_end(B);
}

static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_scale_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Decimal_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Date_unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Date)

static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args)
{
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Date_end(B);
}

static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Date_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Time_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Time)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Time_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(32), org_apache_arrow_flatbuf_Time)

static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args)
{
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_add(B, v1)
        || org_apache_arrow_flatbuf_Time_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Time_end(B);
}

static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Time_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Time_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_timezone, org_apache_arrow_flatbuf_Timestamp)

static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args)
{
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_add(B, v1)
        || org_apache_arrow_flatbuf_Timestamp_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Timestamp_end(B);
}

static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_pick(B, t)
        || org_apache_arrow_flatbuf_Timestamp_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Timestamp_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Interval_unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Interval)

static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args)
{
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Interval_end(B);
}

static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Interval_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Duration_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Duration)

static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args)
{
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Duration_end(B);
}

static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Duration_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_key, org_apache_arrow_flatbuf_KeyValue)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_value, org_apache_arrow_flatbuf_KeyValue)

static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args)
{
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_add(B, v0)
        || org_apache_arrow_flatbuf_KeyValue_value_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_KeyValue_end(B);
}

static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_pick(B, t)
        || org_apache_arrow_flatbuf_KeyValue_value_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_KeyValue_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_id, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_table_field(1, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_indexType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)

static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args)
{
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_add(B, v0)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_add(B, v1)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_add(B, v3)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_DictionaryEncoding_end(B);
}

static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_DictionaryEncoding_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_Field_name, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Field_nullable, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_field(3, flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_field(4, flatbuffers_, org_apache_arrow_flatbuf_Field_dictionary, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(5, flatbuffers_, org_apache_arrow_flatbuf_Field_children, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(6, flatbuffers_, org_apache_arrow_flatbuf_Field_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Field)

static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args)
{
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_add(B, v0)
        || org_apache_arrow_flatbuf_Field_type_add_value(B, v3)
        || org_apache_arrow_flatbuf_Field_dictionary_add(B, v4)
        || org_apache_arrow_flatbuf_Field_children_add(B, v5)
        || org_apache_arrow_flatbuf_Field_custom_metadata_add(B, v6)
        || org_apache_arrow_flatbuf_Field_nullable_add(B, v1)
        || org_apache_arrow_flatbuf_Field_type_add_type(B, v3.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Field_end(B);
}

static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_pick(B, t)
        || org_apache_arrow_flatbuf_Field_type_pick(B, t)
        || org_apache_arrow_flatbuf_Field_dictionary_pick(B, t)
        || org_apache_arrow_flatbuf_Field_children_pick(B, t)
        || org_apache_arrow_flatbuf_Field_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Field_nullable_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Field_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Schema_endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Schema_fields, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_Schema_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_Schema_features, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, org_apache_arrow_flatbuf_Schema)

static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args)
{
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_add(B, v1)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_add(B, v2)
        || org_apache_arrow_flatbuf_Schema_features_add(B, v3)
        || org_apache_arrow_flatbuf_Schema_endianness_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Schema_end(B);
}

static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_features_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_endianness_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Schema_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_BUILDER_H */
#ifndef SCHEMA_VERIFIER_H
#define SCHEMA_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_Type_union_verifier(flatcc_union_verifier_descriptor_t *ud)
{
    switch (ud->type) {
    case 1: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Null_verify_table); /* Null */
    case 2: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Int_verify_table); /* Int */
    case 3: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FloatingPoint_verify_table); /* FloatingPoint */
    case 4: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Binary_verify_table); /* Binary */
    case 5: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8_verify_table); /* Utf8 */
    case 6: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Bool_verify_table); /* Bool */
    case 7: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Decimal_verify_table); /* Decimal */
    case 8: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Date_verify_table); /* Date */
    case 9: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Time_verify_table); /* Time */
    case 10: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Timestamp_verify_table); /* Timestamp */
    case 11: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Interval_verify_table); /* Interval */
    case 12: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_List_verify_table); /* List */
    case 13: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Struct__verify_table); /* Struct_ */
    case 14: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Union_verify_table); /* Union */
    case 15: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeBinary_verify_table); /* FixedSizeBinary */
    case 16: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeList_verify_table); /* FixedSizeList */
    case 17: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Map_verify_table); /* Map */
    case 18: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Duration_verify_table); /* Duration */
    case 19: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeBinary_verify_table); /* LargeBinary */
    case 20: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeUtf8_verify_table); /* LargeUtf8 */
    case 21: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeList_verify_table); /* LargeList */
    case 22: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_RunEndEncoded_verify_table); /* RunEndEncoded */
    case 23: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_BinaryView_verify_table); /* BinaryView */
    case 24: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8View_verify_table); /* Utf8View */
    case 25: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_ListView_verify_table); /* ListView */
    case 26: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeListView_verify_table); /* LargeListView */
    default: return flatcc_verify_ok;
    }
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, fid, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, fid, 16, 8);
}

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* listSize */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 1, 1) /* keysSorted */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* mode */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 0, 4, 4, INT64_C(1073741823)) /* typeIds */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* bitWidth */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* is_signed */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* precision */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* byteWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* precision */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* scale */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* timezone */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* key */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* value */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* id */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 1, 0, &org_apache_arrow_flatbuf_Int_verify_table) /* indexType */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 1, 1) /* isOrdered */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 2, 2) /* dictionaryKind */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* name */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* nullable */)) return ret;
    if ((ret = flatcc_verify_union_field(td, 3, 0, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 4, 0, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table) /* dictionary */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 5, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* children */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 6, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* endianness */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 1, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* fields */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 0, 8, 8, INT64_C(536870911)) /* features */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_VERIFIER_H */
#ifndef FILE_READER_H
#define FILE_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

typedef struct org_apache_arrow_flatbuf_Block org_apache_arrow_flatbuf_Block_t;
typedef const org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_struct_t;
typedef org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_mutable_struct_t;
typedef const org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_vec_t;
typedef org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_mutable_vec_t;

typedef const struct org_apache_arrow_flatbuf_Footer_table *org_apache_arrow_flatbuf_Footer_table_t;
typedef struct org_apache_arrow_flatbuf_Footer_table *org_apache_arrow_flatbuf_Footer_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Footer_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Footer_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_Footer_file_identifier
#define org_apache_arrow_flatbuf_Footer_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Footer_file_identifier */
#ifndef org_apache_arrow_flatbuf_Footer_identifier
#define org_apache_arrow_flatbuf_Footer_identifier 0
#endif
#define org_apache_arrow_flatbuf_Footer_type_hash ((flatbuffers_thash_t)0x65df4be3)
#define org_apache_arrow_flatbuf_Footer_type_identifier "\xe3\x4b\xdf\x65"
#ifndef org_apache_arrow_flatbuf_Footer_file_extension
#define org_apache_arrow_flatbuf_Footer_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Block_file_identifier
#define org_apache_arrow_flatbuf_Block_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Block_file_identifier */
#ifndef org_apache_arrow_flatbuf_Block_identifier
#define org_apache_arrow_flatbuf_Block_identifier 0
#endif
#define org_apache_arrow_flatbuf_Block_type_hash ((flatbuffers_thash_t)0xdc6d4841)
#define org_apache_arrow_flatbuf_Block_type_identifier "\x41\x48\x6d\xdc"
#ifndef org_apache_arrow_flatbuf_Block_file_extension
#define org_apache_arrow_flatbuf_Block_file_extension "bin"
#endif


struct org_apache_arrow_flatbuf_Block {
    /**  Index to the start of the RecordBatch (note this is past the Message header) */
    alignas(8) int64_t offset;
    /**  Length of the metadata */
    alignas(4) int32_t metaDataLength;
    /**  Length of the data (this is aligned so there can be a gap between this and
     *  the metadata). */
    alignas(8) int64_t bodyLength;
};
static_assert(sizeof(org_apache_arrow_flatbuf_Block_t) == 24, "struct size mismatch");

static inline const org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block__const_ptr_add(const org_apache_arrow_flatbuf_Block_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block__ptr_add(org_apache_arrow_flatbuf_Block_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Block_struct_t org_apache_arrow_flatbuf_Block_vec_at(org_apache_arrow_flatbuf_Block_vec_t vec, size_t i)
__flatbuffers_struct_vec_at(vec, i)
static inline size_t org_apache_arrow_flatbuf_Block__size(void) { return 24; }
static inline size_t org_apache_arrow_flatbuf_Block_vec_len(org_apache_arrow_flatbuf_Block_vec_t vec)
__flatbuffers_vec_len(vec)
__flatbuffers_struct_as_root(org_apache_arrow_flatbuf_Block)

__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Block, offset, flatbuffers_int64, int64_t)
__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Block, metaDataLength, flatbuffers_int32, int32_t)
__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Block, bodyLength, flatbuffers_int64, int64_t)


/**  ----------------------------------------------------------------------
 *  Arrow File metadata
 *  */
struct org_apache_arrow_flatbuf_Footer_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Footer_vec_len(org_apache_arrow_flatbuf_Footer_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Footer_table_t org_apache_arrow_flatbuf_Footer_vec_at(org_apache_arrow_flatbuf_Footer_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Footer_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Footer)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Footer, version, org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t, INT16_C(0))
__flatbuffers_define_table_field(1, org_apache_arrow_flatbuf_Footer, schema, org_apache_arrow_flatbuf_Schema_table_t, 0)
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_Footer, dictionaries, org_apache_arrow_flatbuf_Block_vec_t, 0)
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_Footer, recordBatches, org_apache_arrow_flatbuf_Block_vec_t, 0)
/**  User-defined metadata */
__flatbuffers_define_vector_field(4, org_apache_arrow_flatbuf_Footer, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)


#include "flatcc/flatcc_epilogue.h"
#endif /* FILE_READER_H */
#ifndef FILE_BUILDER_H
#define FILE_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FILE_READER_H
#include "File_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#ifndef SCHEMA_BUILDER_H
#include "Schema_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

#define __org_apache_arrow_flatbuf_Block_formal_args , int64_t v0, int32_t v1, int64_t v2
#define __org_apache_arrow_flatbuf_Block_call_args , v0, v1, v2
static inline org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_assign(org_apache_arrow_flatbuf_Block_t *p, int64_t v0, int32_t v1, int64_t v2)
{ p->offset = v0; p->metaDataLength = v1; p->bodyLength = v2;
  return p; }
static inline org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_copy(org_apache_arrow_flatbuf_Block_t *p, const org_apache_arrow_flatbuf_Block_t *p2)
{ p->offset = p2->offset; p->metaDataLength = p2->metaDataLength; p->bodyLength = p2->bodyLength;
  return p; }
static inline org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_assign_to_pe(org_apache_arrow_flatbuf_Block_t *p, int64_t v0, int32_t v1, int64_t v2)
{ flatbuffers_int64_assign_to_pe(&p->offset, v0); flatbuffers_int32_assign_to_pe(&p->metaDataLength, v1); flatbuffers_int64_assign_to_pe(&p->bodyLength, v2);
  return p; }
static inline org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_copy_to_pe(org_apache_arrow_flatbuf_Block_t *p, const org_apache_arrow_flatbuf_Block_t *p2)
{ flatbuffers_int64_copy_to_pe(&p->offset, &p2->offset); flatbuffers_int32_copy_to_pe(&p->metaDataLength, &p2->metaDataLength); flatbuffers_int64_copy_to_pe(&p->bodyLength, &p2->bodyLength);
  return p; }
static inline org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_assign_from_pe(org_apache_arrow_flatbuf_Block_t *p, int64_t v0, int32_t v1, int64_t v2)
{ flatbuffers_int64_assign_from_pe(&p->offset, v0); flatbuffers_int32_assign_from_pe(&p->metaDataLength, v1); flatbuffers_int64_assign_from_pe(&p->bodyLength, v2);
  return p; }
static inline org_apache_arrow_flatbuf_Block_t *org_apache_arrow_flatbuf_Block_copy_from_pe(org_apache_arrow_flatbuf_Block_t *p, const org_apache_arrow_flatbuf_Block_t *p2)
{ flatbuffers_int64_copy_from_pe(&p->offset, &p2->offset); flatbuffers_int32_copy_from_pe(&p->metaDataLength, &p2->metaDataLength); flatbuffers_int64_copy_from_pe(&p->bodyLength, &p2->bodyLength);
  return p; }
__flatbuffers_build_struct(flatbuffers_, org_apache_arrow_flatbuf_Block, 24, 8, org_apache_arrow_flatbuf_Block_file_identifier, org_apache_arrow_flatbuf_Block_type_identifier)
__flatbuffers_define_fixed_array_primitives(flatbuffers_, org_apache_arrow_flatbuf_Block, org_apache_arrow_flatbuf_Block_t)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Footer_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Footer_ref_t;
static org_apache_arrow_flatbuf_Footer_ref_t org_apache_arrow_flatbuf_Footer_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Footer_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Footer, 5)

#define __org_apache_arrow_flatbuf_Footer_formal_args ,\
  org_apache_arrow_flatbuf_MetadataVersion_enum_t v0, org_apache_arrow_flatbuf_Schema_ref_t v1, org_apache_arrow_flatbuf_Block_vec_ref_t v2, org_apache_arrow_flatbuf_Block_vec_ref_t v3, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v4
#define __org_apache_arrow_flatbuf_Footer_call_args ,\
  v0, v1, v2, v3, v4
static inline org_apache_arrow_flatbuf_Footer_ref_t org_apache_arrow_flatbuf_Footer_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Footer_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Footer, org_apache_arrow_flatbuf_Footer_file_identifier, org_apache_arrow_flatbuf_Footer_type_identifier)

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Footer_version, org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Footer)
__flatbuffers_build_table_field(1, flatbuffers_, org_apache_arrow_flatbuf_Footer_schema, org_apache_arrow_flatbuf_Schema, org_apache_arrow_flatbuf_Footer)
__flatbuffers_build_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_Footer_dictionaries, org_apache_arrow_flatbuf_Block, org_apache_arrow_flatbuf_Block_t, org_apache_arrow_flatbuf_Footer)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_Footer_recordBatches, org_apache_arrow_flatbuf_Block, org_apache_arrow_flatbuf_Block_t, org_apache_arrow_flatbuf_Footer)
__flatbuffers_build_table_vector_field(4, flatbuffers_, org_apache_arrow_flatbuf_Footer_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Footer)

static inline org_apache_arrow_flatbuf_Footer_ref_t org_apache_arrow_flatbuf_Footer_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Footer_formal_args)
{
    if (org_apache_arrow_flatbuf_Footer_start(B)
        || org_apache_arrow_flatbuf_Footer_schema_add(B, v1)
        || org_apache_arrow_flatbuf_Footer_dictionaries_add(B, v2)
        || org_apache_arrow_flatbuf_Footer_recordBatches_add(B, v3)
        || org_apache_arrow_flatbuf_Footer_custom_metadata_add(B, v4)
        || org_apache_arrow_flatbuf_Footer_version_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Footer_end(B);
}

static org_apache_arrow_flatbuf_Footer_ref_t org_apache_arrow_flatbuf_Footer_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Footer_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Footer_start(B)
        || org_apache_arrow_flatbuf_Footer_schema_pick(B, t)
        || org_apache_arrow_flatbuf_Footer_dictionaries_pick(B, t)
        || org_apache_arrow_flatbuf_Footer_recordBatches_pick(B, t)
        || org_apache_arrow_flatbuf_Footer_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Footer_version_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Footer_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* FILE_BUILDER_H */
#ifndef FILE_VERIFIER_H
#define FILE_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FILE_READER_H
#include "File_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#ifndef SCHEMA_VERIFIER_H
#include "Schema_verifier.h"
#endif
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_Footer_verify_table(flatcc_table_verifier_descriptor_t *td);

static inline int org_apache_arrow_flatbuf_Block_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Block_identifier, 24, 8);
}

static inline int org_apache_arrow_flatbuf_Block_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Block_identifier, 24, 8);
}

static inline int org_apache_arrow_flatbuf_Block_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, org_apache_arrow_flatbuf_Block_type_hash, 24, 8);
}

static inline int org_apache_arrow_flatbuf_Block_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Block_type_hash, 24, 8);
}

static inline int org_apache_arrow_flatbuf_Block_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, thash, 24, 8);
}

static inline int org_apache_arrow_flatbuf_Block_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, thash, 24, 8);
}

static inline int org_apache_arrow_flatbuf_Block_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, fid, 24, 8);
}

static inline int org_apache_arrow_flatbuf_Block_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, fid, 24, 8);
}

static int org_apache_arrow_flatbuf_Footer_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* version */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 1, 0, &org_apache_arrow_flatbuf_Schema_verify_table) /* schema */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 2, 0, 24, 8, INT64_C(178956970)) /* dictionaries */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 0, 24, 8, INT64_C(178956970)) /* recordBatches */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 4, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Footer_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Footer_identifier, &org_apache_arrow_flatbuf_Footer_verify_table);
}

static inline int org_apache_arrow_flatbuf_Footer_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Footer_identifier, &org_apache_arrow_flatbuf_Footer_verify_table);
}

static inline int org_apache_arrow_flatbuf_Footer_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Footer_type_identifier, &org_apache_arrow_flatbuf_Footer_verify_table);
}

static inline int org_apache_arrow_flatbuf_Footer_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Footer_type_identifier, &org_apache_arrow_flatbuf_Footer_verify_table);
}

static inline int org_apache_arrow_flatbuf_Footer_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Footer_verify_table);
}

static inline int org_apache_arrow_flatbuf_Footer_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Footer_verify_table);
}

static inline int org_apache_arrow_flatbuf_Footer_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Footer_verify_table);
}

static inline int org_apache_arrow_flatbuf_Footer_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Footer_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* FILE_VERIFIER_H */
#ifndef SCHEMA_READER_H
#define SCHEMA_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

typedef struct org_apache_arrow_flatbuf_Buffer org_apache_arrow_flatbuf_Buffer_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_struct_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_struct_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_vec_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_vec_t;

typedef const struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_table_t;
typedef struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__table_t;
typedef struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_table_t;
typedef struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_table_t;
typedef struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_table_t;
typedef struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_table_t;
typedef struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_table_t;
typedef struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_table_t;
typedef struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_table_t;
typedef struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_table_t;
typedef struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_table_t;
typedef struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_table_t;
typedef struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_table_t;
typedef struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_table_t;
typedef struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_table_t;
typedef struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_table_t;
typedef struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_table_t;
typedef struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_table_t;
typedef struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_table_t;
typedef struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_table_t;
typedef struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_table_t;
typedef struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_table_t;
typedef struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_table_t;
typedef struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_table_t;
typedef struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_table_t;
typedef struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_Null_file_identifier
#define org_apache_arrow_flatbuf_Null_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Null_file_identifier */
#ifndef org_apache_arrow_flatbuf_Null_identifier
#define org_apache_arrow_flatbuf_Null_identifier 0
#endif
#define org_apache_arrow_flatbuf_Null_type_hash ((flatbuffers_thash_t)0x7b36a4dd)
#define org_apache_arrow_flatbuf_Null_type_identifier "\xdd\xa4\x36\x7b"
#ifndef org_apache_arrow_flatbuf_Null_file_extension
#define org_apache_arrow_flatbuf_Null_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Struct__file_identifier
#define org_apache_arrow_flatbuf_Struct__file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Struct__file_identifier */
#ifndef org_apache_arrow_flatbuf_Struct__identifier
#define org_apache_arrow_flatbuf_Struct__identifier 0
#endif
#define org_apache_arrow_flatbuf_Struct__type_hash ((flatbuffers_thash_t)0x6310f362)
#define org_apache_arrow_flatbuf_Struct__type_identifier "\x62\xf3\x10\x63"
#ifndef org_apache_arrow_flatbuf_Struct__file_extension
#define org_apache_arrow_flatbuf_Struct__file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_List_file_identifier
#define org_apache_arrow_flatbuf_List_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_List_file_identifier */
#ifndef org_apache_arrow_flatbuf_List_identifier
#define org_apache_arrow_flatbuf_List_identifier 0
#endif
#define org_apache_arrow_flatbuf_List_type_hash ((flatbuffers_thash_t)0xd4ce5878)
#define org_apache_arrow_flatbuf_List_type_identifier "\x78\x58\xce\xd4"
#ifndef org_apache_arrow_flatbuf_List_file_extension
#define org_apache_arrow_flatbuf_List_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeList_file_identifier
#define org_apache_arrow_flatbuf_LargeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeList_identifier
#define org_apache_arrow_flatbuf_LargeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeList_type_hash ((flatbuffers_thash_t)0x38aa7e27)
#define org_apache_arrow_flatbuf_LargeList_type_identifier "\x27\x7e\xaa\x38"
#ifndef org_apache_arrow_flatbuf_LargeList_file_extension
#define org_apache_arrow_flatbuf_LargeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_ListView_file_identifier
#define org_apache_arrow_flatbuf_ListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_ListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_ListView_identifier
#define org_apache_arrow_flatbuf_ListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_ListView_type_hash ((flatbuffers_thash_t)0x23d37919)
#define org_apache_arrow_flatbuf_ListView_type_identifier "\x19\x79\xd3\x23"
#ifndef org_apache_arrow_flatbuf_ListView_file_extension
#define org_apache_arrow_flatbuf_ListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeListView_file_identifier
#define org_apache_arrow_flatbuf_LargeListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeListView_identifier
#define org_apache_arrow_flatbuf_LargeListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeListView_type_hash ((flatbuffers_thash_t)0x28efac02)
#define org_apache_arrow_flatbuf_LargeListView_type_identifier "\x02\xac\xef\x28"
#ifndef org_apache_arrow_flatbuf_LargeListView_file_extension
#define org_apache_arrow_flatbuf_LargeListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeList_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeList_type_hash ((flatbuffers_thash_t)0xcef245bb)
#define org_apache_arrow_flatbuf_FixedSizeList_type_identifier "\xbb\x45\xf2\xce"
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_extension
#define org_apache_arrow_flatbuf_FixedSizeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Map_file_identifier
#define org_apache_arrow_flatbuf_Map_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Map_file_identifier */
#ifndef org_apache_arrow_flatbuf_Map_identifier
#define org_apache_arrow_flatbuf_Map_identifier 0
#endif
#define org_apache_arrow_flatbuf_Map_type_hash ((flatbuffers_thash_t)0xcebef8e6)
#define org_apache_arrow_flatbuf_Map_type_identifier "\xe6\xf8\xbe\xce"
#ifndef org_apache_arrow_flatbuf_Map_file_extension
#define org_apache_arrow_flatbuf_Map_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Union_file_identifier
#define org_apache_arrow_flatbuf_Union_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Union_file_identifier */
#ifndef org_apache_arrow_flatbuf_Union_identifier
#define org_apache_arrow_flatbuf_Union_identifier 0
#endif
#define org_apache_arrow_flatbuf_Union_type_hash ((flatbuffers_thash_t)0x896bda57)
#define org_apache_arrow_flatbuf_Union_type_identifier "\x57\xda\x6b\x89"
#ifndef org_apache_arrow_flatbuf_Union_file_extension
#define org_apache_arrow_flatbuf_Union_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Int_file_identifier
#define org_apache_arrow_flatbuf_Int_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Int_file_identifier */
#ifndef org_apache_arrow_flatbuf_Int_identifier
#define org_apache_arrow_flatbuf_Int_identifier 0
#endif
#define org_apache_arrow_flatbuf_Int_type_hash ((flatbuffers_thash_t)0x30789001)
#define org_apache_arrow_flatbuf_Int_type_identifier "\x01\x90\x78\x30"
#ifndef org_apache_arrow_flatbuf_Int_file_extension
#define org_apache_arrow_flatbuf_Int_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FloatingPoint_file_identifier */
#ifndef org_apache_arrow_flatbuf_FloatingPoint_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_identifier 0
#endif
#define org_apache_arrow_flatbuf_FloatingPoint_type_hash ((flatbuffers_thash_t)0xf7d06268)
#define org_apache_arrow_flatbuf_FloatingPoint_type_identifier "\x68\x62\xd0\xf7"
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_extension
#define org_apache_arrow_flatbuf_FloatingPoint_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8_file_identifier
#define org_apache_arrow_flatbuf_Utf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8_identifier
#define org_apache_arrow_flatbuf_Utf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8_type_hash ((flatbuffers_thash_t)0x8fe60d37)
#define org_apache_arrow_flatbuf_Utf8_type_identifier "\x37\x0d\xe6\x8f"
#ifndef org_apache_arrow_flatbuf_Utf8_file_extension
#define org_apache_arrow_flatbuf_Utf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Binary_file_identifier
#define org_apache_arrow_flatbuf_Binary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Binary_file_identifier */
#ifndef org_apache_arrow_flatbuf_Binary_identifier
#define org_apache_arrow_flatbuf_Binary_identifier 0
#endif
#define org_apache_arrow_flatbuf_Binary_type_hash ((flatbuffers_thash_t)0x8e21a795)
#define org_apache_arrow_flatbuf_Binary_type_identifier "\x95\xa7\x21\x8e"
#ifndef org_apache_arrow_flatbuf_Binary_file_extension
#define org_apache_arrow_flatbuf_Binary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeUtf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeUtf8_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeUtf8_type_hash ((flatbuffers_thash_t)0x24ed2fb0)
#define org_apache_arrow_flatbuf_LargeUtf8_type_identifier "\xb0\x2f\xed\x24"
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_extension
#define org_apache_arrow_flatbuf_LargeUtf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_identifier
#define org_apache_arrow_flatbuf_LargeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeBinary_identifier
#define org_apache_arrow_flatbuf_LargeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeBinary_type_hash ((flatbuffers_thash_t)0xbd437872)
#define org_apache_arrow_flatbuf_LargeBinary_type_identifier "\x72\x78\x43\xbd"
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_extension
#define org_apache_arrow_flatbuf_LargeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8View_file_identifier
#define org_apache_arrow_flatbuf_Utf8View_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8View_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8View_identifier
#define org_apache_arrow_flatbuf_Utf8View_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8View_type_hash ((flatbuffers_thash_t)0xab7692)
#define org_apache_arrow_flatbuf_Utf8View_type_identifier "\x92\x76\xab\x00"
#ifndef org_apache_arrow_flatbuf_Utf8View_file_extension
#define org_apache_arrow_flatbuf_Utf8View_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_BinaryView_file_identifier
#define org_apache_arrow_flatbuf_BinaryView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_BinaryView_file_identifier */
#ifndef org_apache_arrow_flatbuf_BinaryView_identifier
#define org_apache_arrow_flatbuf_BinaryView_identifier 0
#endif
#define org_apache_arrow_flatbuf_BinaryView_type_hash ((flatbuffers_thash_t)0x18c52428)
#define org_apache_arrow_flatbuf_BinaryView_type_identifier "\x28\x24\xc5\x18"
#ifndef org_apache_arrow_flatbuf_BinaryView_file_extension
#define org_apache_arrow_flatbuf_BinaryView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_hash ((flatbuffers_thash_t)0x80d0f4ce)
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier "\xce\xf4\xd0\x80"
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_extension
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Bool_file_identifier
#define org_apache_arrow_flatbuf_Bool_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Bool_file_identifier */
#ifndef org_apache_arrow_flatbuf_Bool_identifier
#define org_apache_arrow_flatbuf_Bool_identifier 0
#endif
#define org_apache_arrow_flatbuf_Bool_type_hash ((flatbuffers_thash_t)0x96bf83f0)
#define org_apache_arrow_flatbuf_Bool_type_identifier "\xf0\x83\xbf\x96"
#ifndef org_apache_arrow_flatbuf_Bool_file_extension
#define org_apache_arrow_flatbuf_Bool_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_RunEndEncoded_file_identifier */
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_identifier 0
#endif
#define org_apache_arrow_flatbuf_RunEndEncoded_type_hash ((flatbuffers_thash_t)0x5a98bcc)
#define org_apache_arrow_flatbuf_RunEndEncoded_type_identifier "\xcc\x8b\xa9\x05"
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_extension
#define org_apache_arrow_flatbuf_RunEndEncoded_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Decimal_file_identifier
#define org_apache_arrow_flatbuf_Decimal_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Decimal_file_identifier */
#ifndef org_apache_arrow_flatbuf_Decimal_identifier
#define org_apache_arrow_flatbuf_Decimal_identifier 0
#endif
#define org_apache_arrow_flatbuf_Decimal_type_hash ((flatbuffers_thash_t)0x91d1beb7)
#define org_apache_arrow_flatbuf_Decimal_type_identifier "\xb7\xbe\xd1\x91"
#ifndef org_apache_arrow_flatbuf_Decimal_file_extension
#define org_apache_arrow_flatbuf_Decimal_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Date_file_identifier
#define org_apache_arrow_flatbuf_Date_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Date_file_identifier */
#ifndef org_apache_arrow_flatbuf_Date_identifier
#define org_apache_arrow_flatbuf_Date_identifier 0
#endif
#define org_apache_arrow_flatbuf_Date_type_hash ((flatbuffers_thash_t)0xe0ccf624)
#define org_apache_arrow_flatbuf_Date_type_identifier "\x24\xf6\xcc\xe0"
#ifndef org_apache_arrow_flatbuf_Date_file_extension
#define org_apache_arrow_flatbuf_Date_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Time_file_identifier
#define org_apache_arrow_flatbuf_Time_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Time_file_identifier */
#ifndef org_apache_arrow_flatbuf_Time_identifier
#define org_apache_arrow_flatbuf_Time_identifier 0
#endif
#define org_apache_arrow_flatbuf_Time_type_hash ((flatbuffers_thash_t)0x2442a489)
#define org_apache_arrow_flatbuf_Time_type_identifier "\x89\xa4\x42\x24"
#ifndef org_apache_arrow_flatbuf_Time_file_extension
#define org_apache_arrow_flatbuf_Time_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Timestamp_file_identifier
#define org_apache_arrow_flatbuf_Timestamp_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Timestamp_file_identifier */
#ifndef org_apache_arrow_flatbuf_Timestamp_identifier
#define org_apache_arrow_flatbuf_Timestamp_identifier 0
#endif
#define org_apache_arrow_flatbuf_Timestamp_type_hash ((flatbuffers_thash_t)0x1fddf080)
#define org_apache_arrow_flatbuf_Timestamp_type_identifier "\x80\xf0\xdd\x1f"
#ifndef org_apache_arrow_flatbuf_Timestamp_file_extension
#define org_apache_arrow_flatbuf_Timestamp_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Interval_file_identifier
#define org_apache_arrow_flatbuf_Interval_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Interval_file_identifier */
#ifndef org_apache_arrow_flatbuf_Interval_identifier
#define org_apache_arrow_flatbuf_Interval_identifier 0
#endif
#define org_apache_arrow_flatbuf_Interval_type_hash ((flatbuffers_thash_t)0x1e2d6809)
#define org_apache_arrow_flatbuf_Interval_type_identifier "\x09\x68\x2d\x1e"
#ifndef org_apache_arrow_flatbuf_Interval_file_extension
#define org_apache_arrow_flatbuf_Interval_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Duration_file_identifier
#define org_apache_arrow_flatbuf_Duration_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Duration_file_identifier */
#ifndef org_apache_arrow_flatbuf_Duration_identifier
#define org_apache_arrow_flatbuf_Duration_identifier 0
#endif
#define org_apache_arrow_flatbuf_Duration_type_hash ((flatbuffers_thash_t)0x1ecea6b0)
#define org_apache_arrow_flatbuf_Duration_type_identifier "\xb0\xa6\xce\x1e"
#ifndef org_apache_arrow_flatbuf_Duration_file_extension
#define org_apache_arrow_flatbuf_Duration_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_KeyValue_file_identifier
#define org_apache_arrow_flatbuf_KeyValue_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_KeyValue_file_identifier */
#ifndef org_apache_arrow_flatbuf_KeyValue_identifier
#define org_apache_arrow_flatbuf_KeyValue_identifier 0
#endif
#define org_apache_arrow_flatbuf_KeyValue_type_hash ((flatbuffers_thash_t)0x3b264744)
#define org_apache_arrow_flatbuf_KeyValue_type_identifier "\x44\x47\x26\x3b"
#ifndef org_apache_arrow_flatbuf_KeyValue_file_extension
#define org_apache_arrow_flatbuf_KeyValue_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier */
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_identifier 0
#endif
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_hash ((flatbuffers_thash_t)0x8c703261)
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier "\x61\x32\x70\x8c"
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_extension
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Field_file_identifier
#define org_apache_arrow_flatbuf_Field_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Field_file_identifier */
#ifndef org_apache_arrow_flatbuf_Field_identifier
#define org_apache_arrow_flatbuf_Field_identifier 0
#endif
#define org_apache_arrow_flatbuf_Field_type_hash ((flatbuffers_thash_t)0xd981525c)
#define org_apache_arrow_flatbuf_Field_type_identifier "\x5c\x52\x81\xd9"
#ifndef org_apache_arrow_flatbuf_Field_file_extension
#define org_apache_arrow_flatbuf_Field_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Buffer_file_identifier
#define org_apache_arrow_flatbuf_Buffer_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Buffer_file_identifier */
#ifndef org_apache_arrow_flatbuf_Buffer_identifier
#define org_apache_arrow_flatbuf_Buffer_identifier 0
#endif
#define org_apache_arrow_flatbuf_Buffer_type_hash ((flatbuffers_thash_t)0x519d7fea)
#define org_apache_arrow_flatbuf_Buffer_type_identifier "\xea\x7f\x9d\x51"
#ifndef org_apache_arrow_flatbuf_Buffer_file_extension
#define org_apache_arrow_flatbuf_Buffer_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Schema_file_identifier
#define org_apache_arrow_flatbuf_Schema_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Schema_file_identifier */
#ifndef org_apache_arrow_flatbuf_Schema_identifier
#define org_apache_arrow_flatbuf_Schema_identifier 0
#endif
#define org_apache_arrow_flatbuf_Schema_type_hash ((flatbuffers_thash_t)0x406570b)
#define org_apache_arrow_flatbuf_Schema_type_identifier "\x0b\x57\x06\x04"
#ifndef org_apache_arrow_flatbuf_Schema_file_extension
#define org_apache_arrow_flatbuf_Schema_file_extension "bin"
#endif

typedef int16_t org_apache_arrow_flatbuf_MetadataVersion_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t, 16)
/**  0.1.0 (October 2016). */
#define org_apache_arrow_flatbuf_MetadataVersion_V1 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_MetadataVersion_V2 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_MetadataVersion_V3 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_MetadataVersion_V4 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(3))
#define org_apache_arrow_flatbuf_MetadataVersion_V5 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(4))

static inline const char *org_apache_arrow_flatbuf_MetadataVersion_name(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return "V1";
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return "V2";
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return "V3";
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return "V4";
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return "V5";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_MetadataVersion_is_known_value(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return 1;
    default: return 0;
    }
}

/**  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 intended to represent higher level
 *       features, additional details may be 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. */
typedef int64_t org_apache_arrow_flatbuf_Feature_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, 64)
/**  Needed to make flatbuffers happy. */
#define org_apache_arrow_flatbuf_Feature_UNUSED ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(0))
#define org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(1))
#define org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(2))

static inline const char *org_apache_arrow_flatbuf_Feature_name(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return "UNUSED";
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return "DICTIONARY_REPLACEMENT";
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return "COMPRESSED_BODY";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Feature_is_known_value(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return 1;
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return 1;
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_UnionMode_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 16)
#define org_apache_arrow_flatbuf_UnionMode_Sparse ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_UnionMode_Dense ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_UnionMode_name(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return "Sparse";
    case org_apache_arrow_flatbuf_UnionMode_Dense: return "Dense";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_UnionMode_is_known_value(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return 1;
    case org_apache_arrow_flatbuf_UnionMode_Dense: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_Precision_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 16)
#define org_apache_arrow_flatbuf_Precision_HALF ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Precision_SINGLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_Precision_DOUBLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_Precision_name(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return "HALF";
    case org_apache_arrow_flatbuf_Precision_SINGLE: return "SINGLE";
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return "DOUBLE";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Precision_is_known_value(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return 1;
    case org_apache_arrow_flatbuf_Precision_SINGLE: return 1;
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_DateUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_DateUnit_DAY ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_DateUnit_MILLISECOND ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_DateUnit_name(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return "DAY";
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return "MILLISECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DateUnit_is_known_value(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return 1;
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_TimeUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_TimeUnit_SECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_TimeUnit_MILLISECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_TimeUnit_MICROSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_TimeUnit_NANOSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(3))

static inline const char *org_apache_arrow_flatbuf_TimeUnit_name(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return "SECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return "MILLISECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return "MICROSECOND";
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return "NANOSECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_TimeUnit_is_known_value(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_IntervalUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_IntervalUnit_name(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return "YEAR_MONTH";
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return "DAY_TIME";
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return "MONTH_DAY_NANO";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_IntervalUnit_is_known_value(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  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 */
typedef int16_t org_apache_arrow_flatbuf_DictionaryKind_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 16)
#define org_apache_arrow_flatbuf_DictionaryKind_DenseArray ((org_apache_arrow_flatbuf_DictionaryKind_enum_t)INT16_C(0))

static inline const char *org_apache_arrow_flatbuf_DictionaryKind_name(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return "DenseArray";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DictionaryKind_is_known_value(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  Endianness of the platform producing the data */
typedef int16_t org_apache_arrow_flatbuf_Endianness_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 16)
#define org_apache_arrow_flatbuf_Endianness_Little ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Endianness_Big ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_Endianness_name(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return "Little";
    case org_apache_arrow_flatbuf_Endianness_Big: return "Big";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Endianness_is_known_value(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return 1;
    case org_apache_arrow_flatbuf_Endianness_Big: return 1;
    default: return 0;
    }
}


/**  ----------------------------------------------------------------------
 *  A Buffer represents a single contiguous memory segment */
struct org_apache_arrow_flatbuf_Buffer {
    /**  The relative offset into the shared memory page where the bytes for this
     *  buffer starts */
    alignas(8) int64_t 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. */
    alignas(8) int64_t length;
};
static_assert(sizeof(org_apache_arrow_flatbuf_Buffer_t) == 16, "struct size mismatch");

static inline const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__const_ptr_add(const org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__ptr_add(org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_struct_t org_apache_arrow_flatbuf_Buffer_vec_at(org_apache_arrow_flatbuf_Buffer_vec_t vec, size_t i)
__flatbuffers_struct_vec_at(vec, i)
static inline size_t org_apache_arrow_flatbuf_Buffer__size(void) { return 16; }
static inline size_t org_apache_arrow_flatbuf_Buffer_vec_len(org_apache_arrow_flatbuf_Buffer_vec_t vec)
__flatbuffers_vec_len(vec)
__flatbuffers_struct_as_root(org_apache_arrow_flatbuf_Buffer)

__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, offset, flatbuffers_int64, int64_t)
__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, length, flatbuffers_int64, int64_t)


/**  These are stored in the flatbuffer in the Type union below */
struct org_apache_arrow_flatbuf_Null_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Null_vec_len(org_apache_arrow_flatbuf_Null_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Null_table_t org_apache_arrow_flatbuf_Null_vec_at(org_apache_arrow_flatbuf_Null_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Null_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Null)


/**  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 org_apache_arrow_flatbuf_Struct__table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Struct__vec_len(org_apache_arrow_flatbuf_Struct__vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Struct__table_t org_apache_arrow_flatbuf_Struct__vec_at(org_apache_arrow_flatbuf_Struct__vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Struct__table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Struct_)


struct org_apache_arrow_flatbuf_List_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_List_vec_len(org_apache_arrow_flatbuf_List_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_List_table_t org_apache_arrow_flatbuf_List_vec_at(org_apache_arrow_flatbuf_List_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_List_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_List)


/**  Same as List, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeList_vec_len(org_apache_arrow_flatbuf_LargeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeList_table_t org_apache_arrow_flatbuf_LargeList_vec_at(org_apache_arrow_flatbuf_LargeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeList)


/**  Represents the same logical types that List can, but contains offsets and
 *  sizes allowing for writes in any order and sharing of child values among
 *  list values. */
struct org_apache_arrow_flatbuf_ListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_ListView_vec_len(org_apache_arrow_flatbuf_ListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_ListView_table_t org_apache_arrow_flatbuf_ListView_vec_at(org_apache_arrow_flatbuf_ListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_ListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_ListView)


/**  Same as ListView, but with 64-bit offsets and sizes, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeListView_vec_len(org_apache_arrow_flatbuf_LargeListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeListView_table_t org_apache_arrow_flatbuf_LargeListView_vec_at(org_apache_arrow_flatbuf_LargeListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeListView)


struct org_apache_arrow_flatbuf_FixedSizeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeList_vec_len(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeList_table_t org_apache_arrow_flatbuf_FixedSizeList_vec_at(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeList)

/**  Number of list items per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeList, listSize, flatbuffers_int32, int32_t, INT32_C(0))

/**  A Map is a logical nested type that is represented as
 *
 *  List<entries: Struct<key: K, value: V>>
 *
 *  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: the key type and the value type. The names of the
 *  child fields may be respectively "entries", "key", and "value", but this is
 *  not enforced.
 *
 *  Map
 *  ```text
 *    - 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 org_apache_arrow_flatbuf_Map_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Map_vec_len(org_apache_arrow_flatbuf_Map_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Map_table_t org_apache_arrow_flatbuf_Map_vec_at(org_apache_arrow_flatbuf_Map_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Map_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Map)

/**  Set to true if the keys within each value are sorted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Map, keysSorted, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

/**  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 org_apache_arrow_flatbuf_Union_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Union_vec_len(org_apache_arrow_flatbuf_Union_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Union_table_t org_apache_arrow_flatbuf_Union_vec_at(org_apache_arrow_flatbuf_Union_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Union_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Union)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Union, mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Union, typeIds, flatbuffers_int32_vec_t, 0)

struct org_apache_arrow_flatbuf_Int_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Int_vec_len(org_apache_arrow_flatbuf_Int_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Int_table_t org_apache_arrow_flatbuf_Int_vec_at(org_apache_arrow_flatbuf_Int_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Int_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Int)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Int, bitWidth, flatbuffers_int32, int32_t, INT32_C(0))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Int, is_signed, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

struct org_apache_arrow_flatbuf_FloatingPoint_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FloatingPoint_vec_len(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FloatingPoint_table_t org_apache_arrow_flatbuf_FloatingPoint_vec_at(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FloatingPoint_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FloatingPoint)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FloatingPoint, precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, INT16_C(0))

/**  Unicode with UTF-8 encoding */
struct org_apache_arrow_flatbuf_Utf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8_vec_len(org_apache_arrow_flatbuf_Utf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8_table_t org_apache_arrow_flatbuf_Utf8_vec_at(org_apache_arrow_flatbuf_Utf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8)


/**  Opaque binary data */
struct org_apache_arrow_flatbuf_Binary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Binary_vec_len(org_apache_arrow_flatbuf_Binary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Binary_table_t org_apache_arrow_flatbuf_Binary_vec_at(org_apache_arrow_flatbuf_Binary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Binary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Binary)


/**  Same as Utf8, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeUtf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeUtf8_vec_len(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeUtf8_table_t org_apache_arrow_flatbuf_LargeUtf8_vec_at(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeUtf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeUtf8)


/**  Same as Binary, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeBinary_vec_len(org_apache_arrow_flatbuf_LargeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeBinary_table_t org_apache_arrow_flatbuf_LargeBinary_vec_at(org_apache_arrow_flatbuf_LargeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeBinary)


/**  Logically the same as Utf8, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_Utf8View_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8View_vec_len(org_apache_arrow_flatbuf_Utf8View_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8View_table_t org_apache_arrow_flatbuf_Utf8View_vec_at(org_apache_arrow_flatbuf_Utf8View_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8View_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8View)


/**  Logically the same as Binary, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_BinaryView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_BinaryView_vec_len(org_apache_arrow_flatbuf_BinaryView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_BinaryView_table_t org_apache_arrow_flatbuf_BinaryView_vec_at(org_apache_arrow_flatbuf_BinaryView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_BinaryView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_BinaryView)


struct org_apache_arrow_flatbuf_FixedSizeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_len(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeBinary_table_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeBinary)

/**  Number of bytes per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeBinary, byteWidth, flatbuffers_int32, int32_t, INT32_C(0))

struct org_apache_arrow_flatbuf_Bool_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Bool_vec_len(org_apache_arrow_flatbuf_Bool_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Bool_table_t org_apache_arrow_flatbuf_Bool_vec_at(org_apache_arrow_flatbuf_Bool_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Bool_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Bool)


/**  Contains two child arrays, run_ends and values.
 *  The run_ends child array must be a 16/32/64-bit integer array
 *  which encodes the indices at which the run with the value in
 *  each corresponding index in the values child array ends.
 *  Like list/struct types, the value array can be of any type. */
struct org_apache_arrow_flatbuf_RunEndEncoded_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_RunEndEncoded_vec_len(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_RunEndEncoded_table_t org_apache_arrow_flatbuf_RunEndEncoded_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_RunEndEncoded)


/**  Exact decimal value represented as an integer value in two's
 *  complement. Currently 32-bit (4-byte), 64-bit (8-byte),
 *  128-bit (16-byte) and 256-bit (32-byte) integers are used.
 *  The representation uses the endianness indicated in the Schema. */
struct org_apache_arrow_flatbuf_Decimal_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Decimal_vec_len(org_apache_arrow_flatbuf_Decimal_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Decimal_table_t org_apache_arrow_flatbuf_Decimal_vec_at(org_apache_arrow_flatbuf_Decimal_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Decimal_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Decimal)

/**  Total number of decimal digits */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Decimal, precision, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of digits after the decimal point "." */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Decimal, scale, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of bits per value. The accepted widths are 32, 64, 128 and 256.
 *  We use bitWidth for consistency with Int::bitWidth. */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_Decimal, bitWidth, flatbuffers_int32, int32_t, INT32_C(128))

/**  Date is either a 32-bit or 64-bit signed integer type representing an
 *  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 org_apache_arrow_flatbuf_Date_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Date_vec_len(org_apache_arrow_flatbuf_Date_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Date_table_t org_apache_arrow_flatbuf_Date_vec_at(org_apache_arrow_flatbuf_Date_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Date_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Date)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Date, unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, INT16_C(1))

/**  Time is either a 32-bit or 64-bit signed integer type representing an
 *  elapsed time since midnight, stored in either of four units: seconds,
 *  milliseconds, microseconds or nanoseconds.
 *
 *  The integer `bitWidth` depends on the `unit` and must be one of the following:
 *  * SECOND and MILLISECOND: 32 bits
 *  * MICROSECOND and NANOSECOND: 64 bits
 *
 *  The allowed values are between 0 (inclusive) and 86400 (=24*60*60) seconds
 *  (exclusive), adjusted for the time unit (for example, up to 86400000
 *  exclusive for the MILLISECOND unit).
 *  This definition doesn't allow for leap seconds. Time values from
 *  measurements with leap seconds will need to be corrected when ingesting
 *  into Arrow (for example by replacing the value 86400 with 86399). */
struct org_apache_arrow_flatbuf_Time_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Time_vec_len(org_apache_arrow_flatbuf_Time_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Time_table_t org_apache_arrow_flatbuf_Time_vec_at(org_apache_arrow_flatbuf_Time_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Time_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Time)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Time, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Time, bitWidth, flatbuffers_int32, int32_t, INT32_C(32))

/**  Timestamp is a 64-bit signed integer representing an elapsed time since a
 *  fixed epoch, stored in either of four units: seconds, milliseconds,
 *  microseconds or nanoseconds, and is optionally annotated with a timezone.
 *
 *  Timestamp values do not include any leap seconds (in other words, all
 *  days are considered 86400 seconds long).
 *
 *  Timestamps with a non-empty timezone
 *  ------------------------------------
 *
 *  If a Timestamp column has a non-empty timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in the *UTC* timezone
 *  (the Unix epoch), regardless of the Timestamp's own timezone.
 *
 *  Therefore, timestamp values with a non-empty timezone correspond to
 *  physical points in time together with some additional information about
 *  how the data was obtained and/or how to display it (the timezone).
 *
 *    For example, the timestamp value 0 with the timezone string "Europe/Paris"
 *    corresponds to "January 1st 1970, 00h00" in the UTC timezone, but the
 *    application may prefer to display it as "January 1st 1970, 01h00" in
 *    the Europe/Paris timezone (which is the same physical point in time).
 *
 *  One consequence is that timestamp values with a non-empty timezone
 *  can be compared and ordered directly, since they all share the same
 *  well-known point of reference (the Unix epoch).
 *
 *  Timestamps with an unset / empty timezone
 *  -----------------------------------------
 *
 *  If a Timestamp column has no timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in an *unknown* timezone.
 *
 *  Therefore, timestamp values without a timezone cannot be meaningfully
 *  interpreted as physical points in time, but only as calendar / clock
 *  indications ("wall clock time") in an unspecified timezone.
 *
 *    For example, the timestamp value 0 with an empty timezone string
 *    corresponds to "January 1st 1970, 00h00" in an unknown timezone: there
 *    is not enough information to interpret it as a well-defined physical
 *    point in time.
 *
 *  One consequence is that timestamp values without a timezone cannot
 *  be reliably compared or ordered, since they may have different points of
 *  reference.  In particular, it is *not* possible to interpret an unset
 *  or empty timezone as the same as "UTC".
 *
 *  Conversion between timezones
 *  ----------------------------
 *
 *  If a Timestamp column has a non-empty timezone, changing the timezone
 *  to a different non-empty value is a metadata-only operation:
 *  the timestamp values need not change as their point of reference remains
 *  the same (the Unix epoch).
 *
 *  However, if a Timestamp column has no timezone value, changing it to a
 *  non-empty value requires to think about the desired semantics.
 *  One possibility is to assume that the original timestamp values are
 *  relative to the epoch of the timezone being set; timestamp values should
 *  then adjusted to the Unix epoch (for example, changing the timezone from
 *  empty to "Europe/Paris" would require converting the timestamp values
 *  from "Europe/Paris" to "UTC", which seems counter-intuitive but is
 *  nevertheless correct).
 *
 *  Guidelines for encoding data from external libraries
 *  ----------------------------------------------------
 *
 *  Date & time libraries often have multiple different data types for temporal
 *  data. In order to ease interoperability between different implementations the
 *  Arrow project has some recommendations for encoding these types into a Timestamp
 *  column.
 *
 *  An "instant" represents a physical point in time that has no relevant timezone
 *  (for example, astronomical data). To encode an instant, use a Timestamp with
 *  the timezone string set to "UTC", and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *  A "zoned date-time" represents a physical point in time annotated with an
 *  informative timezone (for example, the timezone in which the data was
 *  recorded).  To encode a zoned date-time, use a Timestamp with the timezone
 *  string set to the name of the timezone, and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *   (There is some ambiguity between an instant and a zoned date-time with the
 *    UTC timezone.  Both of these are stored the same in Arrow.  Typically,
 *    this distinction does not matter.  If it does, then an application should
 *    use custom metadata or an extension type to distinguish between the two cases.)
 *
 *  An "offset date-time" represents a physical point in time combined with an
 *  explicit offset from UTC.  To encode an offset date-time, use a Timestamp
 *  with the timezone string set to the numeric timezone offset string
 *  (e.g. "+03:00"), and make sure the Timestamp values are relative to
 *  the UTC epoch (January 1st 1970, midnight).
 *
 *  A "naive date-time" (also called "local date-time" in some libraries)
 *  represents a wall clock time combined with a calendar date, but with
 *  no indication of how to map this information to a physical point in time.
 *  Naive date-times must be handled with care because of this missing
 *  information, and also because daylight saving time (DST) may make
 *  some values ambiguous or nonexistent. A naive date-time may be
 *  stored as a struct with Date and Time fields. However, it may also be
 *  encoded into a Timestamp column with an empty timezone. The timestamp
 *  values should be computed "as if" the timezone of the date-time values
 *  was UTC; for example, the naive date-time "January 1st 1970, 00h00" would
 *  be encoded as timestamp value 0. */
struct org_apache_arrow_flatbuf_Timestamp_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Timestamp_vec_len(org_apache_arrow_flatbuf_Timestamp_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Timestamp_table_t org_apache_arrow_flatbuf_Timestamp_vec_at(org_apache_arrow_flatbuf_Timestamp_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Timestamp_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Timestamp)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Timestamp, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(0))
/**  The timezone is an optional string indicating the name of a timezone,
 *  one of:
 *
 *  * As used in the Olson timezone database (the "tz database" or
 *    "tzdata"), such as "America/New_York".
 *  * An absolute timezone offset of the form "+XX:XX" or "-XX:XX",
 *    such as "+07:30".
 *
 *  Whether a timezone string is present indicates different semantics about
 *  the data (see above). */
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_Timestamp, timezone, 0)

struct org_apache_arrow_flatbuf_Interval_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Interval_vec_len(org_apache_arrow_flatbuf_Interval_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Interval_table_t org_apache_arrow_flatbuf_Interval_vec_at(org_apache_arrow_flatbuf_Interval_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Interval_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Interval)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Interval, unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, INT16_C(0))

struct org_apache_arrow_flatbuf_Duration_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Duration_vec_len(org_apache_arrow_flatbuf_Duration_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Duration_table_t org_apache_arrow_flatbuf_Duration_vec_at(org_apache_arrow_flatbuf_Duration_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Duration_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Duration)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Duration, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
/**  ----------------------------------------------------------------------
 *  Top-level Type value, enabling extensible type-specific metadata. We can
 *  add new logical types to Type without breaking backwards compatibility */
typedef uint8_t org_apache_arrow_flatbuf_Type_union_type_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Type_union_type_t, 8)
__flatbuffers_define_union(flatbuffers_, org_apache_arrow_flatbuf_Type)
/**  ----------------------------------------------------------------------
 *  user defined key value pairs to add custom metadata to arrow
 *  key namespacing is the responsibility of the user */
#define org_apache_arrow_flatbuf_Type_NONE ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(0))
#define org_apache_arrow_flatbuf_Type_Null ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(1))
#define org_apache_arrow_flatbuf_Type_Int ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(2))
#define org_apache_arrow_flatbuf_Type_FloatingPoint ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(3))
#define org_apache_arrow_flatbuf_Type_Binary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(4))
#define org_apache_arrow_flatbuf_Type_Utf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(5))
#define org_apache_arrow_flatbuf_Type_Bool ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(6))
#define org_apache_arrow_flatbuf_Type_Decimal ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(7))
#define org_apache_arrow_flatbuf_Type_Date ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(8))
#define org_apache_arrow_flatbuf_Type_Time ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(9))
#define org_apache_arrow_flatbuf_Type_Timestamp ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(10))
#define org_apache_arrow_flatbuf_Type_Interval ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(11))
#define org_apache_arrow_flatbuf_Type_List ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(12))
#define org_apache_arrow_flatbuf_Type_Struct_ ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(13))
#define org_apache_arrow_flatbuf_Type_Union ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(14))
#define org_apache_arrow_flatbuf_Type_FixedSizeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(15))
#define org_apache_arrow_flatbuf_Type_FixedSizeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(16))
#define org_apache_arrow_flatbuf_Type_Map ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(17))
#define org_apache_arrow_flatbuf_Type_Duration ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(18))
#define org_apache_arrow_flatbuf_Type_LargeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(19))
#define org_apache_arrow_flatbuf_Type_LargeUtf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(20))
#define org_apache_arrow_flatbuf_Type_LargeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(21))
#define org_apache_arrow_flatbuf_Type_RunEndEncoded ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(22))
#define org_apache_arrow_flatbuf_Type_BinaryView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(23))
#define org_apache_arrow_flatbuf_Type_Utf8View ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(24))
#define org_apache_arrow_flatbuf_Type_ListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(25))
#define org_apache_arrow_flatbuf_Type_LargeListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(26))

static inline const char *org_apache_arrow_flatbuf_Type_type_name(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return "NONE";
    case org_apache_arrow_flatbuf_Type_Null: return "Null";
    case org_apache_arrow_flatbuf_Type_Int: return "Int";
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return "FloatingPoint";
    case org_apache_arrow_flatbuf_Type_Binary: return "Binary";
    case org_apache_arrow_flatbuf_Type_Utf8: return "Utf8";
    case org_apache_arrow_flatbuf_Type_Bool: return "Bool";
    case org_apache_arrow_flatbuf_Type_Decimal: return "Decimal";
    case org_apache_arrow_flatbuf_Type_Date: return "Date";
    case org_apache_arrow_flatbuf_Type_Time: return "Time";
    case org_apache_arrow_flatbuf_Type_Timestamp: return "Timestamp";
    case org_apache_arrow_flatbuf_Type_Interval: return "Interval";
    case org_apache_arrow_flatbuf_Type_List: return "List";
    case org_apache_arrow_flatbuf_Type_Struct_: return "Struct_";
    case org_apache_arrow_flatbuf_Type_Union: return "Union";
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return "FixedSizeBinary";
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return "FixedSizeList";
    case org_apache_arrow_flatbuf_Type_Map: return "Map";
    case org_apache_arrow_flatbuf_Type_Duration: return "Duration";
    case org_apache_arrow_flatbuf_Type_LargeBinary: return "LargeBinary";
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return "LargeUtf8";
    case org_apache_arrow_flatbuf_Type_LargeList: return "LargeList";
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return "RunEndEncoded";
    case org_apache_arrow_flatbuf_Type_BinaryView: return "BinaryView";
    case org_apache_arrow_flatbuf_Type_Utf8View: return "Utf8View";
    case org_apache_arrow_flatbuf_Type_ListView: return "ListView";
    case org_apache_arrow_flatbuf_Type_LargeListView: return "LargeListView";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Type_is_known_type(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return 1;
    case org_apache_arrow_flatbuf_Type_Null: return 1;
    case org_apache_arrow_flatbuf_Type_Int: return 1;
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return 1;
    case org_apache_arrow_flatbuf_Type_Binary: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8: return 1;
    case org_apache_arrow_flatbuf_Type_Bool: return 1;
    case org_apache_arrow_flatbuf_Type_Decimal: return 1;
    case org_apache_arrow_flatbuf_Type_Date: return 1;
    case org_apache_arrow_flatbuf_Type_Time: return 1;
    case org_apache_arrow_flatbuf_Type_Timestamp: return 1;
    case org_apache_arrow_flatbuf_Type_Interval: return 1;
    case org_apache_arrow_flatbuf_Type_List: return 1;
    case org_apache_arrow_flatbuf_Type_Struct_: return 1;
    case org_apache_arrow_flatbuf_Type_Union: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return 1;
    case org_apache_arrow_flatbuf_Type_Map: return 1;
    case org_apache_arrow_flatbuf_Type_Duration: return 1;
    case org_apache_arrow_flatbuf_Type_LargeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return 1;
    case org_apache_arrow_flatbuf_Type_LargeList: return 1;
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return 1;
    case org_apache_arrow_flatbuf_Type_BinaryView: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8View: return 1;
    case org_apache_arrow_flatbuf_Type_ListView: return 1;
    case org_apache_arrow_flatbuf_Type_LargeListView: return 1;
    default: return 0;
    }
}


struct org_apache_arrow_flatbuf_KeyValue_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_KeyValue_vec_len(org_apache_arrow_flatbuf_KeyValue_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_KeyValue_table_t org_apache_arrow_flatbuf_KeyValue_vec_at(org_apache_arrow_flatbuf_KeyValue_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_KeyValue_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_KeyValue)

__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_KeyValue, key, 0)
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_KeyValue, value, 0)

struct org_apache_arrow_flatbuf_DictionaryEncoding_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_len(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_DictionaryEncoding_table_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_DictionaryEncoding)

/**  The known dictionary id in the application where this data is used. In
 *  the file or streaming formats, the dictionary ids are found in the
 *  DictionaryBatch messages */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_DictionaryEncoding, id, flatbuffers_int64, int64_t, INT64_C(0))
/**  The dictionary indices are constrained to be non-negative integers. If
 *  this field is null, the indices must be signed int32. To maximize
 *  cross-language compatibility and performance, implementations are
 *  recommended to prefer signed integer types over unsigned integer types
 *  and to avoid uint64 indices unless they are required by an application. */
__flatbuffers_define_table_field(1, org_apache_arrow_flatbuf_DictionaryEncoding, indexType, org_apache_arrow_flatbuf_Int_table_t, 0)
/**  By default, dictionaries are not ordered, or the order does not have
 *  semantic meaning. In some statistical applications, dictionary-encoding
 *  is used to represent ordered categorical data, and we provide a way to
 *  preserve that metadata here */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_DictionaryEncoding, isOrdered, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_DictionaryEncoding, dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, INT16_C(0))

/**  ----------------------------------------------------------------------
 *  A field represents a named column in a record / row batch or child of a
 *  nested type. */
struct org_apache_arrow_flatbuf_Field_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Field_vec_len(org_apache_arrow_flatbuf_Field_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Field_table_t org_apache_arrow_flatbuf_Field_vec_at(org_apache_arrow_flatbuf_Field_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Field_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Field)

/**  Name is not required (e.g., in a List) */
__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_Field, name, 0)
/**  Whether or not this field can contain nulls. Should be true in general. */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Field, nullable, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
/**  This is the type of the decoded value if the field is dictionary encoded. */
__flatbuffers_define_union_field(flatbuffers_, 3, org_apache_arrow_flatbuf_Field, type, org_apache_arrow_flatbuf_Type, 0)
/**  Present only if the field is dictionary encoded. */
__flatbuffers_define_table_field(4, org_apache_arrow_flatbuf_Field, dictionary, org_apache_arrow_flatbuf_DictionaryEncoding_table_t, 0)
/**  children apply only to nested data types like Struct, List and Union. For
 *  primitive types children will have length 0. */
__flatbuffers_define_vector_field(5, org_apache_arrow_flatbuf_Field, children, org_apache_arrow_flatbuf_Field_vec_t, 0)
/**  User-defined metadata */
__flatbuffers_define_vector_field(6, org_apache_arrow_flatbuf_Field, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)

/**  ----------------------------------------------------------------------
 *  A Schema describes the columns in a row batch */
struct org_apache_arrow_flatbuf_Schema_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Schema_vec_len(org_apache_arrow_flatbuf_Schema_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Schema_table_t org_apache_arrow_flatbuf_Schema_vec_at(org_apache_arrow_flatbuf_Schema_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Schema_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Schema)

/**  endianness of the buffer
 *  it is Little Endian by default
 *  if endianness doesn't match the underlying system then the vectors need to be converted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Schema, endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Schema, fields, org_apache_arrow_flatbuf_Field_vec_t, 0)
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_Schema, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)
/**  Features used in the stream/file. */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_Schema, features, org_apache_arrow_flatbuf_Feature_vec_t, 0)


#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_READER_H */
#ifndef SCHEMA_BUILDER_H
#define SCHEMA_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

#define __org_apache_arrow_flatbuf_MetadataVersion_formal_args , org_apache_arrow_flatbuf_MetadataVersion_enum_t v0
#define __org_apache_arrow_flatbuf_MetadataVersion_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t)
#define __org_apache_arrow_flatbuf_Feature_formal_args , org_apache_arrow_flatbuf_Feature_enum_t v0
#define __org_apache_arrow_flatbuf_Feature_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t)
#define __org_apache_arrow_flatbuf_UnionMode_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0
#define __org_apache_arrow_flatbuf_UnionMode_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t)
#define __org_apache_arrow_flatbuf_Precision_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_Precision_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t)
#define __org_apache_arrow_flatbuf_DateUnit_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_DateUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t)
#define __org_apache_arrow_flatbuf_TimeUnit_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_TimeUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t)
#define __org_apache_arrow_flatbuf_IntervalUnit_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_IntervalUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t)
#define __org_apache_arrow_flatbuf_DictionaryKind_formal_args , org_apache_arrow_flatbuf_DictionaryKind_enum_t v0
#define __org_apache_arrow_flatbuf_DictionaryKind_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t)
#define __org_apache_arrow_flatbuf_Endianness_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0
#define __org_apache_arrow_flatbuf_Endianness_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t)

#define __org_apache_arrow_flatbuf_Buffer_formal_args , int64_t v0, int64_t v1
#define __org_apache_arrow_flatbuf_Buffer_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ p->offset = v0; p->length = v1;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ p->offset = p2->offset; p->length = p2->length;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_to_pe(&p->offset, v0); flatbuffers_int64_assign_to_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_to_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_to_pe(&p->length, &p2->length);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_from_pe(&p->offset, v0); flatbuffers_int64_assign_from_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_from_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_from_pe(&p->length, &p2->length);
  return p; }
__flatbuffers_build_struct(flatbuffers_, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_Buffer_file_identifier, org_apache_arrow_flatbuf_Buffer_type_identifier)
__flatbuffers_define_fixed_array_primitives(flatbuffers_, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t)

typedef flatbuffers_union_ref_t org_apache_arrow_flatbuf_Type_union_ref_t;
typedef flatbuffers_union_vec_ref_t org_apache_arrow_flatbuf_Type_union_vec_ref_t;
static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t t);

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Null_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Null_ref_t;
static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Null, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Struct__required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Struct__ref_t;
static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Struct_, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_List_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_List_ref_t;
static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_List, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeList_ref_t;
static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeList, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_ListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_ListView_ref_t;
static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_ListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeListView_ref_t;
static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeList_ref_t;
static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Map_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Map_ref_t;
static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Map, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Union_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Union_ref_t;
static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Union, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Int_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Int_ref_t;
static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Int, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FloatingPoint_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FloatingPoint_ref_t;
static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8_ref_t;
static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Binary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Binary_ref_t;
static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Binary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeUtf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeUtf8_ref_t;
static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeBinary_ref_t;
static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8View_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8View_ref_t;
static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_BinaryView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_BinaryView_ref_t;
static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_ref_t;
static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Bool_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Bool_ref_t;
static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Bool, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_RunEndEncoded_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_RunEndEncoded_ref_t;
static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Decimal_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Decimal_ref_t;
static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Decimal, 3)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Date_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Date_ref_t;
static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Date, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Time_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Time_ref_t;
static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Time, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Timestamp_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Timestamp_ref_t;
static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Interval_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Interval_ref_t;
static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Interval, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Duration_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Duration_ref_t;
static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Duration, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_KeyValue_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_KeyValue_ref_t;
static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_DictionaryEncoding_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_ref_t;
static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, 4)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Field_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Field_ref_t;
static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Field, 7)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Schema_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Schema_ref_t;
static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Schema, 4)

#define __org_apache_arrow_flatbuf_Null_formal_args
#define __org_apache_arrow_flatbuf_Null_call_args
static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Null, org_apache_arrow_flatbuf_Null_file_identifier, org_apache_arrow_flatbuf_Null_type_identifier)

#define __org_apache_arrow_flatbuf_Struct__formal_args
#define __org_apache_arrow_flatbuf_Struct__call_args
static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Struct_, org_apache_arrow_flatbuf_Struct__file_identifier, org_apache_arrow_flatbuf_Struct__type_identifier)

#define __org_apache_arrow_flatbuf_List_formal_args
#define __org_apache_arrow_flatbuf_List_call_args
static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_List, org_apache_arrow_flatbuf_List_file_identifier, org_apache_arrow_flatbuf_List_type_identifier)

#define __org_apache_arrow_flatbuf_LargeList_formal_args
#define __org_apache_arrow_flatbuf_LargeList_call_args
static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeList, org_apache_arrow_flatbuf_LargeList_file_identifier, org_apache_arrow_flatbuf_LargeList_type_identifier)

#define __org_apache_arrow_flatbuf_ListView_formal_args
#define __org_apache_arrow_flatbuf_ListView_call_args
static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_ListView, org_apache_arrow_flatbuf_ListView_file_identifier, org_apache_arrow_flatbuf_ListView_type_identifier)

#define __org_apache_arrow_flatbuf_LargeListView_formal_args
#define __org_apache_arrow_flatbuf_LargeListView_call_args
static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, org_apache_arrow_flatbuf_LargeListView_file_identifier, org_apache_arrow_flatbuf_LargeListView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeList_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeList_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList_file_identifier, org_apache_arrow_flatbuf_FixedSizeList_type_identifier)

#define __org_apache_arrow_flatbuf_Map_formal_args , flatbuffers_bool_t v0
#define __org_apache_arrow_flatbuf_Map_call_args , v0
static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Map, org_apache_arrow_flatbuf_Map_file_identifier, org_apache_arrow_flatbuf_Map_type_identifier)

#define __org_apache_arrow_flatbuf_Union_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0, flatbuffers_int32_vec_ref_t v1
#define __org_apache_arrow_flatbuf_Union_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Union, org_apache_arrow_flatbuf_Union_file_identifier, org_apache_arrow_flatbuf_Union_type_identifier)

#define __org_apache_arrow_flatbuf_Int_formal_args , int32_t v0, flatbuffers_bool_t v1
#define __org_apache_arrow_flatbuf_Int_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_Int_file_identifier, org_apache_arrow_flatbuf_Int_type_identifier)

#define __org_apache_arrow_flatbuf_FloatingPoint_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_FloatingPoint_call_args , v0
static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint_file_identifier, org_apache_arrow_flatbuf_FloatingPoint_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8_formal_args
#define __org_apache_arrow_flatbuf_Utf8_call_args
static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8, org_apache_arrow_flatbuf_Utf8_file_identifier, org_apache_arrow_flatbuf_Utf8_type_identifier)

#define __org_apache_arrow_flatbuf_Binary_formal_args
#define __org_apache_arrow_flatbuf_Binary_call_args
static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Binary, org_apache_arrow_flatbuf_Binary_file_identifier, org_apache_arrow_flatbuf_Binary_type_identifier)

#define __org_apache_arrow_flatbuf_LargeUtf8_formal_args
#define __org_apache_arrow_flatbuf_LargeUtf8_call_args
static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8_file_identifier, org_apache_arrow_flatbuf_LargeUtf8_type_identifier)

#define __org_apache_arrow_flatbuf_LargeBinary_formal_args
#define __org_apache_arrow_flatbuf_LargeBinary_call_args
static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, org_apache_arrow_flatbuf_LargeBinary_file_identifier, org_apache_arrow_flatbuf_LargeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8View_formal_args
#define __org_apache_arrow_flatbuf_Utf8View_call_args
static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, org_apache_arrow_flatbuf_Utf8View_file_identifier, org_apache_arrow_flatbuf_Utf8View_type_identifier)

#define __org_apache_arrow_flatbuf_BinaryView_formal_args
#define __org_apache_arrow_flatbuf_BinaryView_call_args
static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, org_apache_arrow_flatbuf_BinaryView_file_identifier, org_apache_arrow_flatbuf_BinaryView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeBinary_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Bool_formal_args
#define __org_apache_arrow_flatbuf_Bool_call_args
static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Bool, org_apache_arrow_flatbuf_Bool_file_identifier, org_apache_arrow_flatbuf_Bool_type_identifier)

#define __org_apache_arrow_flatbuf_RunEndEncoded_formal_args
#define __org_apache_arrow_flatbuf_RunEndEncoded_call_args
static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded_file_identifier, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier)

#define __org_apache_arrow_flatbuf_Decimal_formal_args , int32_t v0, int32_t v1, int32_t v2
#define __org_apache_arrow_flatbuf_Decimal_call_args , v0, v1, v2
static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Decimal, org_apache_arrow_flatbuf_Decimal_file_identifier, org_apache_arrow_flatbuf_Decimal_type_identifier)

#define __org_apache_arrow_flatbuf_Date_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Date_call_args , v0
static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Date, org_apache_arrow_flatbuf_Date_file_identifier, org_apache_arrow_flatbuf_Date_type_identifier)

#define __org_apache_arrow_flatbuf_Time_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, int32_t v1
#define __org_apache_arrow_flatbuf_Time_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Time, org_apache_arrow_flatbuf_Time_file_identifier, org_apache_arrow_flatbuf_Time_type_identifier)

#define __org_apache_arrow_flatbuf_Timestamp_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_Timestamp_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, org_apache_arrow_flatbuf_Timestamp_file_identifier, org_apache_arrow_flatbuf_Timestamp_type_identifier)

#define __org_apache_arrow_flatbuf_Interval_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Interval_call_args , v0
static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Interval, org_apache_arrow_flatbuf_Interval_file_identifier, org_apache_arrow_flatbuf_Interval_type_identifier)

#define __org_apache_arrow_flatbuf_Duration_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Duration_call_args , v0
static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Duration, org_apache_arrow_flatbuf_Duration_file_identifier, org_apache_arrow_flatbuf_Duration_type_identifier)

#define __org_apache_arrow_flatbuf_KeyValue_formal_args , flatbuffers_string_ref_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_KeyValue_call_args , v0, v1
static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_KeyValue_file_identifier, org_apache_arrow_flatbuf_KeyValue_type_identifier)

#define __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args , int64_t v0, org_apache_arrow_flatbuf_Int_ref_t v1, flatbuffers_bool_t v2, org_apache_arrow_flatbuf_DictionaryKind_enum_t v3
#define __org_apache_arrow_flatbuf_DictionaryEncoding_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier)

#define __org_apache_arrow_flatbuf_Field_formal_args ,\
  flatbuffers_string_ref_t v0, flatbuffers_bool_t v1, org_apache_arrow_flatbuf_Type_union_ref_t v3, org_apache_arrow_flatbuf_DictionaryEncoding_ref_t v4, org_apache_arrow_flatbuf_Field_vec_ref_t v5, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v6
#define __org_apache_arrow_flatbuf_Field_call_args ,\
  v0, v1, v3, v4, v5, v6
static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field_file_identifier, org_apache_arrow_flatbuf_Field_type_identifier)

#define __org_apache_arrow_flatbuf_Schema_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0, org_apache_arrow_flatbuf_Field_vec_ref_t v1, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v2, org_apache_arrow_flatbuf_Feature_vec_ref_t v3
#define __org_apache_arrow_flatbuf_Schema_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Schema, org_apache_arrow_flatbuf_Schema_file_identifier, org_apache_arrow_flatbuf_Schema_type_identifier)

static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_NONE(void)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_NONE; uref.value = 0; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Null; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Int; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FloatingPoint; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Binary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Bool; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Decimal; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Date; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Time; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Timestamp; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Interval; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_List; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Struct_; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Union; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Map; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Duration; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeUtf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_RunEndEncoded; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_BinaryView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8View; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_ListView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeListView; uref.value = ref; return uref; }
__flatbuffers_build_union_vector(flatbuffers_, org_apache_arrow_flatbuf_Type)

static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t u)
{
    switch (u.type) {
    case 1: return org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_clone(B, (org_apache_arrow_flatbuf_Null_table_t)u.value));
    case 2: return org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_clone(B, (org_apache_arrow_flatbuf_Int_table_t)u.value));
    case 3: return org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_clone(B, (org_apache_arrow_flatbuf_FloatingPoint_table_t)u.value));
    case 4: return org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_clone(B, (org_apache_arrow_flatbuf_Binary_table_t)u.value));
    case 5: return org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_clone(B, (org_apache_arrow_flatbuf_Utf8_table_t)u.value));
    case 6: return org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_clone(B, (org_apache_arrow_flatbuf_Bool_table_t)u.value));
    case 7: return org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_clone(B, (org_apache_arrow_flatbuf_Decimal_table_t)u.value));
    case 8: return org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_clone(B, (org_apache_arrow_flatbuf_Date_table_t)u.value));
    case 9: return org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_clone(B, (org_apache_arrow_flatbuf_Time_table_t)u.value));
    case 10: return org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_clone(B, (org_apache_arrow_flatbuf_Timestamp_table_t)u.value));
    case 11: return org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_clone(B, (org_apache_arrow_flatbuf_Interval_table_t)u.value));
    case 12: return org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_clone(B, (org_apache_arrow_flatbuf_List_table_t)u.value));
    case 13: return org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__clone(B, (org_apache_arrow_flatbuf_Struct__table_t)u.value));
    case 14: return org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_clone(B, (org_apache_arrow_flatbuf_Union_table_t)u.value));
    case 15: return org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_clone(B, (org_apache_arrow_flatbuf_FixedSizeBinary_table_t)u.value));
    case 16: return org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_clone(B, (org_apache_arrow_flatbuf_FixedSizeList_table_t)u.value));
    case 17: return org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_clone(B, (org_apache_arrow_flatbuf_Map_table_t)u.value));
    case 18: return org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_clone(B, (org_apache_arrow_flatbuf_Duration_table_t)u.value));
    case 19: return org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_clone(B, (org_apache_arrow_flatbuf_LargeBinary_table_t)u.value));
    case 20: return org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_clone(B, (org_apache_arrow_flatbuf_LargeUtf8_table_t)u.value));
    case 21: return org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_clone(B, (org_apache_arrow_flatbuf_LargeList_table_t)u.value));
    case 22: return org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_clone(B, (org_apache_arrow_flatbuf_RunEndEncoded_table_t)u.value));
    case 23: return org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_clone(B, (org_apache_arrow_flatbuf_BinaryView_table_t)u.value));
    case 24: return org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_clone(B, (org_apache_arrow_flatbuf_Utf8View_table_t)u.value));
    case 25: return org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_clone(B, (org_apache_arrow_flatbuf_ListView_table_t)u.value));
    case 26: return org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_clone(B, (org_apache_arrow_flatbuf_LargeListView_table_t)u.value));
    default: return org_apache_arrow_flatbuf_Type_as_NONE();
    }
}


static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args)
{
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Null_end(B);
}

static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Null_end(B));
}


static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args)
{
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Struct__end(B);
}

static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Struct__end(B));
}


static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args)
{
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_List_end(B);
}

static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_List_end(B));
}


static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeList_end(B);
}

static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeList_end(B));
}


static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args)
{
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_ListView_end(B);
}

static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_ListView_end(B));
}


static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeListView_end(B);
}

static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeListView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList_listSize, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeList)

static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeList_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeList_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Map_keysSorted, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Map)

static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args)
{
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Map_end(B);
}

static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Map_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Union_mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Union)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Union_typeIds, flatbuffers_int32, int32_t, org_apache_arrow_flatbuf_Union)

static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args)
{
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_add(B, v1)
        || org_apache_arrow_flatbuf_Union_mode_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Union_end(B);
}

static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_pick(B, t)
        || org_apache_arrow_flatbuf_Union_mode_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Union_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Int_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Int)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Int_is_signed, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Int)

static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args)
{
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_add(B, v0)
        || org_apache_arrow_flatbuf_Int_is_signed_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Int_end(B);
}

static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Int_is_signed_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Int_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint_precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_FloatingPoint)

static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args)
{
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FloatingPoint_end(B);
}

static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FloatingPoint_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8_end(B);
}

static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8_end(B));
}


static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args)
{
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Binary_end(B);
}

static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Binary_end(B));
}


static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeUtf8_end(B);
}

static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeUtf8_end(B));
}


static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeBinary_end(B);
}

static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8View_end(B);
}

static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8View_end(B));
}


static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args)
{
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_BinaryView_end(B);
}

static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_BinaryView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeBinary)

static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeBinary_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args)
{
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Bool_end(B);
}

static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Bool_end(B));
}


static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args)
{
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_RunEndEncoded_end(B);
}

static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_RunEndEncoded_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Decimal_precision, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Decimal_scale, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_Decimal_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(128), org_apache_arrow_flatbuf_Decimal)

static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args)
{
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_add(B, v0)
        || org_apache_arrow_flatbuf_Decimal_scale_add(B, v1)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Decimal_end(B);
}

static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_scale_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Decimal_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Date_unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Date)

static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args)
{
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Date_end(B);
}

static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Date_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Time_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Time)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Time_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(32), org_apache_arrow_flatbuf_Time)

static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args)
{
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_add(B, v1)
        || org_apache_arrow_flatbuf_Time_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Time_end(B);
}

static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Time_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Time_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_timezone, org_apache_arrow_flatbuf_Timestamp)

static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args)
{
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_add(B, v1)
        || org_apache_arrow_flatbuf_Timestamp_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Timestamp_end(B);
}

static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_pick(B, t)
        || org_apache_arrow_flatbuf_Timestamp_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Timestamp_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Interval_unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Interval)

static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args)
{
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Interval_end(B);
}

static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Interval_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Duration_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Duration)

static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args)
{
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Duration_end(B);
}

static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Duration_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_key, org_apache_arrow_flatbuf_KeyValue)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_value, org_apache_arrow_flatbuf_KeyValue)

static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args)
{
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_add(B, v0)
        || org_apache_arrow_flatbuf_KeyValue_value_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_KeyValue_end(B);
}

static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_pick(B, t)
        || org_apache_arrow_flatbuf_KeyValue_value_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_KeyValue_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_id, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_table_field(1, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_indexType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)

static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args)
{
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_add(B, v0)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_add(B, v1)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_add(B, v3)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_DictionaryEncoding_end(B);
}

static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_DictionaryEncoding_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_Field_name, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Field_nullable, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_field(3, flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_field(4, flatbuffers_, org_apache_arrow_flatbuf_Field_dictionary, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(5, flatbuffers_, org_apache_arrow_flatbuf_Field_children, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(6, flatbuffers_, org_apache_arrow_flatbuf_Field_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Field)

static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args)
{
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_add(B, v0)
        || org_apache_arrow_flatbuf_Field_type_add_value(B, v3)
        || org_apache_arrow_flatbuf_Field_dictionary_add(B, v4)
        || org_apache_arrow_flatbuf_Field_children_add(B, v5)
        || org_apache_arrow_flatbuf_Field_custom_metadata_add(B, v6)
        || org_apache_arrow_flatbuf_Field_nullable_add(B, v1)
        || org_apache_arrow_flatbuf_Field_type_add_type(B, v3.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Field_end(B);
}

static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_pick(B, t)
        || org_apache_arrow_flatbuf_Field_type_pick(B, t)
        || org_apache_arrow_flatbuf_Field_dictionary_pick(B, t)
        || org_apache_arrow_flatbuf_Field_children_pick(B, t)
        || org_apache_arrow_flatbuf_Field_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Field_nullable_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Field_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Schema_endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Schema_fields, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_Schema_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_Schema_features, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, org_apache_arrow_flatbuf_Schema)

static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args)
{
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_add(B, v1)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_add(B, v2)
        || org_apache_arrow_flatbuf_Schema_features_add(B, v3)
        || org_apache_arrow_flatbuf_Schema_endianness_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Schema_end(B);
}

static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_features_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_endianness_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Schema_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_BUILDER_H */
#ifndef SCHEMA_VERIFIER_H
#define SCHEMA_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_Type_union_verifier(flatcc_union_verifier_descriptor_t *ud)
{
    switch (ud->type) {
    case 1: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Null_verify_table); /* Null */
    case 2: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Int_verify_table); /* Int */
    case 3: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FloatingPoint_verify_table); /* FloatingPoint */
    case 4: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Binary_verify_table); /* Binary */
    case 5: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8_verify_table); /* Utf8 */
    case 6: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Bool_verify_table); /* Bool */
    case 7: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Decimal_verify_table); /* Decimal */
    case 8: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Date_verify_table); /* Date */
    case 9: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Time_verify_table); /* Time */
    case 10: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Timestamp_verify_table); /* Timestamp */
    case 11: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Interval_verify_table); /* Interval */
    case 12: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_List_verify_table); /* List */
    case 13: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Struct__verify_table); /* Struct_ */
    case 14: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Union_verify_table); /* Union */
    case 15: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeBinary_verify_table); /* FixedSizeBinary */
    case 16: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeList_verify_table); /* FixedSizeList */
    case 17: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Map_verify_table); /* Map */
    case 18: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Duration_verify_table); /* Duration */
    case 19: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeBinary_verify_table); /* LargeBinary */
    case 20: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeUtf8_verify_table); /* LargeUtf8 */
    case 21: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeList_verify_table); /* LargeList */
    case 22: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_RunEndEncoded_verify_table); /* RunEndEncoded */
    case 23: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_BinaryView_verify_table); /* BinaryView */
    case 24: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8View_verify_table); /* Utf8View */
    case 25: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_ListView_verify_table); /* ListView */
    case 26: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeListView_verify_table); /* LargeListView */
    default: return flatcc_verify_ok;
    }
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, fid, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, fid, 16, 8);
}

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* listSize */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 1, 1) /* keysSorted */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* mode */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 0, 4, 4, INT64_C(1073741823)) /* typeIds */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* bitWidth */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* is_signed */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* precision */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* byteWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* precision */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* scale */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* timezone */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* key */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* value */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* id */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 1, 0, &org_apache_arrow_flatbuf_Int_verify_table) /* indexType */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 1, 1) /* isOrdered */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 2, 2) /* dictionaryKind */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* name */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* nullable */)) return ret;
    if ((ret = flatcc_verify_union_field(td, 3, 0, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 4, 0, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table) /* dictionary */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 5, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* children */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 6, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* endianness */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 1, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* fields */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 0, 8, 8, INT64_C(536870911)) /* features */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_VERIFIER_H */
#ifndef TENSOR_READER_H
#define TENSOR_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif


typedef const struct org_apache_arrow_flatbuf_TensorDim_table *org_apache_arrow_flatbuf_TensorDim_table_t;
typedef struct org_apache_arrow_flatbuf_TensorDim_table *org_apache_arrow_flatbuf_TensorDim_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_TensorDim_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_TensorDim_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Tensor_table *org_apache_arrow_flatbuf_Tensor_table_t;
typedef struct org_apache_arrow_flatbuf_Tensor_table *org_apache_arrow_flatbuf_Tensor_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Tensor_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Tensor_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_TensorDim_file_identifier
#define org_apache_arrow_flatbuf_TensorDim_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_TensorDim_file_identifier */
#ifndef org_apache_arrow_flatbuf_TensorDim_identifier
#define org_apache_arrow_flatbuf_TensorDim_identifier 0
#endif
#define org_apache_arrow_flatbuf_TensorDim_type_hash ((flatbuffers_thash_t)0xbc6d7b25)
#define org_apache_arrow_flatbuf_TensorDim_type_identifier "\x25\x7b\x6d\xbc"
#ifndef org_apache_arrow_flatbuf_TensorDim_file_extension
#define org_apache_arrow_flatbuf_TensorDim_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Tensor_file_identifier
#define org_apache_arrow_flatbuf_Tensor_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Tensor_file_identifier */
#ifndef org_apache_arrow_flatbuf_Tensor_identifier
#define org_apache_arrow_flatbuf_Tensor_identifier 0
#endif
#define org_apache_arrow_flatbuf_Tensor_type_hash ((flatbuffers_thash_t)0x1764df19)
#define org_apache_arrow_flatbuf_Tensor_type_identifier "\x19\xdf\x64\x17"
#ifndef org_apache_arrow_flatbuf_Tensor_file_extension
#define org_apache_arrow_flatbuf_Tensor_file_extension "bin"
#endif



/**  ----------------------------------------------------------------------
 *  Data structures for dense tensors
 *  Shape data for a single axis in a tensor */
struct org_apache_arrow_flatbuf_TensorDim_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_TensorDim_vec_len(org_apache_arrow_flatbuf_TensorDim_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_TensorDim_table_t org_apache_arrow_flatbuf_TensorDim_vec_at(org_apache_arrow_flatbuf_TensorDim_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_TensorDim_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_TensorDim)

/**  Length of dimension */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_TensorDim, size, flatbuffers_int64, int64_t, INT64_C(0))
/**  Name of the dimension, optional */
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_TensorDim, name, 0)

struct org_apache_arrow_flatbuf_Tensor_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Tensor_vec_len(org_apache_arrow_flatbuf_Tensor_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Tensor_table_t org_apache_arrow_flatbuf_Tensor_vec_at(org_apache_arrow_flatbuf_Tensor_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Tensor_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Tensor)

/**  The type of data contained in a value cell. Currently only fixed-width
 *  value types are supported, no strings or nested types */
__flatbuffers_define_union_field(flatbuffers_, 1, org_apache_arrow_flatbuf_Tensor, type, org_apache_arrow_flatbuf_Type, 1)
/**  The dimensions of the tensor, optionally named */
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_Tensor, shape, org_apache_arrow_flatbuf_TensorDim_vec_t, 1)
/**  Non-negative byte offsets to advance one value cell along each dimension
 *  If omitted, default to row-major order (C-like). */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_Tensor, strides, flatbuffers_int64_vec_t, 0)
/**  The location and size of the tensor's data */
__flatbuffers_define_struct_field(4, org_apache_arrow_flatbuf_Tensor, data, org_apache_arrow_flatbuf_Buffer_struct_t, 1)


#include "flatcc/flatcc_epilogue.h"
#endif /* TENSOR_READER_H */
#ifndef TENSOR_BUILDER_H
#define TENSOR_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef TENSOR_READER_H
#include "Tensor_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#ifndef SCHEMA_BUILDER_H
#include "Schema_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_TensorDim_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_TensorDim_ref_t;
static org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_TensorDim_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_TensorDim, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Tensor_required[] = { 1, 2, 4, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Tensor_ref_t;
static org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Tensor_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Tensor, 5)

#define __org_apache_arrow_flatbuf_TensorDim_formal_args , int64_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_TensorDim_call_args , v0, v1
static inline org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_TensorDim_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_TensorDim, org_apache_arrow_flatbuf_TensorDim_file_identifier, org_apache_arrow_flatbuf_TensorDim_type_identifier)

#define __org_apache_arrow_flatbuf_Tensor_formal_args , org_apache_arrow_flatbuf_Type_union_ref_t v1, org_apache_arrow_flatbuf_TensorDim_vec_ref_t v2, flatbuffers_int64_vec_ref_t v3, org_apache_arrow_flatbuf_Buffer_t *v4
#define __org_apache_arrow_flatbuf_Tensor_call_args , v1, v2, v3, v4
static inline org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Tensor_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Tensor, org_apache_arrow_flatbuf_Tensor_file_identifier, org_apache_arrow_flatbuf_Tensor_type_identifier)

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_TensorDim_size, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_TensorDim)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_TensorDim_name, org_apache_arrow_flatbuf_TensorDim)

static inline org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_TensorDim_formal_args)
{
    if (org_apache_arrow_flatbuf_TensorDim_start(B)
        || org_apache_arrow_flatbuf_TensorDim_size_add(B, v0)
        || org_apache_arrow_flatbuf_TensorDim_name_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_TensorDim_end(B);
}

static org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_TensorDim_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_TensorDim_start(B)
        || org_apache_arrow_flatbuf_TensorDim_size_pick(B, t)
        || org_apache_arrow_flatbuf_TensorDim_name_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_TensorDim_end(B));
}

__flatbuffers_build_union_field(1, flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_Tensor_shape, org_apache_arrow_flatbuf_TensorDim, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_Tensor_strides, flatbuffers_int64, int64_t, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_struct_field(4, flatbuffers_, org_apache_arrow_flatbuf_Tensor_data, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_Tensor)

static inline org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Tensor_formal_args)
{
    if (org_apache_arrow_flatbuf_Tensor_start(B)
        || org_apache_arrow_flatbuf_Tensor_data_add(B, v4)
        || org_apache_arrow_flatbuf_Tensor_type_add_value(B, v1)
        || org_apache_arrow_flatbuf_Tensor_shape_add(B, v2)
        || org_apache_arrow_flatbuf_Tensor_strides_add(B, v3)
        || org_apache_arrow_flatbuf_Tensor_type_add_type(B, v1.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Tensor_end(B);
}

static org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Tensor_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Tensor_start(B)
        || org_apache_arrow_flatbuf_Tensor_data_pick(B, t)
        || org_apache_arrow_flatbuf_Tensor_type_pick(B, t)
        || org_apache_arrow_flatbuf_Tensor_shape_pick(B, t)
        || org_apache_arrow_flatbuf_Tensor_strides_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Tensor_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* TENSOR_BUILDER_H */
#ifndef TENSOR_VERIFIER_H
#define TENSOR_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef TENSOR_READER_H
#include "Tensor_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#ifndef SCHEMA_VERIFIER_H
#include "Schema_verifier.h"
#endif
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_TensorDim_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Tensor_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_TensorDim_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* size */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* name */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_type_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_type_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static int org_apache_arrow_flatbuf_Tensor_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_union_field(td, 1, 1, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 1, &org_apache_arrow_flatbuf_TensorDim_verify_table) /* shape */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 0, 8, 8, INT64_C(536870911)) /* strides */)) return ret;
    if ((ret = flatcc_verify_field(td, 4, 16, 8) /* data */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_type_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_type_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* TENSOR_VERIFIER_H */
#ifndef SPARSETENSOR_READER_H
#define SPARSETENSOR_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#ifndef TENSOR_READER_H
#include "Tensor_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif


typedef const struct org_apache_arrow_flatbuf_SparseTensorIndexCOO_table *org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t;
typedef struct org_apache_arrow_flatbuf_SparseTensorIndexCOO_table *org_apache_arrow_flatbuf_SparseTensorIndexCOO_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensorIndexCOO_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table *org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t;
typedef struct org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table *org_apache_arrow_flatbuf_SparseMatrixIndexCSX_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseMatrixIndexCSX_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_SparseTensorIndexCSF_table *org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t;
typedef struct org_apache_arrow_flatbuf_SparseTensorIndexCSF_table *org_apache_arrow_flatbuf_SparseTensorIndexCSF_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensorIndexCSF_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_SparseTensor_table *org_apache_arrow_flatbuf_SparseTensor_table_t;
typedef struct org_apache_arrow_flatbuf_SparseTensor_table *org_apache_arrow_flatbuf_SparseTensor_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensor_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensor_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_identifier
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_identifier */
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCOO_identifier
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_identifier 0
#endif
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_hash ((flatbuffers_thash_t)0x3b31385a)
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_identifier "\x5a\x38\x31\x3b"
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_extension
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_identifier
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_identifier */
#ifndef org_apache_arrow_flatbuf_SparseMatrixIndexCSX_identifier
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_identifier 0
#endif
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_hash ((flatbuffers_thash_t)0xec57ea87)
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_identifier "\x87\xea\x57\xec"
#ifndef org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_extension
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_identifier
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_identifier */
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCSF_identifier
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_identifier 0
#endif
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_hash ((flatbuffers_thash_t)0xf44edda9)
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_identifier "\xa9\xdd\x4e\xf4"
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_extension
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_SparseTensor_file_identifier
#define org_apache_arrow_flatbuf_SparseTensor_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_SparseTensor_file_identifier */
#ifndef org_apache_arrow_flatbuf_SparseTensor_identifier
#define org_apache_arrow_flatbuf_SparseTensor_identifier 0
#endif
#define org_apache_arrow_flatbuf_SparseTensor_type_hash ((flatbuffers_thash_t)0xae6f7239)
#define org_apache_arrow_flatbuf_SparseTensor_type_identifier "\x39\x72\x6f\xae"
#ifndef org_apache_arrow_flatbuf_SparseTensor_file_extension
#define org_apache_arrow_flatbuf_SparseTensor_file_extension "bin"
#endif

typedef int16_t org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_SparseMatrixCompressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t, 16)
#define org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Row ((org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Column ((org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_name(org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Row: return "Row";
    case org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Column: return "Column";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_is_known_value(org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Row: return 1;
    case org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Column: return 1;
    default: return 0;
    }
}



/**  ----------------------------------------------------------------------
 *  EXPERIMENTAL: Data structures for sparse tensors
 *  Coordinate (COO) format of sparse tensor index.
 *
 *  COO's index list is represented as an NxM matrix,
 *  where N is the number of non-zero values,
 *  and M is the number of dimensions of a sparse tensor.
 *
 *  indicesBuffer stores the location and size of the data of these indices
 *  matrix.  The value type and the stride of the indices matrix is
 *  specified in indicesType and indicesStrides fields.
 *
 *  For example, let X be a 2x3x4x5 tensor, and it has the following
 *  6 non-zero values:
 *  ```text
 *    X[0, 1, 2, 0] := 1
 *    X[1, 1, 2, 3] := 2
 *    X[0, 2, 1, 0] := 3
 *    X[0, 1, 3, 0] := 4
 *    X[0, 1, 2, 1] := 5
 *    X[1, 2, 0, 4] := 6
 *  ```
 *  In COO format, the index matrix of X is the following 4x6 matrix:
 *  ```text
 *    [[0, 0, 0, 0, 1, 1],
 *     [1, 1, 1, 2, 1, 2],
 *     [2, 2, 3, 1, 2, 0],
 *     [0, 1, 0, 0, 3, 4]]
 *  ```
 *  When isCanonical is true, the indices are sorted in lexicographical order
 *  (row-major order), and it does not have duplicated entries.  Otherwise,
 *  the indices may not be sorted, or may have duplicated entries. */
struct org_apache_arrow_flatbuf_SparseTensorIndexCOO_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_len(org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_at(org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_SparseTensorIndexCOO)

/**  The type of values in indicesBuffer */
__flatbuffers_define_table_field(0, org_apache_arrow_flatbuf_SparseTensorIndexCOO, indicesType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  Non-negative byte offsets to advance one value cell along each dimension
 *  If omitted, default to row-major order (C-like). */
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_SparseTensorIndexCOO, indicesStrides, flatbuffers_int64_vec_t, 0)
/**  The location and size of the indices matrix's data */
__flatbuffers_define_struct_field(2, org_apache_arrow_flatbuf_SparseTensorIndexCOO, indicesBuffer, org_apache_arrow_flatbuf_Buffer_struct_t, 1)
/**  This flag is true if and only if the indices matrix is sorted in
 *  row-major order, and does not have duplicated entries.
 *  This sort order is the same as of Tensorflow's SparseTensor,
 *  but it is inverse order of SciPy's canonical coo_matrix
 *  (SciPy employs column-major order for its coo_matrix). */
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_SparseTensorIndexCOO, isCanonical, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

/**  Compressed Sparse format, that is matrix-specific. */
struct org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_len(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_at(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_SparseMatrixIndexCSX)

/**  Which axis, row or column, is compressed */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, compressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t, INT16_C(0))
/**  The type of values in indptrBuffer */
__flatbuffers_define_table_field(1, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, indptrType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  indptrBuffer stores the location and size of indptr array that
 *  represents the range of the rows.
 *  The i-th row spans from `indptr[i]` to `indptr[i+1]` in the data.
 *  The length of this array is 1 + (the number of rows), and the type
 *  of index value is long.
 *
 *  For example, let X be the following 6x4 matrix:
 *  ```text
 *    X := [[0, 1, 2, 0],
 *          [0, 0, 3, 0],
 *          [0, 4, 0, 5],
 *          [0, 0, 0, 0],
 *          [6, 0, 7, 8],
 *          [0, 9, 0, 0]].
 *  ```
 *  The array of non-zero values in X is:
 *  ```text
 *    values(X) = [1, 2, 3, 4, 5, 6, 7, 8, 9].
 *  ```
 *  And the indptr of X is:
 *  ```text
 *    indptr(X) = [0, 2, 3, 5, 5, 8, 10].
 *  ``` */
__flatbuffers_define_struct_field(2, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, indptrBuffer, org_apache_arrow_flatbuf_Buffer_struct_t, 1)
/**  The type of values in indicesBuffer */
__flatbuffers_define_table_field(3, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, indicesType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  indicesBuffer stores the location and size of the array that
 *  contains the column indices of the corresponding non-zero values.
 *  The type of index value is long.
 *
 *  For example, the indices of the above X are:
 *  ```text
 *    indices(X) = [1, 2, 2, 1, 3, 0, 2, 3, 1].
 *  ```
 *  Note that the indices are sorted in lexicographical order for each row. */
__flatbuffers_define_struct_field(4, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, indicesBuffer, org_apache_arrow_flatbuf_Buffer_struct_t, 1)

/**  Compressed Sparse Fiber (CSF) sparse tensor index. */
struct org_apache_arrow_flatbuf_SparseTensorIndexCSF_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_len(org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_at(org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_SparseTensorIndexCSF)

/**  CSF is a generalization of compressed sparse row (CSR) index.
 *  See [smith2017knl](http://shaden.io/pub-files/smith2017knl.pdf)
 *
 *  CSF index recursively compresses each dimension of a tensor into a set
 *  of prefix trees. Each path from a root to leaf forms one tensor
 *  non-zero index. CSF is implemented with two arrays of buffers and one
 *  array of integers.
 *
 *  For example, let X be a 2x3x4x5 tensor and let it have the following
 *  8 non-zero values:
 *  ```text
 *    X[0, 0, 0, 1] := 1
 *    X[0, 0, 0, 2] := 2
 *    X[0, 1, 0, 0] := 3
 *    X[0, 1, 0, 2] := 4
 *    X[0, 1, 1, 0] := 5
 *    X[1, 1, 1, 0] := 6
 *    X[1, 1, 1, 1] := 7
 *    X[1, 1, 1, 2] := 8
 *  ```
 *  As a prefix tree this would be represented as:
 *  ```text
 *          0          1
 *         / \         |
 *        0   1        1
 *       /   / \       |
 *      0   0   1      1
 *     /|  /|   |    /| |
 *    1 2 0 2   0   0 1 2
 *  ```
 *  The type of values in indptrBuffers */
__flatbuffers_define_table_field(0, org_apache_arrow_flatbuf_SparseTensorIndexCSF, indptrType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  indptrBuffers stores the sparsity structure.
 *  Each two consecutive dimensions in a tensor correspond to a buffer in
 *  indptrBuffers. A pair of consecutive values at `indptrBuffers[dim][i]`
 *  and `indptrBuffers[dim][i + 1]` signify a range of nodes in
 *  `indicesBuffers[dim + 1]` who are children of `indicesBuffers[dim][i]` node.
 *
 *  For example, the indptrBuffers for the above X are:
 *  ```text
 *    indptrBuffer(X) = [
 *                        [0, 2, 3],
 *                        [0, 1, 3, 4],
 *                        [0, 2, 4, 5, 8]
 *                      ].
 *  ``` */
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_SparseTensorIndexCSF, indptrBuffers, org_apache_arrow_flatbuf_Buffer_vec_t, 1)
/**  The type of values in indicesBuffers */
__flatbuffers_define_table_field(2, org_apache_arrow_flatbuf_SparseTensorIndexCSF, indicesType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  indicesBuffers stores values of nodes.
 *  Each tensor dimension corresponds to a buffer in indicesBuffers.
 *  For example, the indicesBuffers for the above X are:
 *  ```text
 *    indicesBuffer(X) = [
 *                         [0, 1],
 *                         [0, 1, 1],
 *                         [0, 0, 1, 1],
 *                         [1, 2, 0, 2, 0, 0, 1, 2]
 *                       ].
 *  ``` */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_SparseTensorIndexCSF, indicesBuffers, org_apache_arrow_flatbuf_Buffer_vec_t, 1)
/**  axisOrder stores the sequence in which dimensions were traversed to
 *  produce the prefix tree.
 *  For example, the axisOrder for the above X is:
 *  ```text
 *    axisOrder(X) = [0, 1, 2, 3].
 *  ``` */
__flatbuffers_define_vector_field(4, org_apache_arrow_flatbuf_SparseTensorIndexCSF, axisOrder, flatbuffers_int32_vec_t, 1)
typedef uint8_t org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_SparseTensorIndex, org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t, 8)
__flatbuffers_define_union(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndex)
#define org_apache_arrow_flatbuf_SparseTensorIndex_NONE ((org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t)UINT8_C(0))
#define org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCOO ((org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t)UINT8_C(1))
#define org_apache_arrow_flatbuf_SparseTensorIndex_SparseMatrixIndexCSX ((org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t)UINT8_C(2))
#define org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCSF ((org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t)UINT8_C(3))

static inline const char *org_apache_arrow_flatbuf_SparseTensorIndex_type_name(org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_SparseTensorIndex_NONE: return "NONE";
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCOO: return "SparseTensorIndexCOO";
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseMatrixIndexCSX: return "SparseMatrixIndexCSX";
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCSF: return "SparseTensorIndexCSF";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndex_is_known_type(org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_SparseTensorIndex_NONE: return 1;
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCOO: return 1;
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseMatrixIndexCSX: return 1;
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCSF: return 1;
    default: return 0;
    }
}


struct org_apache_arrow_flatbuf_SparseTensor_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_SparseTensor_vec_len(org_apache_arrow_flatbuf_SparseTensor_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_SparseTensor_table_t org_apache_arrow_flatbuf_SparseTensor_vec_at(org_apache_arrow_flatbuf_SparseTensor_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_SparseTensor_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_SparseTensor)

/**  The type of data contained in a value cell.
 *  Currently only fixed-width value types are supported,
 *  no strings or nested types. */
__flatbuffers_define_union_field(flatbuffers_, 1, org_apache_arrow_flatbuf_SparseTensor, type, org_apache_arrow_flatbuf_Type, 1)
/**  The dimensions of the tensor, optionally named. */
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_SparseTensor, shape, org_apache_arrow_flatbuf_TensorDim_vec_t, 1)
/**  The number of non-zero values in a sparse tensor. */
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_SparseTensor, non_zero_length, flatbuffers_int64, int64_t, INT64_C(0))
/**  Sparse tensor index */
__flatbuffers_define_union_field(flatbuffers_, 5, org_apache_arrow_flatbuf_SparseTensor, sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, 1)
/**  The location and size of the tensor's data */
__flatbuffers_define_struct_field(6, org_apache_arrow_flatbuf_SparseTensor, data, org_apache_arrow_flatbuf_Buffer_struct_t, 1)


#include "flatcc/flatcc_epilogue.h"
#endif /* SPARSETENSOR_READER_H */
#ifndef SPARSETENSOR_BUILDER_H
#define SPARSETENSOR_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SPARSETENSOR_READER_H
#include "SparseTensor_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#ifndef TENSOR_BUILDER_H
#include "Tensor_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

#define __org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_formal_args , org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t v0
#define __org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t)

typedef flatbuffers_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t;
typedef flatbuffers_union_vec_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_union_vec_ref_t;
static org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndex_union_t t);

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_SparseTensorIndexCOO_required[] = { 0, 2, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t;
static org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO, 4)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_required[] = { 1, 2, 3, 4, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t;
static org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, 5)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_SparseTensorIndexCSF_required[] = { 0, 1, 2, 3, 4, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t;
static org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF, 5)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_SparseTensor_required[] = { 1, 2, 5, 6, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_SparseTensor_ref_t;
static org_apache_arrow_flatbuf_SparseTensor_ref_t org_apache_arrow_flatbuf_SparseTensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensor_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor, 7)

#define __org_apache_arrow_flatbuf_SparseTensorIndexCOO_formal_args , org_apache_arrow_flatbuf_Int_ref_t v0, flatbuffers_int64_vec_ref_t v1, org_apache_arrow_flatbuf_Buffer_t *v2, flatbuffers_bool_t v3
#define __org_apache_arrow_flatbuf_SparseTensorIndexCOO_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensorIndexCOO_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO, org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_identifier, org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_identifier)

#define __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_formal_args ,\
  org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t v0, org_apache_arrow_flatbuf_Int_ref_t v1, org_apache_arrow_flatbuf_Buffer_t *v2, org_apache_arrow_flatbuf_Int_ref_t v3, org_apache_arrow_flatbuf_Buffer_t *v4
#define __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_call_args ,\
  v0, v1, v2, v3, v4
static inline org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_identifier, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_identifier)

#define __org_apache_arrow_flatbuf_SparseTensorIndexCSF_formal_args ,\
  org_apache_arrow_flatbuf_Int_ref_t v0, org_apache_arrow_flatbuf_Buffer_vec_ref_t v1, org_apache_arrow_flatbuf_Int_ref_t v2, org_apache_arrow_flatbuf_Buffer_vec_ref_t v3, flatbuffers_int32_vec_ref_t v4
#define __org_apache_arrow_flatbuf_SparseTensorIndexCSF_call_args ,\
  v0, v1, v2, v3, v4
static inline org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensorIndexCSF_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF, org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_identifier, org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_identifier)

#define __org_apache_arrow_flatbuf_SparseTensor_formal_args ,\
  org_apache_arrow_flatbuf_Type_union_ref_t v1, org_apache_arrow_flatbuf_TensorDim_vec_ref_t v2, int64_t v3, org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t v5, org_apache_arrow_flatbuf_Buffer_t *v6
#define __org_apache_arrow_flatbuf_SparseTensor_call_args ,\
  v1, v2, v3, v5, v6
static inline org_apache_arrow_flatbuf_SparseTensor_ref_t org_apache_arrow_flatbuf_SparseTensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensor_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor, org_apache_arrow_flatbuf_SparseTensor_file_identifier, org_apache_arrow_flatbuf_SparseTensor_type_identifier)

static inline org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_as_NONE(void)
{ org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_SparseTensorIndex_NONE; uref.value = 0; return uref; }
static inline org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseTensorIndexCOO(org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t ref)
{ org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCOO; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseMatrixIndexCSX(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t ref)
{ org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_SparseTensorIndex_SparseMatrixIndexCSX; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseTensorIndexCSF(org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t ref)
{ org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCSF; uref.value = ref; return uref; }
__flatbuffers_build_union_vector(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndex)

static org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndex_union_t u)
{
    switch (u.type) {
    case 1: return org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseTensorIndexCOO(org_apache_arrow_flatbuf_SparseTensorIndexCOO_clone(B, (org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t)u.value));
    case 2: return org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseMatrixIndexCSX(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_clone(B, (org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t)u.value));
    case 3: return org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseTensorIndexCSF(org_apache_arrow_flatbuf_SparseTensorIndexCSF_clone(B, (org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t)u.value));
    default: return org_apache_arrow_flatbuf_SparseTensorIndex_as_NONE();
    }
}

__flatbuffers_build_table_field(0, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseTensorIndexCOO)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesStrides, flatbuffers_int64, int64_t, org_apache_arrow_flatbuf_SparseTensorIndexCOO)
__flatbuffers_build_struct_field(2, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesBuffer, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_SparseTensorIndexCOO)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO_isCanonical, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_SparseTensorIndexCOO)

static inline org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensorIndexCOO_formal_args)
{
    if (org_apache_arrow_flatbuf_SparseTensorIndexCOO_start(B)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesBuffer_add(B, v2)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesType_add(B, v0)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesStrides_add(B, v1)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_isCanonical_add(B, v3)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_SparseTensorIndexCOO_end(B);
}

static org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_SparseTensorIndexCOO_start(B)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesBuffer_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesStrides_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_isCanonical_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_SparseTensorIndexCOO_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_compressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_table_field(1, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_struct_field(2, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrBuffer, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_table_field(3, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_struct_field(4, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesBuffer, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)

static inline org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_formal_args)
{
    if (org_apache_arrow_flatbuf_SparseMatrixIndexCSX_start(B)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrBuffer_add(B, v2)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesBuffer_add(B, v4)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrType_add(B, v1)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesType_add(B, v3)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_compressedAxis_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_SparseMatrixIndexCSX_end(B);
}

static org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_SparseMatrixIndexCSX_start(B)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrBuffer_pick(B, t)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesBuffer_pick(B, t)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_compressedAxis_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_end(B));
}

__flatbuffers_build_table_field(0, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrBuffers, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_table_field(2, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesBuffers, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_vector_field(4, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_axisOrder, flatbuffers_int32, int32_t, org_apache_arrow_flatbuf_SparseTensorIndexCSF)

static inline org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensorIndexCSF_formal_args)
{
    if (org_apache_arrow_flatbuf_SparseTensorIndexCSF_start(B)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrType_add(B, v0)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrBuffers_add(B, v1)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesType_add(B, v2)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesBuffers_add(B, v3)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_axisOrder_add(B, v4)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_SparseTensorIndexCSF_end(B);
}

static org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_SparseTensorIndexCSF_start(B)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrBuffers_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesBuffers_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_axisOrder_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_SparseTensorIndexCSF_end(B));
}

__flatbuffers_build_union_field(1, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_SparseTensor)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_shape, org_apache_arrow_flatbuf_TensorDim, org_apache_arrow_flatbuf_SparseTensor)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_non_zero_length, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_SparseTensor)
__flatbuffers_build_union_field(5, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, org_apache_arrow_flatbuf_SparseTensor)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, SparseTensorIndexCOO, org_apache_arrow_flatbuf_SparseTensorIndexCOO)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, SparseMatrixIndexCSX, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, SparseTensorIndexCSF, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_struct_field(6, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_data, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_SparseTensor)

static inline org_apache_arrow_flatbuf_SparseTensor_ref_t org_apache_arrow_flatbuf_SparseTensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensor_formal_args)
{
    if (org_apache_arrow_flatbuf_SparseTensor_start(B)
        || org_apache_arrow_flatbuf_SparseTensor_non_zero_length_add(B, v3)
        || org_apache_arrow_flatbuf_SparseTensor_data_add(B, v6)
        || org_apache_arrow_flatbuf_SparseTensor_type_add_value(B, v1)
        || org_apache_arrow_flatbuf_SparseTensor_shape_add(B, v2)
        || org_apache_arrow_flatbuf_SparseTensor_sparseIndex_add_value(B, v5)
        || org_apache_arrow_flatbuf_SparseTensor_type_add_type(B, v1.type)
        || org_apache_arrow_flatbuf_SparseTensor_sparseIndex_add_type(B, v5.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_SparseTensor_end(B);
}

static org_apache_arrow_flatbuf_SparseTensor_ref_t org_apache_arrow_flatbuf_SparseTensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensor_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_SparseTensor_start(B)
        || org_apache_arrow_flatbuf_SparseTensor_non_zero_length_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensor_data_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensor_type_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensor_shape_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensor_sparseIndex_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_SparseTensor_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SPARSETENSOR_BUILDER_H */
#ifndef SPARSETENSOR_VERIFIER_H
#define SPARSETENSOR_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SPARSETENSOR_READER_H
#include "SparseTensor_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#ifndef TENSOR_VERIFIER_H
#include "Tensor_verifier.h"
#endif
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_SparseTensor_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_SparseTensorIndex_union_verifier(flatcc_union_verifier_descriptor_t *ud)
{
    switch (ud->type) {
    case 1: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table); /* SparseTensorIndexCOO */
    case 2: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table); /* SparseMatrixIndexCSX */
    case 3: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table); /* SparseTensorIndexCSF */
    default: return flatcc_verify_ok;
    }
}

static int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_table_field(td, 0, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indicesType */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 0, 8, 8, INT64_C(536870911)) /* indicesStrides */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 16, 8) /* indicesBuffer */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 1, 1) /* isCanonical */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCOO_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCOO_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* compressedAxis */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 1, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indptrType */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 16, 8) /* indptrBuffer */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 3, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indicesType */)) return ret;
    if ((ret = flatcc_verify_field(td, 4, 16, 8) /* indicesBuffer */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_identifier, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_identifier, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_identifier, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_identifier, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_table_field(td, 0, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indptrType */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 1, 16, 8, INT64_C(268435455)) /* indptrBuffers */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 2, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indicesType */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 1, 16, 8, INT64_C(268435455)) /* indicesBuffers */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 4, 1, 4, 4, INT64_C(1073741823)) /* axisOrder */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCSF_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCSF_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static int org_apache_arrow_flatbuf_SparseTensor_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_union_field(td, 1, 1, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 1, &org_apache_arrow_flatbuf_TensorDim_verify_table) /* shape */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 8, 8) /* non_zero_length */)) return ret;
    if ((ret = flatcc_verify_union_field(td, 5, 1, &org_apache_arrow_flatbuf_SparseTensorIndex_union_verifier) /* sparseIndex */)) return ret;
    if ((ret = flatcc_verify_field(td, 6, 16, 8) /* data */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensor_identifier, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensor_identifier, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensor_type_identifier, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensor_type_identifier, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SPARSETENSOR_VERIFIER_H */
#ifndef MESSAGE_READER_H
#define MESSAGE_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#ifndef TENSOR_READER_H
#include "Tensor_reader.h"
#endif
#ifndef SPARSETENSOR_READER_H
#include "SparseTensor_reader.h"
#endif
#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

typedef struct org_apache_arrow_flatbuf_FieldNode org_apache_arrow_flatbuf_FieldNode_t;
typedef const org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_struct_t;
typedef org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_mutable_struct_t;
typedef const org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_vec_t;
typedef org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_mutable_vec_t;

typedef const struct org_apache_arrow_flatbuf_BodyCompression_table *org_apache_arrow_flatbuf_BodyCompression_table_t;
typedef struct org_apache_arrow_flatbuf_BodyCompression_table *org_apache_arrow_flatbuf_BodyCompression_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BodyCompression_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BodyCompression_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_RecordBatch_table *org_apache_arrow_flatbuf_RecordBatch_table_t;
typedef struct org_apache_arrow_flatbuf_RecordBatch_table *org_apache_arrow_flatbuf_RecordBatch_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RecordBatch_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RecordBatch_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_DictionaryBatch_table *org_apache_arrow_flatbuf_DictionaryBatch_table_t;
typedef struct org_apache_arrow_flatbuf_DictionaryBatch_table *org_apache_arrow_flatbuf_DictionaryBatch_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryBatch_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryBatch_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Message_table *org_apache_arrow_flatbuf_Message_table_t;
typedef struct org_apache_arrow_flatbuf_Message_table *org_apache_arrow_flatbuf_Message_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Message_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Message_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_FieldNode_file_identifier
#define org_apache_arrow_flatbuf_FieldNode_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FieldNode_file_identifier */
#ifndef org_apache_arrow_flatbuf_FieldNode_identifier
#define org_apache_arrow_flatbuf_FieldNode_identifier 0
#endif
#define org_apache_arrow_flatbuf_FieldNode_type_hash ((flatbuffers_thash_t)0x931857b8)
#define org_apache_arrow_flatbuf_FieldNode_type_identifier "\xb8\x57\x18\x93"
#ifndef org_apache_arrow_flatbuf_FieldNode_file_extension
#define org_apache_arrow_flatbuf_FieldNode_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_BodyCompression_file_identifier
#define org_apache_arrow_flatbuf_BodyCompression_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_BodyCompression_file_identifier */
#ifndef org_apache_arrow_flatbuf_BodyCompression_identifier
#define org_apache_arrow_flatbuf_BodyCompression_identifier 0
#endif
#define org_apache_arrow_flatbuf_BodyCompression_type_hash ((flatbuffers_thash_t)0xbc821116)
#define org_apache_arrow_flatbuf_BodyCompression_type_identifier "\x16\x11\x82\xbc"
#ifndef org_apache_arrow_flatbuf_BodyCompression_file_extension
#define org_apache_arrow_flatbuf_BodyCompression_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_RecordBatch_file_identifier
#define org_apache_arrow_flatbuf_RecordBatch_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_RecordBatch_file_identifier */
#ifndef org_apache_arrow_flatbuf_RecordBatch_identifier
#define org_apache_arrow_flatbuf_RecordBatch_identifier 0
#endif
#define org_apache_arrow_flatbuf_RecordBatch_type_hash ((flatbuffers_thash_t)0x43c558b)
#define org_apache_arrow_flatbuf_RecordBatch_type_identifier "\x8b\x55\x3c\x04"
#ifndef org_apache_arrow_flatbuf_RecordBatch_file_extension
#define org_apache_arrow_flatbuf_RecordBatch_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_DictionaryBatch_file_identifier
#define org_apache_arrow_flatbuf_DictionaryBatch_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_DictionaryBatch_file_identifier */
#ifndef org_apache_arrow_flatbuf_DictionaryBatch_identifier
#define org_apache_arrow_flatbuf_DictionaryBatch_identifier 0
#endif
#define org_apache_arrow_flatbuf_DictionaryBatch_type_hash ((flatbuffers_thash_t)0x5c6da7bc)
#define org_apache_arrow_flatbuf_DictionaryBatch_type_identifier "\xbc\xa7\x6d\x5c"
#ifndef org_apache_arrow_flatbuf_DictionaryBatch_file_extension
#define org_apache_arrow_flatbuf_DictionaryBatch_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Message_file_identifier
#define org_apache_arrow_flatbuf_Message_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Message_file_identifier */
#ifndef org_apache_arrow_flatbuf_Message_identifier
#define org_apache_arrow_flatbuf_Message_identifier 0
#endif
#define org_apache_arrow_flatbuf_Message_type_hash ((flatbuffers_thash_t)0xc3efd227)
#define org_apache_arrow_flatbuf_Message_type_identifier "\x27\xd2\xef\xc3"
#ifndef org_apache_arrow_flatbuf_Message_file_extension
#define org_apache_arrow_flatbuf_Message_file_extension "bin"
#endif

typedef int8_t org_apache_arrow_flatbuf_CompressionType_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_CompressionType, org_apache_arrow_flatbuf_CompressionType_enum_t, 8)
#define org_apache_arrow_flatbuf_CompressionType_LZ4_FRAME ((org_apache_arrow_flatbuf_CompressionType_enum_t)INT8_C(0))
#define org_apache_arrow_flatbuf_CompressionType_ZSTD ((org_apache_arrow_flatbuf_CompressionType_enum_t)INT8_C(1))

static inline const char *org_apache_arrow_flatbuf_CompressionType_name(org_apache_arrow_flatbuf_CompressionType_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_CompressionType_LZ4_FRAME: return "LZ4_FRAME";
    case org_apache_arrow_flatbuf_CompressionType_ZSTD: return "ZSTD";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_CompressionType_is_known_value(org_apache_arrow_flatbuf_CompressionType_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_CompressionType_LZ4_FRAME: return 1;
    case org_apache_arrow_flatbuf_CompressionType_ZSTD: return 1;
    default: return 0;
    }
}

/**  Provided for forward compatibility in case we need to support different
 *  strategies for compressing the IPC message body (like whole-body
 *  compression rather than buffer-level) in the future */
typedef int8_t org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_BodyCompressionMethod, org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t, 8)
/**  Each constituent buffer is first compressed with the indicated
 *  compressor, and then written with the uncompressed length in the first 8
 *  bytes as a 64-bit little-endian signed integer followed by the compressed
 *  buffer bytes (and then padding as required by the protocol). The
 *  uncompressed length may be set to -1 to indicate that the data that
 *  follows is not compressed, which can be useful for cases where
 *  compression does not yield appreciable savings.
 *  Also, empty buffers can optionally be written out as 0-byte compressed
 *  buffers, thereby omitting the 8-bytes length header. */
#define org_apache_arrow_flatbuf_BodyCompressionMethod_BUFFER ((org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t)INT8_C(0))

static inline const char *org_apache_arrow_flatbuf_BodyCompressionMethod_name(org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_BodyCompressionMethod_BUFFER: return "BUFFER";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_BodyCompressionMethod_is_known_value(org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_BodyCompressionMethod_BUFFER: return 1;
    default: return 0;
    }
}


/**  ----------------------------------------------------------------------
 *  Data structures for describing a table row batch (a collection of
 *  equal-length Arrow arrays)
 *  Metadata about a field at some level of a nested type tree (but not
 *  its children).
 *
 *  For example, a List<Int16> with values `[[1, 2, 3], null, [4], [5, 6], null]`
 *  would have {length: 5, null_count: 2} for its List node, and {length: 6,
 *  null_count: 0} for its Int16 node, as separate FieldNode structs */
struct org_apache_arrow_flatbuf_FieldNode {
    /**  The number of value slots in the Arrow array at this level of a nested
     *  tree */
    alignas(8) int64_t length;
    /**  The number of observed nulls. Fields with null_count == 0 may choose not
     *  to write their physical validity bitmap out as a materialized buffer,
     *  instead setting the length of the bitmap buffer to 0. */
    alignas(8) int64_t null_count;
};
static_assert(sizeof(org_apache_arrow_flatbuf_FieldNode_t) == 16, "struct size mismatch");

static inline const org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode__const_ptr_add(const org_apache_arrow_flatbuf_FieldNode_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode__ptr_add(org_apache_arrow_flatbuf_FieldNode_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_FieldNode_struct_t org_apache_arrow_flatbuf_FieldNode_vec_at(org_apache_arrow_flatbuf_FieldNode_vec_t vec, size_t i)
__flatbuffers_struct_vec_at(vec, i)
static inline size_t org_apache_arrow_flatbuf_FieldNode__size(void) { return 16; }
static inline size_t org_apache_arrow_flatbuf_FieldNode_vec_len(org_apache_arrow_flatbuf_FieldNode_vec_t vec)
__flatbuffers_vec_len(vec)
__flatbuffers_struct_as_root(org_apache_arrow_flatbuf_FieldNode)

__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_FieldNode, length, flatbuffers_int64, int64_t)
__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_FieldNode, null_count, flatbuffers_int64, int64_t)


/**  Optional compression for the memory buffers constituting IPC message
 *  bodies. Intended for use with RecordBatch but could be used for other
 *  message types */
struct org_apache_arrow_flatbuf_BodyCompression_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_BodyCompression_vec_len(org_apache_arrow_flatbuf_BodyCompression_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_BodyCompression_table_t org_apache_arrow_flatbuf_BodyCompression_vec_at(org_apache_arrow_flatbuf_BodyCompression_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_BodyCompression_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_BodyCompression)

/**  Compressor library.
 *  For LZ4_FRAME, each compressed buffer must consist of a single frame. */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_BodyCompression, codec, org_apache_arrow_flatbuf_CompressionType, org_apache_arrow_flatbuf_CompressionType_enum_t, INT8_C(0))
/**  Indicates the way the record batch body was compressed */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_BodyCompression, method, org_apache_arrow_flatbuf_BodyCompressionMethod, org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t, INT8_C(0))

/**  A data header describing the shared memory layout of a "record" or "row"
 *  batch. Some systems call this a "row batch" internally and others a "record
 *  batch". */
struct org_apache_arrow_flatbuf_RecordBatch_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_RecordBatch_vec_len(org_apache_arrow_flatbuf_RecordBatch_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_RecordBatch_table_t org_apache_arrow_flatbuf_RecordBatch_vec_at(org_apache_arrow_flatbuf_RecordBatch_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_RecordBatch_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_RecordBatch)

/**  number of records / rows. The arrays in the batch should all have this
 *  length */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_RecordBatch, length, flatbuffers_int64, int64_t, INT64_C(0))
/**  Nodes correspond to the pre-ordered flattened logical schema */
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_RecordBatch, nodes, org_apache_arrow_flatbuf_FieldNode_vec_t, 0)
/**  Buffers correspond to the pre-ordered flattened buffer tree
 *
 *  The number of buffers appended to this list depends on the schema. For
 *  example, most primitive arrays will have 2 buffers, 1 for the validity
 *  bitmap and 1 for the values. For struct arrays, there will only be a
 *  single buffer for the validity (nulls) bitmap */
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_RecordBatch, buffers, org_apache_arrow_flatbuf_Buffer_vec_t, 0)
/**  Optional compression of the message body */
__flatbuffers_define_table_field(3, org_apache_arrow_flatbuf_RecordBatch, compression, org_apache_arrow_flatbuf_BodyCompression_table_t, 0)
/**  Some types such as Utf8View are represented using a variable number of buffers.
 *  For each such Field in the pre-ordered flattened logical schema, there will be
 *  an entry in variadicBufferCounts to indicate the number of variadic
 *  buffers which belong to that Field in the current RecordBatch.
 *
 *  For example, the schema
 *      col1: Struct<alpha: Int32, beta: BinaryView, gamma: Float64>
 *      col2: Utf8View
 *  contains two Fields with variadic buffers so variadicBufferCounts will have
 *  two entries, the first counting the variadic buffers of `col1.beta` and the
 *  second counting `col2`'s.
 *
 *  This field may be omitted if and only if the schema contains no Fields with
 *  a variable number of buffers, such as BinaryView and Utf8View. */
__flatbuffers_define_vector_field(4, org_apache_arrow_flatbuf_RecordBatch, variadicBufferCounts, flatbuffers_int64_vec_t, 0)

/**  For sending dictionary encoding information. Any Field can be
 *  dictionary-encoded, but in this case none of its children may be
 *  dictionary-encoded.
 *  There is one vector / column per dictionary, but that vector / column
 *  may be spread across multiple dictionary batches by using the isDelta
 *  flag */
struct org_apache_arrow_flatbuf_DictionaryBatch_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_DictionaryBatch_vec_len(org_apache_arrow_flatbuf_DictionaryBatch_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_DictionaryBatch_table_t org_apache_arrow_flatbuf_DictionaryBatch_vec_at(org_apache_arrow_flatbuf_DictionaryBatch_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_DictionaryBatch_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_DictionaryBatch)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_DictionaryBatch, id, flatbuffers_int64, int64_t, INT64_C(0))
__flatbuffers_define_table_field(1, org_apache_arrow_flatbuf_DictionaryBatch, data, org_apache_arrow_flatbuf_RecordBatch_table_t, 0)
/**  If isDelta is true the values in the dictionary are to be appended to a
 *  dictionary with the indicated id. If isDelta is false this dictionary
 *  should replace the existing dictionary. */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_DictionaryBatch, isDelta, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
/**  ----------------------------------------------------------------------
 *  The root Message type
 *  This union enables us to easily send different message types without
 *  redundant storage, and in the future we can easily add new message types.
 *
 *  Arrow implementations do not need to implement all of the message types,
 *  which may include experimental metadata types. For maximum compatibility,
 *  it is best to send data using RecordBatch */
typedef uint8_t org_apache_arrow_flatbuf_MessageHeader_union_type_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_MessageHeader, org_apache_arrow_flatbuf_MessageHeader_union_type_t, 8)
__flatbuffers_define_union(flatbuffers_, org_apache_arrow_flatbuf_MessageHeader)
#define org_apache_arrow_flatbuf_MessageHeader_NONE ((org_apache_arrow_flatbuf_MessageHeader_union_type_t)UINT8_C(0))
#define org_apache_arrow_flatbuf_MessageHeader_Schema ((org_apache_arrow_flatbuf_MessageHeader_union_type_t)UINT8_C(1))
#define org_apache_arrow_flatbuf_MessageHeader_DictionaryBatch ((org_apache_arrow_flatbuf_MessageHeader_union_type_t)UINT8_C(2))
#define org_apache_arrow_flatbuf_MessageHeader_RecordBatch ((org_apache_arrow_flatbuf_MessageHeader_union_type_t)UINT8_C(3))
#define org_apache_arrow_flatbuf_MessageHeader_Tensor ((org_apache_arrow_flatbuf_MessageHeader_union_type_t)UINT8_C(4))
#define org_apache_arrow_flatbuf_MessageHeader_SparseTensor ((org_apache_arrow_flatbuf_MessageHeader_union_type_t)UINT8_C(5))

static inline const char *org_apache_arrow_flatbuf_MessageHeader_type_name(org_apache_arrow_flatbuf_MessageHeader_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_MessageHeader_NONE: return "NONE";
    case org_apache_arrow_flatbuf_MessageHeader_Schema: return "Schema";
    case org_apache_arrow_flatbuf_MessageHeader_DictionaryBatch: return "DictionaryBatch";
    case org_apache_arrow_flatbuf_MessageHeader_RecordBatch: return "RecordBatch";
    case org_apache_arrow_flatbuf_MessageHeader_Tensor: return "Tensor";
    case org_apache_arrow_flatbuf_MessageHeader_SparseTensor: return "SparseTensor";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_MessageHeader_is_known_type(org_apache_arrow_flatbuf_MessageHeader_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_MessageHeader_NONE: return 1;
    case org_apache_arrow_flatbuf_MessageHeader_Schema: return 1;
    case org_apache_arrow_flatbuf_MessageHeader_DictionaryBatch: return 1;
    case org_apache_arrow_flatbuf_MessageHeader_RecordBatch: return 1;
    case org_apache_arrow_flatbuf_MessageHeader_Tensor: return 1;
    case org_apache_arrow_flatbuf_MessageHeader_SparseTensor: return 1;
    default: return 0;
    }
}


struct org_apache_arrow_flatbuf_Message_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Message_vec_len(org_apache_arrow_flatbuf_Message_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Message_table_t org_apache_arrow_flatbuf_Message_vec_at(org_apache_arrow_flatbuf_Message_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Message_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Message)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Message, version, org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t, INT16_C(0))
__flatbuffers_define_union_field(flatbuffers_, 2, org_apache_arrow_flatbuf_Message, header, org_apache_arrow_flatbuf_MessageHeader, 0)
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_Message, bodyLength, flatbuffers_int64, int64_t, INT64_C(0))
__flatbuffers_define_vector_field(4, org_apache_arrow_flatbuf_Message, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)


#include "flatcc/flatcc_epilogue.h"
#endif /* MESSAGE_READER_H */
#ifndef MESSAGE_BUILDER_H
#define MESSAGE_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef MESSAGE_READER_H
#include "Message_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#ifndef TENSOR_BUILDER_H
#include "Tensor_builder.h"
#endif
#ifndef SPARSETENSOR_BUILDER_H
#include "SparseTensor_builder.h"
#endif
#ifndef SCHEMA_BUILDER_H
#include "Schema_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

#define __org_apache_arrow_flatbuf_CompressionType_formal_args , org_apache_arrow_flatbuf_CompressionType_enum_t v0
#define __org_apache_arrow_flatbuf_CompressionType_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_CompressionType, org_apache_arrow_flatbuf_CompressionType_enum_t)
#define __org_apache_arrow_flatbuf_BodyCompressionMethod_formal_args , org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t v0
#define __org_apache_arrow_flatbuf_BodyCompressionMethod_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_BodyCompressionMethod, org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t)

#define __org_apache_arrow_flatbuf_FieldNode_formal_args , int64_t v0, int64_t v1
#define __org_apache_arrow_flatbuf_FieldNode_call_args , v0, v1
static inline org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_assign(org_apache_arrow_flatbuf_FieldNode_t *p, int64_t v0, int64_t v1)
{ p->length = v0; p->null_count = v1;
  return p; }
static inline org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_copy(org_apache_arrow_flatbuf_FieldNode_t *p, const org_apache_arrow_flatbuf_FieldNode_t *p2)
{ p->length = p2->length; p->null_count = p2->null_count;
  return p; }
static inline org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_assign_to_pe(org_apache_arrow_flatbuf_FieldNode_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_to_pe(&p->length, v0); flatbuffers_int64_assign_to_pe(&p->null_count, v1);
  return p; }
static inline org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_copy_to_pe(org_apache_arrow_flatbuf_FieldNode_t *p, const org_apache_arrow_flatbuf_FieldNode_t *p2)
{ flatbuffers_int64_copy_to_pe(&p->length, &p2->length); flatbuffers_int64_copy_to_pe(&p->null_count, &p2->null_count);
  return p; }
static inline org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_assign_from_pe(org_apache_arrow_flatbuf_FieldNode_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_from_pe(&p->length, v0); flatbuffers_int64_assign_from_pe(&p->null_count, v1);
  return p; }
static inline org_apache_arrow_flatbuf_FieldNode_t *org_apache_arrow_flatbuf_FieldNode_copy_from_pe(org_apache_arrow_flatbuf_FieldNode_t *p, const org_apache_arrow_flatbuf_FieldNode_t *p2)
{ flatbuffers_int64_copy_from_pe(&p->length, &p2->length); flatbuffers_int64_copy_from_pe(&p->null_count, &p2->null_count);
  return p; }
__flatbuffers_build_struct(flatbuffers_, org_apache_arrow_flatbuf_FieldNode, 16, 8, org_apache_arrow_flatbuf_FieldNode_file_identifier, org_apache_arrow_flatbuf_FieldNode_type_identifier)
__flatbuffers_define_fixed_array_primitives(flatbuffers_, org_apache_arrow_flatbuf_FieldNode, org_apache_arrow_flatbuf_FieldNode_t)

typedef flatbuffers_union_ref_t org_apache_arrow_flatbuf_MessageHeader_union_ref_t;
typedef flatbuffers_union_vec_ref_t org_apache_arrow_flatbuf_MessageHeader_union_vec_ref_t;
static org_apache_arrow_flatbuf_MessageHeader_union_ref_t org_apache_arrow_flatbuf_MessageHeader_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_MessageHeader_union_t t);

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_BodyCompression_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_BodyCompression_ref_t;
static org_apache_arrow_flatbuf_BodyCompression_ref_t org_apache_arrow_flatbuf_BodyCompression_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BodyCompression_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_BodyCompression, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_RecordBatch_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_RecordBatch_ref_t;
static org_apache_arrow_flatbuf_RecordBatch_ref_t org_apache_arrow_flatbuf_RecordBatch_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RecordBatch_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_RecordBatch, 5)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_DictionaryBatch_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_DictionaryBatch_ref_t;
static org_apache_arrow_flatbuf_DictionaryBatch_ref_t org_apache_arrow_flatbuf_DictionaryBatch_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryBatch_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_DictionaryBatch, 3)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Message_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Message_ref_t;
static org_apache_arrow_flatbuf_Message_ref_t org_apache_arrow_flatbuf_Message_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Message_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Message, 5)

#define __org_apache_arrow_flatbuf_BodyCompression_formal_args , org_apache_arrow_flatbuf_CompressionType_enum_t v0, org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t v1
#define __org_apache_arrow_flatbuf_BodyCompression_call_args , v0, v1
static inline org_apache_arrow_flatbuf_BodyCompression_ref_t org_apache_arrow_flatbuf_BodyCompression_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BodyCompression_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_BodyCompression, org_apache_arrow_flatbuf_BodyCompression_file_identifier, org_apache_arrow_flatbuf_BodyCompression_type_identifier)

#define __org_apache_arrow_flatbuf_RecordBatch_formal_args ,\
  int64_t v0, org_apache_arrow_flatbuf_FieldNode_vec_ref_t v1, org_apache_arrow_flatbuf_Buffer_vec_ref_t v2, org_apache_arrow_flatbuf_BodyCompression_ref_t v3, flatbuffers_int64_vec_ref_t v4
#define __org_apache_arrow_flatbuf_RecordBatch_call_args ,\
  v0, v1, v2, v3, v4
static inline org_apache_arrow_flatbuf_RecordBatch_ref_t org_apache_arrow_flatbuf_RecordBatch_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RecordBatch_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_RecordBatch, org_apache_arrow_flatbuf_RecordBatch_file_identifier, org_apache_arrow_flatbuf_RecordBatch_type_identifier)

#define __org_apache_arrow_flatbuf_DictionaryBatch_formal_args , int64_t v0, org_apache_arrow_flatbuf_RecordBatch_ref_t v1, flatbuffers_bool_t v2
#define __org_apache_arrow_flatbuf_DictionaryBatch_call_args , v0, v1, v2
static inline org_apache_arrow_flatbuf_DictionaryBatch_ref_t org_apache_arrow_flatbuf_DictionaryBatch_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryBatch_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_DictionaryBatch, org_apache_arrow_flatbuf_DictionaryBatch_file_identifier, org_apache_arrow_flatbuf_DictionaryBatch_type_identifier)

#define __org_apache_arrow_flatbuf_Message_formal_args , org_apache_arrow_flatbuf_MetadataVersion_enum_t v0, org_apache_arrow_flatbuf_MessageHeader_union_ref_t v2, int64_t v3, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v4
#define __org_apache_arrow_flatbuf_Message_call_args , v0, v2, v3, v4
static inline org_apache_arrow_flatbuf_Message_ref_t org_apache_arrow_flatbuf_Message_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Message_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Message, org_apache_arrow_flatbuf_Message_file_identifier, org_apache_arrow_flatbuf_Message_type_identifier)

static inline org_apache_arrow_flatbuf_MessageHeader_union_ref_t org_apache_arrow_flatbuf_MessageHeader_as_NONE(void)
{ org_apache_arrow_flatbuf_MessageHeader_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_MessageHeader_NONE; uref.value = 0; return uref; }
static inline org_apache_arrow_flatbuf_MessageHeader_union_ref_t org_apache_arrow_flatbuf_MessageHeader_as_Schema(org_apache_arrow_flatbuf_Schema_ref_t ref)
{ org_apache_arrow_flatbuf_MessageHeader_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_MessageHeader_Schema; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_MessageHeader_union_ref_t org_apache_arrow_flatbuf_MessageHeader_as_DictionaryBatch(org_apache_arrow_flatbuf_DictionaryBatch_ref_t ref)
{ org_apache_arrow_flatbuf_MessageHeader_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_MessageHeader_DictionaryBatch; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_MessageHeader_union_ref_t org_apache_arrow_flatbuf_MessageHeader_as_RecordBatch(org_apache_arrow_flatbuf_RecordBatch_ref_t ref)
{ org_apache_arrow_flatbuf_MessageHeader_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_MessageHeader_RecordBatch; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_MessageHeader_union_ref_t org_apache_arrow_flatbuf_MessageHeader_as_Tensor(org_apache_arrow_flatbuf_Tensor_ref_t ref)
{ org_apache_arrow_flatbuf_MessageHeader_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_MessageHeader_Tensor; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_MessageHeader_union_ref_t org_apache_arrow_flatbuf_MessageHeader_as_SparseTensor(org_apache_arrow_flatbuf_SparseTensor_ref_t ref)
{ org_apache_arrow_flatbuf_MessageHeader_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_MessageHeader_SparseTensor; uref.value = ref; return uref; }
__flatbuffers_build_union_vector(flatbuffers_, org_apache_arrow_flatbuf_MessageHeader)

static org_apache_arrow_flatbuf_MessageHeader_union_ref_t org_apache_arrow_flatbuf_MessageHeader_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_MessageHeader_union_t u)
{
    switch (u.type) {
    case 1: return org_apache_arrow_flatbuf_MessageHeader_as_Schema(org_apache_arrow_flatbuf_Schema_clone(B, (org_apache_arrow_flatbuf_Schema_table_t)u.value));
    case 2: return org_apache_arrow_flatbuf_MessageHeader_as_DictionaryBatch(org_apache_arrow_flatbuf_DictionaryBatch_clone(B, (org_apache_arrow_flatbuf_DictionaryBatch_table_t)u.value));
    case 3: return org_apache_arrow_flatbuf_MessageHeader_as_RecordBatch(org_apache_arrow_flatbuf_RecordBatch_clone(B, (org_apache_arrow_flatbuf_RecordBatch_table_t)u.value));
    case 4: return org_apache_arrow_flatbuf_MessageHeader_as_Tensor(org_apache_arrow_flatbuf_Tensor_clone(B, (org_apache_arrow_flatbuf_Tensor_table_t)u.value));
    case 5: return org_apache_arrow_flatbuf_MessageHeader_as_SparseTensor(org_apache_arrow_flatbuf_SparseTensor_clone(B, (org_apache_arrow_flatbuf_SparseTensor_table_t)u.value));
    default: return org_apache_arrow_flatbuf_MessageHeader_as_NONE();
    }
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_BodyCompression_codec, org_apache_arrow_flatbuf_CompressionType, org_apache_arrow_flatbuf_CompressionType_enum_t, 1, 1, INT8_C(0), org_apache_arrow_flatbuf_BodyCompression)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_BodyCompression_method, org_apache_arrow_flatbuf_BodyCompressionMethod, org_apache_arrow_flatbuf_BodyCompressionMethod_enum_t, 1, 1, INT8_C(0), org_apache_arrow_flatbuf_BodyCompression)

static inline org_apache_arrow_flatbuf_BodyCompression_ref_t org_apache_arrow_flatbuf_BodyCompression_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BodyCompression_formal_args)
{
    if (org_apache_arrow_flatbuf_BodyCompression_start(B)
        || org_apache_arrow_flatbuf_BodyCompression_codec_add(B, v0)
        || org_apache_arrow_flatbuf_BodyCompression_method_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_BodyCompression_end(B);
}

static org_apache_arrow_flatbuf_BodyCompression_ref_t org_apache_arrow_flatbuf_BodyCompression_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BodyCompression_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_BodyCompression_start(B)
        || org_apache_arrow_flatbuf_BodyCompression_codec_pick(B, t)
        || org_apache_arrow_flatbuf_BodyCompression_method_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_BodyCompression_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_RecordBatch_length, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_RecordBatch)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_RecordBatch_nodes, org_apache_arrow_flatbuf_FieldNode, org_apache_arrow_flatbuf_FieldNode_t, org_apache_arrow_flatbuf_RecordBatch)
__flatbuffers_build_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_RecordBatch_buffers, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t, org_apache_arrow_flatbuf_RecordBatch)
__flatbuffers_build_table_field(3, flatbuffers_, org_apache_arrow_flatbuf_RecordBatch_compression, org_apache_arrow_flatbuf_BodyCompression, org_apache_arrow_flatbuf_RecordBatch)
__flatbuffers_build_vector_field(4, flatbuffers_, org_apache_arrow_flatbuf_RecordBatch_variadicBufferCounts, flatbuffers_int64, int64_t, org_apache_arrow_flatbuf_RecordBatch)

static inline org_apache_arrow_flatbuf_RecordBatch_ref_t org_apache_arrow_flatbuf_RecordBatch_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RecordBatch_formal_args)
{
    if (org_apache_arrow_flatbuf_RecordBatch_start(B)
        || org_apache_arrow_flatbuf_RecordBatch_length_add(B, v0)
        || org_apache_arrow_flatbuf_RecordBatch_nodes_add(B, v1)
        || org_apache_arrow_flatbuf_RecordBatch_buffers_add(B, v2)
        || org_apache_arrow_flatbuf_RecordBatch_compression_add(B, v3)
        || org_apache_arrow_flatbuf_RecordBatch_variadicBufferCounts_add(B, v4)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_RecordBatch_end(B);
}

static org_apache_arrow_flatbuf_RecordBatch_ref_t org_apache_arrow_flatbuf_RecordBatch_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RecordBatch_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_RecordBatch_start(B)
        || org_apache_arrow_flatbuf_RecordBatch_length_pick(B, t)
        || org_apache_arrow_flatbuf_RecordBatch_nodes_pick(B, t)
        || org_apache_arrow_flatbuf_RecordBatch_buffers_pick(B, t)
        || org_apache_arrow_flatbuf_RecordBatch_compression_pick(B, t)
        || org_apache_arrow_flatbuf_RecordBatch_variadicBufferCounts_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_RecordBatch_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_DictionaryBatch_id, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_DictionaryBatch)
__flatbuffers_build_table_field(1, flatbuffers_, org_apache_arrow_flatbuf_DictionaryBatch_data, org_apache_arrow_flatbuf_RecordBatch, org_apache_arrow_flatbuf_DictionaryBatch)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_DictionaryBatch_isDelta, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_DictionaryBatch)

static inline org_apache_arrow_flatbuf_DictionaryBatch_ref_t org_apache_arrow_flatbuf_DictionaryBatch_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryBatch_formal_args)
{
    if (org_apache_arrow_flatbuf_DictionaryBatch_start(B)
        || org_apache_arrow_flatbuf_DictionaryBatch_id_add(B, v0)
        || org_apache_arrow_flatbuf_DictionaryBatch_data_add(B, v1)
        || org_apache_arrow_flatbuf_DictionaryBatch_isDelta_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_DictionaryBatch_end(B);
}

static org_apache_arrow_flatbuf_DictionaryBatch_ref_t org_apache_arrow_flatbuf_DictionaryBatch_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryBatch_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_DictionaryBatch_start(B)
        || org_apache_arrow_flatbuf_DictionaryBatch_id_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryBatch_data_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryBatch_isDelta_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_DictionaryBatch_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Message_version, org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Message)
__flatbuffers_build_union_field(2, flatbuffers_, org_apache_arrow_flatbuf_Message_header, org_apache_arrow_flatbuf_MessageHeader, org_apache_arrow_flatbuf_Message)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Message_header, org_apache_arrow_flatbuf_MessageHeader, Schema, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Message_header, org_apache_arrow_flatbuf_MessageHeader, DictionaryBatch, org_apache_arrow_flatbuf_DictionaryBatch)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Message_header, org_apache_arrow_flatbuf_MessageHeader, RecordBatch, org_apache_arrow_flatbuf_RecordBatch)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Message_header, org_apache_arrow_flatbuf_MessageHeader, Tensor, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Message_header, org_apache_arrow_flatbuf_MessageHeader, SparseTensor, org_apache_arrow_flatbuf_SparseTensor)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_Message_bodyLength, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_Message)
__flatbuffers_build_table_vector_field(4, flatbuffers_, org_apache_arrow_flatbuf_Message_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Message)

static inline org_apache_arrow_flatbuf_Message_ref_t org_apache_arrow_flatbuf_Message_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Message_formal_args)
{
    if (org_apache_arrow_flatbuf_Message_start(B)
        || org_apache_arrow_flatbuf_Message_bodyLength_add(B, v3)
        || org_apache_arrow_flatbuf_Message_header_add_value(B, v2)
        || org_apache_arrow_flatbuf_Message_custom_metadata_add(B, v4)
        || org_apache_arrow_flatbuf_Message_version_add(B, v0)
        || org_apache_arrow_flatbuf_Message_header_add_type(B, v2.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Message_end(B);
}

static org_apache_arrow_flatbuf_Message_ref_t org_apache_arrow_flatbuf_Message_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Message_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Message_start(B)
        || org_apache_arrow_flatbuf_Message_bodyLength_pick(B, t)
        || org_apache_arrow_flatbuf_Message_header_pick(B, t)
        || org_apache_arrow_flatbuf_Message_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Message_version_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Message_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* MESSAGE_BUILDER_H */
#ifndef MESSAGE_VERIFIER_H
#define MESSAGE_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef MESSAGE_READER_H
#include "Message_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#ifndef TENSOR_VERIFIER_H
#include "Tensor_verifier.h"
#endif
#ifndef SPARSETENSOR_VERIFIER_H
#include "SparseTensor_verifier.h"
#endif
#ifndef SCHEMA_VERIFIER_H
#include "Schema_verifier.h"
#endif
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_BodyCompression_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_RecordBatch_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_DictionaryBatch_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Message_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_MessageHeader_union_verifier(flatcc_union_verifier_descriptor_t *ud)
{
    switch (ud->type) {
    case 1: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Schema_verify_table); /* Schema */
    case 2: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_DictionaryBatch_verify_table); /* DictionaryBatch */
    case 3: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_RecordBatch_verify_table); /* RecordBatch */
    case 4: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Tensor_verify_table); /* Tensor */
    case 5: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_SparseTensor_verify_table); /* SparseTensor */
    default: return flatcc_verify_ok;
    }
}

static inline int org_apache_arrow_flatbuf_FieldNode_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FieldNode_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_FieldNode_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FieldNode_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_FieldNode_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, org_apache_arrow_flatbuf_FieldNode_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_FieldNode_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FieldNode_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_FieldNode_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_FieldNode_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_FieldNode_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, fid, 16, 8);
}

static inline int org_apache_arrow_flatbuf_FieldNode_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, fid, 16, 8);
}

static int org_apache_arrow_flatbuf_BodyCompression_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 1, 1) /* codec */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* method */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_BodyCompression_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BodyCompression_identifier, &org_apache_arrow_flatbuf_BodyCompression_verify_table);
}

static inline int org_apache_arrow_flatbuf_BodyCompression_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BodyCompression_identifier, &org_apache_arrow_flatbuf_BodyCompression_verify_table);
}

static inline int org_apache_arrow_flatbuf_BodyCompression_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BodyCompression_type_identifier, &org_apache_arrow_flatbuf_BodyCompression_verify_table);
}

static inline int org_apache_arrow_flatbuf_BodyCompression_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BodyCompression_type_identifier, &org_apache_arrow_flatbuf_BodyCompression_verify_table);
}

static inline int org_apache_arrow_flatbuf_BodyCompression_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BodyCompression_verify_table);
}

static inline int org_apache_arrow_flatbuf_BodyCompression_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BodyCompression_verify_table);
}

static inline int org_apache_arrow_flatbuf_BodyCompression_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BodyCompression_verify_table);
}

static inline int org_apache_arrow_flatbuf_BodyCompression_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BodyCompression_verify_table);
}

static int org_apache_arrow_flatbuf_RecordBatch_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* length */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 0, 16, 8, INT64_C(268435455)) /* nodes */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 2, 0, 16, 8, INT64_C(268435455)) /* buffers */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 3, 0, &org_apache_arrow_flatbuf_BodyCompression_verify_table) /* compression */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 4, 0, 8, 8, INT64_C(536870911)) /* variadicBufferCounts */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_RecordBatch_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RecordBatch_identifier, &org_apache_arrow_flatbuf_RecordBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_RecordBatch_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RecordBatch_identifier, &org_apache_arrow_flatbuf_RecordBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_RecordBatch_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RecordBatch_type_identifier, &org_apache_arrow_flatbuf_RecordBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_RecordBatch_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RecordBatch_type_identifier, &org_apache_arrow_flatbuf_RecordBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_RecordBatch_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RecordBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_RecordBatch_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RecordBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_RecordBatch_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RecordBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_RecordBatch_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RecordBatch_verify_table);
}

static int org_apache_arrow_flatbuf_DictionaryBatch_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* id */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 1, 0, &org_apache_arrow_flatbuf_RecordBatch_verify_table) /* data */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 1, 1) /* isDelta */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_DictionaryBatch_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryBatch_identifier, &org_apache_arrow_flatbuf_DictionaryBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryBatch_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryBatch_identifier, &org_apache_arrow_flatbuf_DictionaryBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryBatch_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryBatch_type_identifier, &org_apache_arrow_flatbuf_DictionaryBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryBatch_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryBatch_type_identifier, &org_apache_arrow_flatbuf_DictionaryBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryBatch_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryBatch_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryBatch_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryBatch_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryBatch_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryBatch_verify_table);
}

static int org_apache_arrow_flatbuf_Message_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* version */)) return ret;
    if ((ret = flatcc_verify_union_field(td, 2, 0, &org_apache_arrow_flatbuf_MessageHeader_union_verifier) /* header */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 8, 8) /* bodyLength */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 4, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Message_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Message_identifier, &org_apache_arrow_flatbuf_Message_verify_table);
}

static inline int org_apache_arrow_flatbuf_Message_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Message_identifier, &org_apache_arrow_flatbuf_Message_verify_table);
}

static inline int org_apache_arrow_flatbuf_Message_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Message_type_identifier, &org_apache_arrow_flatbuf_Message_verify_table);
}

static inline int org_apache_arrow_flatbuf_Message_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Message_type_identifier, &org_apache_arrow_flatbuf_Message_verify_table);
}

static inline int org_apache_arrow_flatbuf_Message_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Message_verify_table);
}

static inline int org_apache_arrow_flatbuf_Message_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Message_verify_table);
}

static inline int org_apache_arrow_flatbuf_Message_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Message_verify_table);
}

static inline int org_apache_arrow_flatbuf_Message_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Message_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* MESSAGE_VERIFIER_H */
#ifndef SCHEMA_READER_H
#define SCHEMA_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

typedef struct org_apache_arrow_flatbuf_Buffer org_apache_arrow_flatbuf_Buffer_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_struct_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_struct_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_vec_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_vec_t;

typedef const struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_table_t;
typedef struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__table_t;
typedef struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_table_t;
typedef struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_table_t;
typedef struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_table_t;
typedef struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_table_t;
typedef struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_table_t;
typedef struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_table_t;
typedef struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_table_t;
typedef struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_table_t;
typedef struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_table_t;
typedef struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_table_t;
typedef struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_table_t;
typedef struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_table_t;
typedef struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_table_t;
typedef struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_table_t;
typedef struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_table_t;
typedef struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_table_t;
typedef struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_table_t;
typedef struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_table_t;
typedef struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_table_t;
typedef struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_table_t;
typedef struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_table_t;
typedef struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_table_t;
typedef struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_table_t;
typedef struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_Null_file_identifier
#define org_apache_arrow_flatbuf_Null_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Null_file_identifier */
#ifndef org_apache_arrow_flatbuf_Null_identifier
#define org_apache_arrow_flatbuf_Null_identifier 0
#endif
#define org_apache_arrow_flatbuf_Null_type_hash ((flatbuffers_thash_t)0x7b36a4dd)
#define org_apache_arrow_flatbuf_Null_type_identifier "\xdd\xa4\x36\x7b"
#ifndef org_apache_arrow_flatbuf_Null_file_extension
#define org_apache_arrow_flatbuf_Null_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Struct__file_identifier
#define org_apache_arrow_flatbuf_Struct__file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Struct__file_identifier */
#ifndef org_apache_arrow_flatbuf_Struct__identifier
#define org_apache_arrow_flatbuf_Struct__identifier 0
#endif
#define org_apache_arrow_flatbuf_Struct__type_hash ((flatbuffers_thash_t)0x6310f362)
#define org_apache_arrow_flatbuf_Struct__type_identifier "\x62\xf3\x10\x63"
#ifndef org_apache_arrow_flatbuf_Struct__file_extension
#define org_apache_arrow_flatbuf_Struct__file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_List_file_identifier
#define org_apache_arrow_flatbuf_List_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_List_file_identifier */
#ifndef org_apache_arrow_flatbuf_List_identifier
#define org_apache_arrow_flatbuf_List_identifier 0
#endif
#define org_apache_arrow_flatbuf_List_type_hash ((flatbuffers_thash_t)0xd4ce5878)
#define org_apache_arrow_flatbuf_List_type_identifier "\x78\x58\xce\xd4"
#ifndef org_apache_arrow_flatbuf_List_file_extension
#define org_apache_arrow_flatbuf_List_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeList_file_identifier
#define org_apache_arrow_flatbuf_LargeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeList_identifier
#define org_apache_arrow_flatbuf_LargeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeList_type_hash ((flatbuffers_thash_t)0x38aa7e27)
#define org_apache_arrow_flatbuf_LargeList_type_identifier "\x27\x7e\xaa\x38"
#ifndef org_apache_arrow_flatbuf_LargeList_file_extension
#define org_apache_arrow_flatbuf_LargeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_ListView_file_identifier
#define org_apache_arrow_flatbuf_ListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_ListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_ListView_identifier
#define org_apache_arrow_flatbuf_ListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_ListView_type_hash ((flatbuffers_thash_t)0x23d37919)
#define org_apache_arrow_flatbuf_ListView_type_identifier "\x19\x79\xd3\x23"
#ifndef org_apache_arrow_flatbuf_ListView_file_extension
#define org_apache_arrow_flatbuf_ListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeListView_file_identifier
#define org_apache_arrow_flatbuf_LargeListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeListView_identifier
#define org_apache_arrow_flatbuf_LargeListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeListView_type_hash ((flatbuffers_thash_t)0x28efac02)
#define org_apache_arrow_flatbuf_LargeListView_type_identifier "\x02\xac\xef\x28"
#ifndef org_apache_arrow_flatbuf_LargeListView_file_extension
#define org_apache_arrow_flatbuf_LargeListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeList_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeList_type_hash ((flatbuffers_thash_t)0xcef245bb)
#define org_apache_arrow_flatbuf_FixedSizeList_type_identifier "\xbb\x45\xf2\xce"
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_extension
#define org_apache_arrow_flatbuf_FixedSizeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Map_file_identifier
#define org_apache_arrow_flatbuf_Map_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Map_file_identifier */
#ifndef org_apache_arrow_flatbuf_Map_identifier
#define org_apache_arrow_flatbuf_Map_identifier 0
#endif
#define org_apache_arrow_flatbuf_Map_type_hash ((flatbuffers_thash_t)0xcebef8e6)
#define org_apache_arrow_flatbuf_Map_type_identifier "\xe6\xf8\xbe\xce"
#ifndef org_apache_arrow_flatbuf_Map_file_extension
#define org_apache_arrow_flatbuf_Map_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Union_file_identifier
#define org_apache_arrow_flatbuf_Union_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Union_file_identifier */
#ifndef org_apache_arrow_flatbuf_Union_identifier
#define org_apache_arrow_flatbuf_Union_identifier 0
#endif
#define org_apache_arrow_flatbuf_Union_type_hash ((flatbuffers_thash_t)0x896bda57)
#define org_apache_arrow_flatbuf_Union_type_identifier "\x57\xda\x6b\x89"
#ifndef org_apache_arrow_flatbuf_Union_file_extension
#define org_apache_arrow_flatbuf_Union_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Int_file_identifier
#define org_apache_arrow_flatbuf_Int_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Int_file_identifier */
#ifndef org_apache_arrow_flatbuf_Int_identifier
#define org_apache_arrow_flatbuf_Int_identifier 0
#endif
#define org_apache_arrow_flatbuf_Int_type_hash ((flatbuffers_thash_t)0x30789001)
#define org_apache_arrow_flatbuf_Int_type_identifier "\x01\x90\x78\x30"
#ifndef org_apache_arrow_flatbuf_Int_file_extension
#define org_apache_arrow_flatbuf_Int_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FloatingPoint_file_identifier */
#ifndef org_apache_arrow_flatbuf_FloatingPoint_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_identifier 0
#endif
#define org_apache_arrow_flatbuf_FloatingPoint_type_hash ((flatbuffers_thash_t)0xf7d06268)
#define org_apache_arrow_flatbuf_FloatingPoint_type_identifier "\x68\x62\xd0\xf7"
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_extension
#define org_apache_arrow_flatbuf_FloatingPoint_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8_file_identifier
#define org_apache_arrow_flatbuf_Utf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8_identifier
#define org_apache_arrow_flatbuf_Utf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8_type_hash ((flatbuffers_thash_t)0x8fe60d37)
#define org_apache_arrow_flatbuf_Utf8_type_identifier "\x37\x0d\xe6\x8f"
#ifndef org_apache_arrow_flatbuf_Utf8_file_extension
#define org_apache_arrow_flatbuf_Utf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Binary_file_identifier
#define org_apache_arrow_flatbuf_Binary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Binary_file_identifier */
#ifndef org_apache_arrow_flatbuf_Binary_identifier
#define org_apache_arrow_flatbuf_Binary_identifier 0
#endif
#define org_apache_arrow_flatbuf_Binary_type_hash ((flatbuffers_thash_t)0x8e21a795)
#define org_apache_arrow_flatbuf_Binary_type_identifier "\x95\xa7\x21\x8e"
#ifndef org_apache_arrow_flatbuf_Binary_file_extension
#define org_apache_arrow_flatbuf_Binary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeUtf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeUtf8_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeUtf8_type_hash ((flatbuffers_thash_t)0x24ed2fb0)
#define org_apache_arrow_flatbuf_LargeUtf8_type_identifier "\xb0\x2f\xed\x24"
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_extension
#define org_apache_arrow_flatbuf_LargeUtf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_identifier
#define org_apache_arrow_flatbuf_LargeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeBinary_identifier
#define org_apache_arrow_flatbuf_LargeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeBinary_type_hash ((flatbuffers_thash_t)0xbd437872)
#define org_apache_arrow_flatbuf_LargeBinary_type_identifier "\x72\x78\x43\xbd"
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_extension
#define org_apache_arrow_flatbuf_LargeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8View_file_identifier
#define org_apache_arrow_flatbuf_Utf8View_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8View_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8View_identifier
#define org_apache_arrow_flatbuf_Utf8View_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8View_type_hash ((flatbuffers_thash_t)0xab7692)
#define org_apache_arrow_flatbuf_Utf8View_type_identifier "\x92\x76\xab\x00"
#ifndef org_apache_arrow_flatbuf_Utf8View_file_extension
#define org_apache_arrow_flatbuf_Utf8View_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_BinaryView_file_identifier
#define org_apache_arrow_flatbuf_BinaryView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_BinaryView_file_identifier */
#ifndef org_apache_arrow_flatbuf_BinaryView_identifier
#define org_apache_arrow_flatbuf_BinaryView_identifier 0
#endif
#define org_apache_arrow_flatbuf_BinaryView_type_hash ((flatbuffers_thash_t)0x18c52428)
#define org_apache_arrow_flatbuf_BinaryView_type_identifier "\x28\x24\xc5\x18"
#ifndef org_apache_arrow_flatbuf_BinaryView_file_extension
#define org_apache_arrow_flatbuf_BinaryView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_hash ((flatbuffers_thash_t)0x80d0f4ce)
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier "\xce\xf4\xd0\x80"
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_extension
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Bool_file_identifier
#define org_apache_arrow_flatbuf_Bool_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Bool_file_identifier */
#ifndef org_apache_arrow_flatbuf_Bool_identifier
#define org_apache_arrow_flatbuf_Bool_identifier 0
#endif
#define org_apache_arrow_flatbuf_Bool_type_hash ((flatbuffers_thash_t)0x96bf83f0)
#define org_apache_arrow_flatbuf_Bool_type_identifier "\xf0\x83\xbf\x96"
#ifndef org_apache_arrow_flatbuf_Bool_file_extension
#define org_apache_arrow_flatbuf_Bool_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_RunEndEncoded_file_identifier */
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_identifier 0
#endif
#define org_apache_arrow_flatbuf_RunEndEncoded_type_hash ((flatbuffers_thash_t)0x5a98bcc)
#define org_apache_arrow_flatbuf_RunEndEncoded_type_identifier "\xcc\x8b\xa9\x05"
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_extension
#define org_apache_arrow_flatbuf_RunEndEncoded_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Decimal_file_identifier
#define org_apache_arrow_flatbuf_Decimal_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Decimal_file_identifier */
#ifndef org_apache_arrow_flatbuf_Decimal_identifier
#define org_apache_arrow_flatbuf_Decimal_identifier 0
#endif
#define org_apache_arrow_flatbuf_Decimal_type_hash ((flatbuffers_thash_t)0x91d1beb7)
#define org_apache_arrow_flatbuf_Decimal_type_identifier "\xb7\xbe\xd1\x91"
#ifndef org_apache_arrow_flatbuf_Decimal_file_extension
#define org_apache_arrow_flatbuf_Decimal_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Date_file_identifier
#define org_apache_arrow_flatbuf_Date_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Date_file_identifier */
#ifndef org_apache_arrow_flatbuf_Date_identifier
#define org_apache_arrow_flatbuf_Date_identifier 0
#endif
#define org_apache_arrow_flatbuf_Date_type_hash ((flatbuffers_thash_t)0xe0ccf624)
#define org_apache_arrow_flatbuf_Date_type_identifier "\x24\xf6\xcc\xe0"
#ifndef org_apache_arrow_flatbuf_Date_file_extension
#define org_apache_arrow_flatbuf_Date_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Time_file_identifier
#define org_apache_arrow_flatbuf_Time_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Time_file_identifier */
#ifndef org_apache_arrow_flatbuf_Time_identifier
#define org_apache_arrow_flatbuf_Time_identifier 0
#endif
#define org_apache_arrow_flatbuf_Time_type_hash ((flatbuffers_thash_t)0x2442a489)
#define org_apache_arrow_flatbuf_Time_type_identifier "\x89\xa4\x42\x24"
#ifndef org_apache_arrow_flatbuf_Time_file_extension
#define org_apache_arrow_flatbuf_Time_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Timestamp_file_identifier
#define org_apache_arrow_flatbuf_Timestamp_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Timestamp_file_identifier */
#ifndef org_apache_arrow_flatbuf_Timestamp_identifier
#define org_apache_arrow_flatbuf_Timestamp_identifier 0
#endif
#define org_apache_arrow_flatbuf_Timestamp_type_hash ((flatbuffers_thash_t)0x1fddf080)
#define org_apache_arrow_flatbuf_Timestamp_type_identifier "\x80\xf0\xdd\x1f"
#ifndef org_apache_arrow_flatbuf_Timestamp_file_extension
#define org_apache_arrow_flatbuf_Timestamp_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Interval_file_identifier
#define org_apache_arrow_flatbuf_Interval_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Interval_file_identifier */
#ifndef org_apache_arrow_flatbuf_Interval_identifier
#define org_apache_arrow_flatbuf_Interval_identifier 0
#endif
#define org_apache_arrow_flatbuf_Interval_type_hash ((flatbuffers_thash_t)0x1e2d6809)
#define org_apache_arrow_flatbuf_Interval_type_identifier "\x09\x68\x2d\x1e"
#ifndef org_apache_arrow_flatbuf_Interval_file_extension
#define org_apache_arrow_flatbuf_Interval_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Duration_file_identifier
#define org_apache_arrow_flatbuf_Duration_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Duration_file_identifier */
#ifndef org_apache_arrow_flatbuf_Duration_identifier
#define org_apache_arrow_flatbuf_Duration_identifier 0
#endif
#define org_apache_arrow_flatbuf_Duration_type_hash ((flatbuffers_thash_t)0x1ecea6b0)
#define org_apache_arrow_flatbuf_Duration_type_identifier "\xb0\xa6\xce\x1e"
#ifndef org_apache_arrow_flatbuf_Duration_file_extension
#define org_apache_arrow_flatbuf_Duration_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_KeyValue_file_identifier
#define org_apache_arrow_flatbuf_KeyValue_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_KeyValue_file_identifier */
#ifndef org_apache_arrow_flatbuf_KeyValue_identifier
#define org_apache_arrow_flatbuf_KeyValue_identifier 0
#endif
#define org_apache_arrow_flatbuf_KeyValue_type_hash ((flatbuffers_thash_t)0x3b264744)
#define org_apache_arrow_flatbuf_KeyValue_type_identifier "\x44\x47\x26\x3b"
#ifndef org_apache_arrow_flatbuf_KeyValue_file_extension
#define org_apache_arrow_flatbuf_KeyValue_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier */
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_identifier 0
#endif
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_hash ((flatbuffers_thash_t)0x8c703261)
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier "\x61\x32\x70\x8c"
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_extension
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Field_file_identifier
#define org_apache_arrow_flatbuf_Field_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Field_file_identifier */
#ifndef org_apache_arrow_flatbuf_Field_identifier
#define org_apache_arrow_flatbuf_Field_identifier 0
#endif
#define org_apache_arrow_flatbuf_Field_type_hash ((flatbuffers_thash_t)0xd981525c)
#define org_apache_arrow_flatbuf_Field_type_identifier "\x5c\x52\x81\xd9"
#ifndef org_apache_arrow_flatbuf_Field_file_extension
#define org_apache_arrow_flatbuf_Field_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Buffer_file_identifier
#define org_apache_arrow_flatbuf_Buffer_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Buffer_file_identifier */
#ifndef org_apache_arrow_flatbuf_Buffer_identifier
#define org_apache_arrow_flatbuf_Buffer_identifier 0
#endif
#define org_apache_arrow_flatbuf_Buffer_type_hash ((flatbuffers_thash_t)0x519d7fea)
#define org_apache_arrow_flatbuf_Buffer_type_identifier "\xea\x7f\x9d\x51"
#ifndef org_apache_arrow_flatbuf_Buffer_file_extension
#define org_apache_arrow_flatbuf_Buffer_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Schema_file_identifier
#define org_apache_arrow_flatbuf_Schema_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Schema_file_identifier */
#ifndef org_apache_arrow_flatbuf_Schema_identifier
#define org_apache_arrow_flatbuf_Schema_identifier 0
#endif
#define org_apache_arrow_flatbuf_Schema_type_hash ((flatbuffers_thash_t)0x406570b)
#define org_apache_arrow_flatbuf_Schema_type_identifier "\x0b\x57\x06\x04"
#ifndef org_apache_arrow_flatbuf_Schema_file_extension
#define org_apache_arrow_flatbuf_Schema_file_extension "bin"
#endif

typedef int16_t org_apache_arrow_flatbuf_MetadataVersion_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t, 16)
/**  0.1.0 (October 2016). */
#define org_apache_arrow_flatbuf_MetadataVersion_V1 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_MetadataVersion_V2 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_MetadataVersion_V3 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_MetadataVersion_V4 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(3))
#define org_apache_arrow_flatbuf_MetadataVersion_V5 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(4))

static inline const char *org_apache_arrow_flatbuf_MetadataVersion_name(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return "V1";
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return "V2";
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return "V3";
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return "V4";
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return "V5";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_MetadataVersion_is_known_value(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return 1;
    default: return 0;
    }
}

/**  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 intended to represent higher level
 *       features, additional details may be 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. */
typedef int64_t org_apache_arrow_flatbuf_Feature_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, 64)
/**  Needed to make flatbuffers happy. */
#define org_apache_arrow_flatbuf_Feature_UNUSED ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(0))
#define org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(1))
#define org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(2))

static inline const char *org_apache_arrow_flatbuf_Feature_name(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return "UNUSED";
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return "DICTIONARY_REPLACEMENT";
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return "COMPRESSED_BODY";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Feature_is_known_value(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return 1;
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return 1;
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_UnionMode_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 16)
#define org_apache_arrow_flatbuf_UnionMode_Sparse ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_UnionMode_Dense ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_UnionMode_name(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return "Sparse";
    case org_apache_arrow_flatbuf_UnionMode_Dense: return "Dense";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_UnionMode_is_known_value(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return 1;
    case org_apache_arrow_flatbuf_UnionMode_Dense: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_Precision_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 16)
#define org_apache_arrow_flatbuf_Precision_HALF ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Precision_SINGLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_Precision_DOUBLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_Precision_name(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return "HALF";
    case org_apache_arrow_flatbuf_Precision_SINGLE: return "SINGLE";
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return "DOUBLE";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Precision_is_known_value(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return 1;
    case org_apache_arrow_flatbuf_Precision_SINGLE: return 1;
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_DateUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_DateUnit_DAY ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_DateUnit_MILLISECOND ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_DateUnit_name(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return "DAY";
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return "MILLISECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DateUnit_is_known_value(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return 1;
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_TimeUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_TimeUnit_SECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_TimeUnit_MILLISECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_TimeUnit_MICROSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_TimeUnit_NANOSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(3))

static inline const char *org_apache_arrow_flatbuf_TimeUnit_name(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return "SECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return "MILLISECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return "MICROSECOND";
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return "NANOSECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_TimeUnit_is_known_value(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_IntervalUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_IntervalUnit_name(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return "YEAR_MONTH";
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return "DAY_TIME";
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return "MONTH_DAY_NANO";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_IntervalUnit_is_known_value(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  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 */
typedef int16_t org_apache_arrow_flatbuf_DictionaryKind_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 16)
#define org_apache_arrow_flatbuf_DictionaryKind_DenseArray ((org_apache_arrow_flatbuf_DictionaryKind_enum_t)INT16_C(0))

static inline const char *org_apache_arrow_flatbuf_DictionaryKind_name(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return "DenseArray";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DictionaryKind_is_known_value(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  Endianness of the platform producing the data */
typedef int16_t org_apache_arrow_flatbuf_Endianness_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 16)
#define org_apache_arrow_flatbuf_Endianness_Little ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Endianness_Big ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_Endianness_name(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return "Little";
    case org_apache_arrow_flatbuf_Endianness_Big: return "Big";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Endianness_is_known_value(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return 1;
    case org_apache_arrow_flatbuf_Endianness_Big: return 1;
    default: return 0;
    }
}


/**  ----------------------------------------------------------------------
 *  A Buffer represents a single contiguous memory segment */
struct org_apache_arrow_flatbuf_Buffer {
    /**  The relative offset into the shared memory page where the bytes for this
     *  buffer starts */
    alignas(8) int64_t 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. */
    alignas(8) int64_t length;
};
static_assert(sizeof(org_apache_arrow_flatbuf_Buffer_t) == 16, "struct size mismatch");

static inline const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__const_ptr_add(const org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__ptr_add(org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_struct_t org_apache_arrow_flatbuf_Buffer_vec_at(org_apache_arrow_flatbuf_Buffer_vec_t vec, size_t i)
__flatbuffers_struct_vec_at(vec, i)
static inline size_t org_apache_arrow_flatbuf_Buffer__size(void) { return 16; }
static inline size_t org_apache_arrow_flatbuf_Buffer_vec_len(org_apache_arrow_flatbuf_Buffer_vec_t vec)
__flatbuffers_vec_len(vec)
__flatbuffers_struct_as_root(org_apache_arrow_flatbuf_Buffer)

__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, offset, flatbuffers_int64, int64_t)
__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, length, flatbuffers_int64, int64_t)


/**  These are stored in the flatbuffer in the Type union below */
struct org_apache_arrow_flatbuf_Null_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Null_vec_len(org_apache_arrow_flatbuf_Null_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Null_table_t org_apache_arrow_flatbuf_Null_vec_at(org_apache_arrow_flatbuf_Null_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Null_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Null)


/**  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 org_apache_arrow_flatbuf_Struct__table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Struct__vec_len(org_apache_arrow_flatbuf_Struct__vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Struct__table_t org_apache_arrow_flatbuf_Struct__vec_at(org_apache_arrow_flatbuf_Struct__vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Struct__table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Struct_)


struct org_apache_arrow_flatbuf_List_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_List_vec_len(org_apache_arrow_flatbuf_List_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_List_table_t org_apache_arrow_flatbuf_List_vec_at(org_apache_arrow_flatbuf_List_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_List_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_List)


/**  Same as List, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeList_vec_len(org_apache_arrow_flatbuf_LargeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeList_table_t org_apache_arrow_flatbuf_LargeList_vec_at(org_apache_arrow_flatbuf_LargeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeList)


/**  Represents the same logical types that List can, but contains offsets and
 *  sizes allowing for writes in any order and sharing of child values among
 *  list values. */
struct org_apache_arrow_flatbuf_ListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_ListView_vec_len(org_apache_arrow_flatbuf_ListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_ListView_table_t org_apache_arrow_flatbuf_ListView_vec_at(org_apache_arrow_flatbuf_ListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_ListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_ListView)


/**  Same as ListView, but with 64-bit offsets and sizes, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeListView_vec_len(org_apache_arrow_flatbuf_LargeListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeListView_table_t org_apache_arrow_flatbuf_LargeListView_vec_at(org_apache_arrow_flatbuf_LargeListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeListView)


struct org_apache_arrow_flatbuf_FixedSizeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeList_vec_len(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeList_table_t org_apache_arrow_flatbuf_FixedSizeList_vec_at(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeList)

/**  Number of list items per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeList, listSize, flatbuffers_int32, int32_t, INT32_C(0))

/**  A Map is a logical nested type that is represented as
 *
 *  List<entries: Struct<key: K, value: V>>
 *
 *  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: the key type and the value type. The names of the
 *  child fields may be respectively "entries", "key", and "value", but this is
 *  not enforced.
 *
 *  Map
 *  ```text
 *    - 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 org_apache_arrow_flatbuf_Map_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Map_vec_len(org_apache_arrow_flatbuf_Map_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Map_table_t org_apache_arrow_flatbuf_Map_vec_at(org_apache_arrow_flatbuf_Map_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Map_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Map)

/**  Set to true if the keys within each value are sorted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Map, keysSorted, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

/**  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 org_apache_arrow_flatbuf_Union_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Union_vec_len(org_apache_arrow_flatbuf_Union_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Union_table_t org_apache_arrow_flatbuf_Union_vec_at(org_apache_arrow_flatbuf_Union_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Union_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Union)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Union, mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Union, typeIds, flatbuffers_int32_vec_t, 0)

struct org_apache_arrow_flatbuf_Int_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Int_vec_len(org_apache_arrow_flatbuf_Int_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Int_table_t org_apache_arrow_flatbuf_Int_vec_at(org_apache_arrow_flatbuf_Int_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Int_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Int)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Int, bitWidth, flatbuffers_int32, int32_t, INT32_C(0))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Int, is_signed, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

struct org_apache_arrow_flatbuf_FloatingPoint_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FloatingPoint_vec_len(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FloatingPoint_table_t org_apache_arrow_flatbuf_FloatingPoint_vec_at(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FloatingPoint_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FloatingPoint)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FloatingPoint, precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, INT16_C(0))

/**  Unicode with UTF-8 encoding */
struct org_apache_arrow_flatbuf_Utf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8_vec_len(org_apache_arrow_flatbuf_Utf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8_table_t org_apache_arrow_flatbuf_Utf8_vec_at(org_apache_arrow_flatbuf_Utf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8)


/**  Opaque binary data */
struct org_apache_arrow_flatbuf_Binary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Binary_vec_len(org_apache_arrow_flatbuf_Binary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Binary_table_t org_apache_arrow_flatbuf_Binary_vec_at(org_apache_arrow_flatbuf_Binary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Binary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Binary)


/**  Same as Utf8, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeUtf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeUtf8_vec_len(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeUtf8_table_t org_apache_arrow_flatbuf_LargeUtf8_vec_at(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeUtf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeUtf8)


/**  Same as Binary, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeBinary_vec_len(org_apache_arrow_flatbuf_LargeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeBinary_table_t org_apache_arrow_flatbuf_LargeBinary_vec_at(org_apache_arrow_flatbuf_LargeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeBinary)


/**  Logically the same as Utf8, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_Utf8View_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8View_vec_len(org_apache_arrow_flatbuf_Utf8View_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8View_table_t org_apache_arrow_flatbuf_Utf8View_vec_at(org_apache_arrow_flatbuf_Utf8View_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8View_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8View)


/**  Logically the same as Binary, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_BinaryView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_BinaryView_vec_len(org_apache_arrow_flatbuf_BinaryView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_BinaryView_table_t org_apache_arrow_flatbuf_BinaryView_vec_at(org_apache_arrow_flatbuf_BinaryView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_BinaryView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_BinaryView)


struct org_apache_arrow_flatbuf_FixedSizeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_len(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeBinary_table_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeBinary)

/**  Number of bytes per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeBinary, byteWidth, flatbuffers_int32, int32_t, INT32_C(0))

struct org_apache_arrow_flatbuf_Bool_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Bool_vec_len(org_apache_arrow_flatbuf_Bool_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Bool_table_t org_apache_arrow_flatbuf_Bool_vec_at(org_apache_arrow_flatbuf_Bool_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Bool_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Bool)


/**  Contains two child arrays, run_ends and values.
 *  The run_ends child array must be a 16/32/64-bit integer array
 *  which encodes the indices at which the run with the value in
 *  each corresponding index in the values child array ends.
 *  Like list/struct types, the value array can be of any type. */
struct org_apache_arrow_flatbuf_RunEndEncoded_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_RunEndEncoded_vec_len(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_RunEndEncoded_table_t org_apache_arrow_flatbuf_RunEndEncoded_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_RunEndEncoded)


/**  Exact decimal value represented as an integer value in two's
 *  complement. Currently 32-bit (4-byte), 64-bit (8-byte),
 *  128-bit (16-byte) and 256-bit (32-byte) integers are used.
 *  The representation uses the endianness indicated in the Schema. */
struct org_apache_arrow_flatbuf_Decimal_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Decimal_vec_len(org_apache_arrow_flatbuf_Decimal_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Decimal_table_t org_apache_arrow_flatbuf_Decimal_vec_at(org_apache_arrow_flatbuf_Decimal_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Decimal_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Decimal)

/**  Total number of decimal digits */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Decimal, precision, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of digits after the decimal point "." */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Decimal, scale, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of bits per value. The accepted widths are 32, 64, 128 and 256.
 *  We use bitWidth for consistency with Int::bitWidth. */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_Decimal, bitWidth, flatbuffers_int32, int32_t, INT32_C(128))

/**  Date is either a 32-bit or 64-bit signed integer type representing an
 *  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 org_apache_arrow_flatbuf_Date_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Date_vec_len(org_apache_arrow_flatbuf_Date_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Date_table_t org_apache_arrow_flatbuf_Date_vec_at(org_apache_arrow_flatbuf_Date_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Date_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Date)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Date, unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, INT16_C(1))

/**  Time is either a 32-bit or 64-bit signed integer type representing an
 *  elapsed time since midnight, stored in either of four units: seconds,
 *  milliseconds, microseconds or nanoseconds.
 *
 *  The integer `bitWidth` depends on the `unit` and must be one of the following:
 *  * SECOND and MILLISECOND: 32 bits
 *  * MICROSECOND and NANOSECOND: 64 bits
 *
 *  The allowed values are between 0 (inclusive) and 86400 (=24*60*60) seconds
 *  (exclusive), adjusted for the time unit (for example, up to 86400000
 *  exclusive for the MILLISECOND unit).
 *  This definition doesn't allow for leap seconds. Time values from
 *  measurements with leap seconds will need to be corrected when ingesting
 *  into Arrow (for example by replacing the value 86400 with 86399). */
struct org_apache_arrow_flatbuf_Time_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Time_vec_len(org_apache_arrow_flatbuf_Time_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Time_table_t org_apache_arrow_flatbuf_Time_vec_at(org_apache_arrow_flatbuf_Time_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Time_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Time)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Time, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Time, bitWidth, flatbuffers_int32, int32_t, INT32_C(32))

/**  Timestamp is a 64-bit signed integer representing an elapsed time since a
 *  fixed epoch, stored in either of four units: seconds, milliseconds,
 *  microseconds or nanoseconds, and is optionally annotated with a timezone.
 *
 *  Timestamp values do not include any leap seconds (in other words, all
 *  days are considered 86400 seconds long).
 *
 *  Timestamps with a non-empty timezone
 *  ------------------------------------
 *
 *  If a Timestamp column has a non-empty timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in the *UTC* timezone
 *  (the Unix epoch), regardless of the Timestamp's own timezone.
 *
 *  Therefore, timestamp values with a non-empty timezone correspond to
 *  physical points in time together with some additional information about
 *  how the data was obtained and/or how to display it (the timezone).
 *
 *    For example, the timestamp value 0 with the timezone string "Europe/Paris"
 *    corresponds to "January 1st 1970, 00h00" in the UTC timezone, but the
 *    application may prefer to display it as "January 1st 1970, 01h00" in
 *    the Europe/Paris timezone (which is the same physical point in time).
 *
 *  One consequence is that timestamp values with a non-empty timezone
 *  can be compared and ordered directly, since they all share the same
 *  well-known point of reference (the Unix epoch).
 *
 *  Timestamps with an unset / empty timezone
 *  -----------------------------------------
 *
 *  If a Timestamp column has no timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in an *unknown* timezone.
 *
 *  Therefore, timestamp values without a timezone cannot be meaningfully
 *  interpreted as physical points in time, but only as calendar / clock
 *  indications ("wall clock time") in an unspecified timezone.
 *
 *    For example, the timestamp value 0 with an empty timezone string
 *    corresponds to "January 1st 1970, 00h00" in an unknown timezone: there
 *    is not enough information to interpret it as a well-defined physical
 *    point in time.
 *
 *  One consequence is that timestamp values without a timezone cannot
 *  be reliably compared or ordered, since they may have different points of
 *  reference.  In particular, it is *not* possible to interpret an unset
 *  or empty timezone as the same as "UTC".
 *
 *  Conversion between timezones
 *  ----------------------------
 *
 *  If a Timestamp column has a non-empty timezone, changing the timezone
 *  to a different non-empty value is a metadata-only operation:
 *  the timestamp values need not change as their point of reference remains
 *  the same (the Unix epoch).
 *
 *  However, if a Timestamp column has no timezone value, changing it to a
 *  non-empty value requires to think about the desired semantics.
 *  One possibility is to assume that the original timestamp values are
 *  relative to the epoch of the timezone being set; timestamp values should
 *  then adjusted to the Unix epoch (for example, changing the timezone from
 *  empty to "Europe/Paris" would require converting the timestamp values
 *  from "Europe/Paris" to "UTC", which seems counter-intuitive but is
 *  nevertheless correct).
 *
 *  Guidelines for encoding data from external libraries
 *  ----------------------------------------------------
 *
 *  Date & time libraries often have multiple different data types for temporal
 *  data. In order to ease interoperability between different implementations the
 *  Arrow project has some recommendations for encoding these types into a Timestamp
 *  column.
 *
 *  An "instant" represents a physical point in time that has no relevant timezone
 *  (for example, astronomical data). To encode an instant, use a Timestamp with
 *  the timezone string set to "UTC", and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *  A "zoned date-time" represents a physical point in time annotated with an
 *  informative timezone (for example, the timezone in which the data was
 *  recorded).  To encode a zoned date-time, use a Timestamp with the timezone
 *  string set to the name of the timezone, and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *   (There is some ambiguity between an instant and a zoned date-time with the
 *    UTC timezone.  Both of these are stored the same in Arrow.  Typically,
 *    this distinction does not matter.  If it does, then an application should
 *    use custom metadata or an extension type to distinguish between the two cases.)
 *
 *  An "offset date-time" represents a physical point in time combined with an
 *  explicit offset from UTC.  To encode an offset date-time, use a Timestamp
 *  with the timezone string set to the numeric timezone offset string
 *  (e.g. "+03:00"), and make sure the Timestamp values are relative to
 *  the UTC epoch (January 1st 1970, midnight).
 *
 *  A "naive date-time" (also called "local date-time" in some libraries)
 *  represents a wall clock time combined with a calendar date, but with
 *  no indication of how to map this information to a physical point in time.
 *  Naive date-times must be handled with care because of this missing
 *  information, and also because daylight saving time (DST) may make
 *  some values ambiguous or nonexistent. A naive date-time may be
 *  stored as a struct with Date and Time fields. However, it may also be
 *  encoded into a Timestamp column with an empty timezone. The timestamp
 *  values should be computed "as if" the timezone of the date-time values
 *  was UTC; for example, the naive date-time "January 1st 1970, 00h00" would
 *  be encoded as timestamp value 0. */
struct org_apache_arrow_flatbuf_Timestamp_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Timestamp_vec_len(org_apache_arrow_flatbuf_Timestamp_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Timestamp_table_t org_apache_arrow_flatbuf_Timestamp_vec_at(org_apache_arrow_flatbuf_Timestamp_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Timestamp_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Timestamp)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Timestamp, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(0))
/**  The timezone is an optional string indicating the name of a timezone,
 *  one of:
 *
 *  * As used in the Olson timezone database (the "tz database" or
 *    "tzdata"), such as "America/New_York".
 *  * An absolute timezone offset of the form "+XX:XX" or "-XX:XX",
 *    such as "+07:30".
 *
 *  Whether a timezone string is present indicates different semantics about
 *  the data (see above). */
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_Timestamp, timezone, 0)

struct org_apache_arrow_flatbuf_Interval_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Interval_vec_len(org_apache_arrow_flatbuf_Interval_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Interval_table_t org_apache_arrow_flatbuf_Interval_vec_at(org_apache_arrow_flatbuf_Interval_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Interval_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Interval)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Interval, unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, INT16_C(0))

struct org_apache_arrow_flatbuf_Duration_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Duration_vec_len(org_apache_arrow_flatbuf_Duration_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Duration_table_t org_apache_arrow_flatbuf_Duration_vec_at(org_apache_arrow_flatbuf_Duration_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Duration_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Duration)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Duration, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
/**  ----------------------------------------------------------------------
 *  Top-level Type value, enabling extensible type-specific metadata. We can
 *  add new logical types to Type without breaking backwards compatibility */
typedef uint8_t org_apache_arrow_flatbuf_Type_union_type_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Type_union_type_t, 8)
__flatbuffers_define_union(flatbuffers_, org_apache_arrow_flatbuf_Type)
/**  ----------------------------------------------------------------------
 *  user defined key value pairs to add custom metadata to arrow
 *  key namespacing is the responsibility of the user */
#define org_apache_arrow_flatbuf_Type_NONE ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(0))
#define org_apache_arrow_flatbuf_Type_Null ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(1))
#define org_apache_arrow_flatbuf_Type_Int ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(2))
#define org_apache_arrow_flatbuf_Type_FloatingPoint ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(3))
#define org_apache_arrow_flatbuf_Type_Binary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(4))
#define org_apache_arrow_flatbuf_Type_Utf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(5))
#define org_apache_arrow_flatbuf_Type_Bool ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(6))
#define org_apache_arrow_flatbuf_Type_Decimal ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(7))
#define org_apache_arrow_flatbuf_Type_Date ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(8))
#define org_apache_arrow_flatbuf_Type_Time ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(9))
#define org_apache_arrow_flatbuf_Type_Timestamp ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(10))
#define org_apache_arrow_flatbuf_Type_Interval ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(11))
#define org_apache_arrow_flatbuf_Type_List ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(12))
#define org_apache_arrow_flatbuf_Type_Struct_ ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(13))
#define org_apache_arrow_flatbuf_Type_Union ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(14))
#define org_apache_arrow_flatbuf_Type_FixedSizeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(15))
#define org_apache_arrow_flatbuf_Type_FixedSizeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(16))
#define org_apache_arrow_flatbuf_Type_Map ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(17))
#define org_apache_arrow_flatbuf_Type_Duration ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(18))
#define org_apache_arrow_flatbuf_Type_LargeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(19))
#define org_apache_arrow_flatbuf_Type_LargeUtf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(20))
#define org_apache_arrow_flatbuf_Type_LargeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(21))
#define org_apache_arrow_flatbuf_Type_RunEndEncoded ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(22))
#define org_apache_arrow_flatbuf_Type_BinaryView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(23))
#define org_apache_arrow_flatbuf_Type_Utf8View ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(24))
#define org_apache_arrow_flatbuf_Type_ListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(25))
#define org_apache_arrow_flatbuf_Type_LargeListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(26))

static inline const char *org_apache_arrow_flatbuf_Type_type_name(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return "NONE";
    case org_apache_arrow_flatbuf_Type_Null: return "Null";
    case org_apache_arrow_flatbuf_Type_Int: return "Int";
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return "FloatingPoint";
    case org_apache_arrow_flatbuf_Type_Binary: return "Binary";
    case org_apache_arrow_flatbuf_Type_Utf8: return "Utf8";
    case org_apache_arrow_flatbuf_Type_Bool: return "Bool";
    case org_apache_arrow_flatbuf_Type_Decimal: return "Decimal";
    case org_apache_arrow_flatbuf_Type_Date: return "Date";
    case org_apache_arrow_flatbuf_Type_Time: return "Time";
    case org_apache_arrow_flatbuf_Type_Timestamp: return "Timestamp";
    case org_apache_arrow_flatbuf_Type_Interval: return "Interval";
    case org_apache_arrow_flatbuf_Type_List: return "List";
    case org_apache_arrow_flatbuf_Type_Struct_: return "Struct_";
    case org_apache_arrow_flatbuf_Type_Union: return "Union";
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return "FixedSizeBinary";
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return "FixedSizeList";
    case org_apache_arrow_flatbuf_Type_Map: return "Map";
    case org_apache_arrow_flatbuf_Type_Duration: return "Duration";
    case org_apache_arrow_flatbuf_Type_LargeBinary: return "LargeBinary";
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return "LargeUtf8";
    case org_apache_arrow_flatbuf_Type_LargeList: return "LargeList";
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return "RunEndEncoded";
    case org_apache_arrow_flatbuf_Type_BinaryView: return "BinaryView";
    case org_apache_arrow_flatbuf_Type_Utf8View: return "Utf8View";
    case org_apache_arrow_flatbuf_Type_ListView: return "ListView";
    case org_apache_arrow_flatbuf_Type_LargeListView: return "LargeListView";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Type_is_known_type(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return 1;
    case org_apache_arrow_flatbuf_Type_Null: return 1;
    case org_apache_arrow_flatbuf_Type_Int: return 1;
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return 1;
    case org_apache_arrow_flatbuf_Type_Binary: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8: return 1;
    case org_apache_arrow_flatbuf_Type_Bool: return 1;
    case org_apache_arrow_flatbuf_Type_Decimal: return 1;
    case org_apache_arrow_flatbuf_Type_Date: return 1;
    case org_apache_arrow_flatbuf_Type_Time: return 1;
    case org_apache_arrow_flatbuf_Type_Timestamp: return 1;
    case org_apache_arrow_flatbuf_Type_Interval: return 1;
    case org_apache_arrow_flatbuf_Type_List: return 1;
    case org_apache_arrow_flatbuf_Type_Struct_: return 1;
    case org_apache_arrow_flatbuf_Type_Union: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return 1;
    case org_apache_arrow_flatbuf_Type_Map: return 1;
    case org_apache_arrow_flatbuf_Type_Duration: return 1;
    case org_apache_arrow_flatbuf_Type_LargeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return 1;
    case org_apache_arrow_flatbuf_Type_LargeList: return 1;
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return 1;
    case org_apache_arrow_flatbuf_Type_BinaryView: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8View: return 1;
    case org_apache_arrow_flatbuf_Type_ListView: return 1;
    case org_apache_arrow_flatbuf_Type_LargeListView: return 1;
    default: return 0;
    }
}


struct org_apache_arrow_flatbuf_KeyValue_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_KeyValue_vec_len(org_apache_arrow_flatbuf_KeyValue_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_KeyValue_table_t org_apache_arrow_flatbuf_KeyValue_vec_at(org_apache_arrow_flatbuf_KeyValue_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_KeyValue_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_KeyValue)

__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_KeyValue, key, 0)
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_KeyValue, value, 0)

struct org_apache_arrow_flatbuf_DictionaryEncoding_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_len(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_DictionaryEncoding_table_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_DictionaryEncoding)

/**  The known dictionary id in the application where this data is used. In
 *  the file or streaming formats, the dictionary ids are found in the
 *  DictionaryBatch messages */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_DictionaryEncoding, id, flatbuffers_int64, int64_t, INT64_C(0))
/**  The dictionary indices are constrained to be non-negative integers. If
 *  this field is null, the indices must be signed int32. To maximize
 *  cross-language compatibility and performance, implementations are
 *  recommended to prefer signed integer types over unsigned integer types
 *  and to avoid uint64 indices unless they are required by an application. */
__flatbuffers_define_table_field(1, org_apache_arrow_flatbuf_DictionaryEncoding, indexType, org_apache_arrow_flatbuf_Int_table_t, 0)
/**  By default, dictionaries are not ordered, or the order does not have
 *  semantic meaning. In some statistical applications, dictionary-encoding
 *  is used to represent ordered categorical data, and we provide a way to
 *  preserve that metadata here */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_DictionaryEncoding, isOrdered, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_DictionaryEncoding, dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, INT16_C(0))

/**  ----------------------------------------------------------------------
 *  A field represents a named column in a record / row batch or child of a
 *  nested type. */
struct org_apache_arrow_flatbuf_Field_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Field_vec_len(org_apache_arrow_flatbuf_Field_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Field_table_t org_apache_arrow_flatbuf_Field_vec_at(org_apache_arrow_flatbuf_Field_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Field_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Field)

/**  Name is not required (e.g., in a List) */
__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_Field, name, 0)
/**  Whether or not this field can contain nulls. Should be true in general. */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Field, nullable, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
/**  This is the type of the decoded value if the field is dictionary encoded. */
__flatbuffers_define_union_field(flatbuffers_, 3, org_apache_arrow_flatbuf_Field, type, org_apache_arrow_flatbuf_Type, 0)
/**  Present only if the field is dictionary encoded. */
__flatbuffers_define_table_field(4, org_apache_arrow_flatbuf_Field, dictionary, org_apache_arrow_flatbuf_DictionaryEncoding_table_t, 0)
/**  children apply only to nested data types like Struct, List and Union. For
 *  primitive types children will have length 0. */
__flatbuffers_define_vector_field(5, org_apache_arrow_flatbuf_Field, children, org_apache_arrow_flatbuf_Field_vec_t, 0)
/**  User-defined metadata */
__flatbuffers_define_vector_field(6, org_apache_arrow_flatbuf_Field, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)

/**  ----------------------------------------------------------------------
 *  A Schema describes the columns in a row batch */
struct org_apache_arrow_flatbuf_Schema_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Schema_vec_len(org_apache_arrow_flatbuf_Schema_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Schema_table_t org_apache_arrow_flatbuf_Schema_vec_at(org_apache_arrow_flatbuf_Schema_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Schema_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Schema)

/**  endianness of the buffer
 *  it is Little Endian by default
 *  if endianness doesn't match the underlying system then the vectors need to be converted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Schema, endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Schema, fields, org_apache_arrow_flatbuf_Field_vec_t, 0)
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_Schema, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)
/**  Features used in the stream/file. */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_Schema, features, org_apache_arrow_flatbuf_Feature_vec_t, 0)


#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_READER_H */
#ifndef SCHEMA_BUILDER_H
#define SCHEMA_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

#define __org_apache_arrow_flatbuf_MetadataVersion_formal_args , org_apache_arrow_flatbuf_MetadataVersion_enum_t v0
#define __org_apache_arrow_flatbuf_MetadataVersion_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t)
#define __org_apache_arrow_flatbuf_Feature_formal_args , org_apache_arrow_flatbuf_Feature_enum_t v0
#define __org_apache_arrow_flatbuf_Feature_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t)
#define __org_apache_arrow_flatbuf_UnionMode_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0
#define __org_apache_arrow_flatbuf_UnionMode_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t)
#define __org_apache_arrow_flatbuf_Precision_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_Precision_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t)
#define __org_apache_arrow_flatbuf_DateUnit_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_DateUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t)
#define __org_apache_arrow_flatbuf_TimeUnit_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_TimeUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t)
#define __org_apache_arrow_flatbuf_IntervalUnit_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_IntervalUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t)
#define __org_apache_arrow_flatbuf_DictionaryKind_formal_args , org_apache_arrow_flatbuf_DictionaryKind_enum_t v0
#define __org_apache_arrow_flatbuf_DictionaryKind_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t)
#define __org_apache_arrow_flatbuf_Endianness_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0
#define __org_apache_arrow_flatbuf_Endianness_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t)

#define __org_apache_arrow_flatbuf_Buffer_formal_args , int64_t v0, int64_t v1
#define __org_apache_arrow_flatbuf_Buffer_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ p->offset = v0; p->length = v1;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ p->offset = p2->offset; p->length = p2->length;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_to_pe(&p->offset, v0); flatbuffers_int64_assign_to_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_to_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_to_pe(&p->length, &p2->length);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_from_pe(&p->offset, v0); flatbuffers_int64_assign_from_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_from_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_from_pe(&p->length, &p2->length);
  return p; }
__flatbuffers_build_struct(flatbuffers_, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_Buffer_file_identifier, org_apache_arrow_flatbuf_Buffer_type_identifier)
__flatbuffers_define_fixed_array_primitives(flatbuffers_, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t)

typedef flatbuffers_union_ref_t org_apache_arrow_flatbuf_Type_union_ref_t;
typedef flatbuffers_union_vec_ref_t org_apache_arrow_flatbuf_Type_union_vec_ref_t;
static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t t);

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Null_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Null_ref_t;
static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Null, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Struct__required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Struct__ref_t;
static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Struct_, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_List_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_List_ref_t;
static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_List, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeList_ref_t;
static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeList, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_ListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_ListView_ref_t;
static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_ListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeListView_ref_t;
static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeList_ref_t;
static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Map_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Map_ref_t;
static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Map, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Union_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Union_ref_t;
static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Union, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Int_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Int_ref_t;
static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Int, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FloatingPoint_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FloatingPoint_ref_t;
static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8_ref_t;
static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Binary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Binary_ref_t;
static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Binary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeUtf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeUtf8_ref_t;
static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeBinary_ref_t;
static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8View_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8View_ref_t;
static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_BinaryView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_BinaryView_ref_t;
static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_ref_t;
static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Bool_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Bool_ref_t;
static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Bool, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_RunEndEncoded_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_RunEndEncoded_ref_t;
static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Decimal_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Decimal_ref_t;
static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Decimal, 3)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Date_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Date_ref_t;
static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Date, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Time_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Time_ref_t;
static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Time, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Timestamp_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Timestamp_ref_t;
static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Interval_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Interval_ref_t;
static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Interval, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Duration_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Duration_ref_t;
static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Duration, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_KeyValue_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_KeyValue_ref_t;
static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_DictionaryEncoding_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_ref_t;
static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, 4)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Field_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Field_ref_t;
static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Field, 7)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Schema_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Schema_ref_t;
static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Schema, 4)

#define __org_apache_arrow_flatbuf_Null_formal_args
#define __org_apache_arrow_flatbuf_Null_call_args
static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Null, org_apache_arrow_flatbuf_Null_file_identifier, org_apache_arrow_flatbuf_Null_type_identifier)

#define __org_apache_arrow_flatbuf_Struct__formal_args
#define __org_apache_arrow_flatbuf_Struct__call_args
static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Struct_, org_apache_arrow_flatbuf_Struct__file_identifier, org_apache_arrow_flatbuf_Struct__type_identifier)

#define __org_apache_arrow_flatbuf_List_formal_args
#define __org_apache_arrow_flatbuf_List_call_args
static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_List, org_apache_arrow_flatbuf_List_file_identifier, org_apache_arrow_flatbuf_List_type_identifier)

#define __org_apache_arrow_flatbuf_LargeList_formal_args
#define __org_apache_arrow_flatbuf_LargeList_call_args
static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeList, org_apache_arrow_flatbuf_LargeList_file_identifier, org_apache_arrow_flatbuf_LargeList_type_identifier)

#define __org_apache_arrow_flatbuf_ListView_formal_args
#define __org_apache_arrow_flatbuf_ListView_call_args
static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_ListView, org_apache_arrow_flatbuf_ListView_file_identifier, org_apache_arrow_flatbuf_ListView_type_identifier)

#define __org_apache_arrow_flatbuf_LargeListView_formal_args
#define __org_apache_arrow_flatbuf_LargeListView_call_args
static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, org_apache_arrow_flatbuf_LargeListView_file_identifier, org_apache_arrow_flatbuf_LargeListView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeList_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeList_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList_file_identifier, org_apache_arrow_flatbuf_FixedSizeList_type_identifier)

#define __org_apache_arrow_flatbuf_Map_formal_args , flatbuffers_bool_t v0
#define __org_apache_arrow_flatbuf_Map_call_args , v0
static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Map, org_apache_arrow_flatbuf_Map_file_identifier, org_apache_arrow_flatbuf_Map_type_identifier)

#define __org_apache_arrow_flatbuf_Union_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0, flatbuffers_int32_vec_ref_t v1
#define __org_apache_arrow_flatbuf_Union_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Union, org_apache_arrow_flatbuf_Union_file_identifier, org_apache_arrow_flatbuf_Union_type_identifier)

#define __org_apache_arrow_flatbuf_Int_formal_args , int32_t v0, flatbuffers_bool_t v1
#define __org_apache_arrow_flatbuf_Int_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_Int_file_identifier, org_apache_arrow_flatbuf_Int_type_identifier)

#define __org_apache_arrow_flatbuf_FloatingPoint_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_FloatingPoint_call_args , v0
static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint_file_identifier, org_apache_arrow_flatbuf_FloatingPoint_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8_formal_args
#define __org_apache_arrow_flatbuf_Utf8_call_args
static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8, org_apache_arrow_flatbuf_Utf8_file_identifier, org_apache_arrow_flatbuf_Utf8_type_identifier)

#define __org_apache_arrow_flatbuf_Binary_formal_args
#define __org_apache_arrow_flatbuf_Binary_call_args
static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Binary, org_apache_arrow_flatbuf_Binary_file_identifier, org_apache_arrow_flatbuf_Binary_type_identifier)

#define __org_apache_arrow_flatbuf_LargeUtf8_formal_args
#define __org_apache_arrow_flatbuf_LargeUtf8_call_args
static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8_file_identifier, org_apache_arrow_flatbuf_LargeUtf8_type_identifier)

#define __org_apache_arrow_flatbuf_LargeBinary_formal_args
#define __org_apache_arrow_flatbuf_LargeBinary_call_args
static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, org_apache_arrow_flatbuf_LargeBinary_file_identifier, org_apache_arrow_flatbuf_LargeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8View_formal_args
#define __org_apache_arrow_flatbuf_Utf8View_call_args
static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, org_apache_arrow_flatbuf_Utf8View_file_identifier, org_apache_arrow_flatbuf_Utf8View_type_identifier)

#define __org_apache_arrow_flatbuf_BinaryView_formal_args
#define __org_apache_arrow_flatbuf_BinaryView_call_args
static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, org_apache_arrow_flatbuf_BinaryView_file_identifier, org_apache_arrow_flatbuf_BinaryView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeBinary_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Bool_formal_args
#define __org_apache_arrow_flatbuf_Bool_call_args
static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Bool, org_apache_arrow_flatbuf_Bool_file_identifier, org_apache_arrow_flatbuf_Bool_type_identifier)

#define __org_apache_arrow_flatbuf_RunEndEncoded_formal_args
#define __org_apache_arrow_flatbuf_RunEndEncoded_call_args
static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded_file_identifier, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier)

#define __org_apache_arrow_flatbuf_Decimal_formal_args , int32_t v0, int32_t v1, int32_t v2
#define __org_apache_arrow_flatbuf_Decimal_call_args , v0, v1, v2
static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Decimal, org_apache_arrow_flatbuf_Decimal_file_identifier, org_apache_arrow_flatbuf_Decimal_type_identifier)

#define __org_apache_arrow_flatbuf_Date_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Date_call_args , v0
static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Date, org_apache_arrow_flatbuf_Date_file_identifier, org_apache_arrow_flatbuf_Date_type_identifier)

#define __org_apache_arrow_flatbuf_Time_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, int32_t v1
#define __org_apache_arrow_flatbuf_Time_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Time, org_apache_arrow_flatbuf_Time_file_identifier, org_apache_arrow_flatbuf_Time_type_identifier)

#define __org_apache_arrow_flatbuf_Timestamp_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_Timestamp_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, org_apache_arrow_flatbuf_Timestamp_file_identifier, org_apache_arrow_flatbuf_Timestamp_type_identifier)

#define __org_apache_arrow_flatbuf_Interval_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Interval_call_args , v0
static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Interval, org_apache_arrow_flatbuf_Interval_file_identifier, org_apache_arrow_flatbuf_Interval_type_identifier)

#define __org_apache_arrow_flatbuf_Duration_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Duration_call_args , v0
static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Duration, org_apache_arrow_flatbuf_Duration_file_identifier, org_apache_arrow_flatbuf_Duration_type_identifier)

#define __org_apache_arrow_flatbuf_KeyValue_formal_args , flatbuffers_string_ref_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_KeyValue_call_args , v0, v1
static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_KeyValue_file_identifier, org_apache_arrow_flatbuf_KeyValue_type_identifier)

#define __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args , int64_t v0, org_apache_arrow_flatbuf_Int_ref_t v1, flatbuffers_bool_t v2, org_apache_arrow_flatbuf_DictionaryKind_enum_t v3
#define __org_apache_arrow_flatbuf_DictionaryEncoding_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier)

#define __org_apache_arrow_flatbuf_Field_formal_args ,\
  flatbuffers_string_ref_t v0, flatbuffers_bool_t v1, org_apache_arrow_flatbuf_Type_union_ref_t v3, org_apache_arrow_flatbuf_DictionaryEncoding_ref_t v4, org_apache_arrow_flatbuf_Field_vec_ref_t v5, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v6
#define __org_apache_arrow_flatbuf_Field_call_args ,\
  v0, v1, v3, v4, v5, v6
static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field_file_identifier, org_apache_arrow_flatbuf_Field_type_identifier)

#define __org_apache_arrow_flatbuf_Schema_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0, org_apache_arrow_flatbuf_Field_vec_ref_t v1, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v2, org_apache_arrow_flatbuf_Feature_vec_ref_t v3
#define __org_apache_arrow_flatbuf_Schema_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Schema, org_apache_arrow_flatbuf_Schema_file_identifier, org_apache_arrow_flatbuf_Schema_type_identifier)

static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_NONE(void)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_NONE; uref.value = 0; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Null; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Int; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FloatingPoint; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Binary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Bool; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Decimal; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Date; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Time; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Timestamp; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Interval; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_List; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Struct_; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Union; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Map; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Duration; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeUtf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_RunEndEncoded; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_BinaryView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8View; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_ListView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeListView; uref.value = ref; return uref; }
__flatbuffers_build_union_vector(flatbuffers_, org_apache_arrow_flatbuf_Type)

static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t u)
{
    switch (u.type) {
    case 1: return org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_clone(B, (org_apache_arrow_flatbuf_Null_table_t)u.value));
    case 2: return org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_clone(B, (org_apache_arrow_flatbuf_Int_table_t)u.value));
    case 3: return org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_clone(B, (org_apache_arrow_flatbuf_FloatingPoint_table_t)u.value));
    case 4: return org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_clone(B, (org_apache_arrow_flatbuf_Binary_table_t)u.value));
    case 5: return org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_clone(B, (org_apache_arrow_flatbuf_Utf8_table_t)u.value));
    case 6: return org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_clone(B, (org_apache_arrow_flatbuf_Bool_table_t)u.value));
    case 7: return org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_clone(B, (org_apache_arrow_flatbuf_Decimal_table_t)u.value));
    case 8: return org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_clone(B, (org_apache_arrow_flatbuf_Date_table_t)u.value));
    case 9: return org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_clone(B, (org_apache_arrow_flatbuf_Time_table_t)u.value));
    case 10: return org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_clone(B, (org_apache_arrow_flatbuf_Timestamp_table_t)u.value));
    case 11: return org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_clone(B, (org_apache_arrow_flatbuf_Interval_table_t)u.value));
    case 12: return org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_clone(B, (org_apache_arrow_flatbuf_List_table_t)u.value));
    case 13: return org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__clone(B, (org_apache_arrow_flatbuf_Struct__table_t)u.value));
    case 14: return org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_clone(B, (org_apache_arrow_flatbuf_Union_table_t)u.value));
    case 15: return org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_clone(B, (org_apache_arrow_flatbuf_FixedSizeBinary_table_t)u.value));
    case 16: return org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_clone(B, (org_apache_arrow_flatbuf_FixedSizeList_table_t)u.value));
    case 17: return org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_clone(B, (org_apache_arrow_flatbuf_Map_table_t)u.value));
    case 18: return org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_clone(B, (org_apache_arrow_flatbuf_Duration_table_t)u.value));
    case 19: return org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_clone(B, (org_apache_arrow_flatbuf_LargeBinary_table_t)u.value));
    case 20: return org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_clone(B, (org_apache_arrow_flatbuf_LargeUtf8_table_t)u.value));
    case 21: return org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_clone(B, (org_apache_arrow_flatbuf_LargeList_table_t)u.value));
    case 22: return org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_clone(B, (org_apache_arrow_flatbuf_RunEndEncoded_table_t)u.value));
    case 23: return org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_clone(B, (org_apache_arrow_flatbuf_BinaryView_table_t)u.value));
    case 24: return org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_clone(B, (org_apache_arrow_flatbuf_Utf8View_table_t)u.value));
    case 25: return org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_clone(B, (org_apache_arrow_flatbuf_ListView_table_t)u.value));
    case 26: return org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_clone(B, (org_apache_arrow_flatbuf_LargeListView_table_t)u.value));
    default: return org_apache_arrow_flatbuf_Type_as_NONE();
    }
}


static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args)
{
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Null_end(B);
}

static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Null_end(B));
}


static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args)
{
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Struct__end(B);
}

static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Struct__end(B));
}


static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args)
{
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_List_end(B);
}

static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_List_end(B));
}


static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeList_end(B);
}

static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeList_end(B));
}


static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args)
{
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_ListView_end(B);
}

static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_ListView_end(B));
}


static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeListView_end(B);
}

static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeListView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList_listSize, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeList)

static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeList_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeList_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Map_keysSorted, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Map)

static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args)
{
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Map_end(B);
}

static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Map_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Union_mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Union)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Union_typeIds, flatbuffers_int32, int32_t, org_apache_arrow_flatbuf_Union)

static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args)
{
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_add(B, v1)
        || org_apache_arrow_flatbuf_Union_mode_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Union_end(B);
}

static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_pick(B, t)
        || org_apache_arrow_flatbuf_Union_mode_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Union_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Int_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Int)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Int_is_signed, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Int)

static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args)
{
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_add(B, v0)
        || org_apache_arrow_flatbuf_Int_is_signed_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Int_end(B);
}

static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Int_is_signed_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Int_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint_precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_FloatingPoint)

static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args)
{
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FloatingPoint_end(B);
}

static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FloatingPoint_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8_end(B);
}

static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8_end(B));
}


static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args)
{
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Binary_end(B);
}

static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Binary_end(B));
}


static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeUtf8_end(B);
}

static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeUtf8_end(B));
}


static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeBinary_end(B);
}

static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8View_end(B);
}

static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8View_end(B));
}


static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args)
{
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_BinaryView_end(B);
}

static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_BinaryView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeBinary)

static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeBinary_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args)
{
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Bool_end(B);
}

static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Bool_end(B));
}


static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args)
{
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_RunEndEncoded_end(B);
}

static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_RunEndEncoded_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Decimal_precision, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Decimal_scale, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_Decimal_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(128), org_apache_arrow_flatbuf_Decimal)

static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args)
{
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_add(B, v0)
        || org_apache_arrow_flatbuf_Decimal_scale_add(B, v1)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Decimal_end(B);
}

static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_scale_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Decimal_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Date_unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Date)

static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args)
{
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Date_end(B);
}

static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Date_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Time_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Time)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Time_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(32), org_apache_arrow_flatbuf_Time)

static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args)
{
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_add(B, v1)
        || org_apache_arrow_flatbuf_Time_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Time_end(B);
}

static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Time_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Time_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_timezone, org_apache_arrow_flatbuf_Timestamp)

static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args)
{
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_add(B, v1)
        || org_apache_arrow_flatbuf_Timestamp_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Timestamp_end(B);
}

static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_pick(B, t)
        || org_apache_arrow_flatbuf_Timestamp_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Timestamp_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Interval_unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Interval)

static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args)
{
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Interval_end(B);
}

static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Interval_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Duration_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Duration)

static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args)
{
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Duration_end(B);
}

static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Duration_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_key, org_apache_arrow_flatbuf_KeyValue)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_value, org_apache_arrow_flatbuf_KeyValue)

static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args)
{
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_add(B, v0)
        || org_apache_arrow_flatbuf_KeyValue_value_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_KeyValue_end(B);
}

static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_pick(B, t)
        || org_apache_arrow_flatbuf_KeyValue_value_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_KeyValue_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_id, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_table_field(1, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_indexType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)

static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args)
{
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_add(B, v0)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_add(B, v1)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_add(B, v3)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_DictionaryEncoding_end(B);
}

static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_DictionaryEncoding_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_Field_name, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Field_nullable, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_field(3, flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_field(4, flatbuffers_, org_apache_arrow_flatbuf_Field_dictionary, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(5, flatbuffers_, org_apache_arrow_flatbuf_Field_children, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(6, flatbuffers_, org_apache_arrow_flatbuf_Field_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Field)

static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args)
{
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_add(B, v0)
        || org_apache_arrow_flatbuf_Field_type_add_value(B, v3)
        || org_apache_arrow_flatbuf_Field_dictionary_add(B, v4)
        || org_apache_arrow_flatbuf_Field_children_add(B, v5)
        || org_apache_arrow_flatbuf_Field_custom_metadata_add(B, v6)
        || org_apache_arrow_flatbuf_Field_nullable_add(B, v1)
        || org_apache_arrow_flatbuf_Field_type_add_type(B, v3.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Field_end(B);
}

static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_pick(B, t)
        || org_apache_arrow_flatbuf_Field_type_pick(B, t)
        || org_apache_arrow_flatbuf_Field_dictionary_pick(B, t)
        || org_apache_arrow_flatbuf_Field_children_pick(B, t)
        || org_apache_arrow_flatbuf_Field_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Field_nullable_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Field_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Schema_endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Schema_fields, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_Schema_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_Schema_features, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, org_apache_arrow_flatbuf_Schema)

static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args)
{
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_add(B, v1)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_add(B, v2)
        || org_apache_arrow_flatbuf_Schema_features_add(B, v3)
        || org_apache_arrow_flatbuf_Schema_endianness_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Schema_end(B);
}

static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_features_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_endianness_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Schema_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_BUILDER_H */
#ifndef SCHEMA_VERIFIER_H
#define SCHEMA_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_Type_union_verifier(flatcc_union_verifier_descriptor_t *ud)
{
    switch (ud->type) {
    case 1: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Null_verify_table); /* Null */
    case 2: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Int_verify_table); /* Int */
    case 3: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FloatingPoint_verify_table); /* FloatingPoint */
    case 4: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Binary_verify_table); /* Binary */
    case 5: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8_verify_table); /* Utf8 */
    case 6: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Bool_verify_table); /* Bool */
    case 7: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Decimal_verify_table); /* Decimal */
    case 8: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Date_verify_table); /* Date */
    case 9: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Time_verify_table); /* Time */
    case 10: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Timestamp_verify_table); /* Timestamp */
    case 11: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Interval_verify_table); /* Interval */
    case 12: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_List_verify_table); /* List */
    case 13: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Struct__verify_table); /* Struct_ */
    case 14: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Union_verify_table); /* Union */
    case 15: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeBinary_verify_table); /* FixedSizeBinary */
    case 16: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeList_verify_table); /* FixedSizeList */
    case 17: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Map_verify_table); /* Map */
    case 18: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Duration_verify_table); /* Duration */
    case 19: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeBinary_verify_table); /* LargeBinary */
    case 20: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeUtf8_verify_table); /* LargeUtf8 */
    case 21: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeList_verify_table); /* LargeList */
    case 22: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_RunEndEncoded_verify_table); /* RunEndEncoded */
    case 23: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_BinaryView_verify_table); /* BinaryView */
    case 24: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8View_verify_table); /* Utf8View */
    case 25: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_ListView_verify_table); /* ListView */
    case 26: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeListView_verify_table); /* LargeListView */
    default: return flatcc_verify_ok;
    }
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, fid, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, fid, 16, 8);
}

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* listSize */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 1, 1) /* keysSorted */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* mode */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 0, 4, 4, INT64_C(1073741823)) /* typeIds */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* bitWidth */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* is_signed */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* precision */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* byteWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* precision */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* scale */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* timezone */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* key */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* value */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* id */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 1, 0, &org_apache_arrow_flatbuf_Int_verify_table) /* indexType */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 1, 1) /* isOrdered */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 2, 2) /* dictionaryKind */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* name */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* nullable */)) return ret;
    if ((ret = flatcc_verify_union_field(td, 3, 0, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 4, 0, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table) /* dictionary */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 5, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* children */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 6, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* endianness */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 1, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* fields */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 0, 8, 8, INT64_C(536870911)) /* features */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_VERIFIER_H */
#ifndef SCHEMA_READER_H
#define SCHEMA_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

typedef struct org_apache_arrow_flatbuf_Buffer org_apache_arrow_flatbuf_Buffer_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_struct_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_struct_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_vec_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_vec_t;

typedef const struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_table_t;
typedef struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__table_t;
typedef struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_table_t;
typedef struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_table_t;
typedef struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_table_t;
typedef struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_table_t;
typedef struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_table_t;
typedef struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_table_t;
typedef struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_table_t;
typedef struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_table_t;
typedef struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_table_t;
typedef struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_table_t;
typedef struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_table_t;
typedef struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_table_t;
typedef struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_table_t;
typedef struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_table_t;
typedef struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_table_t;
typedef struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_table_t;
typedef struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_table_t;
typedef struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_table_t;
typedef struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_table_t;
typedef struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_table_t;
typedef struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_table_t;
typedef struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_table_t;
typedef struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_table_t;
typedef struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_Null_file_identifier
#define org_apache_arrow_flatbuf_Null_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Null_file_identifier */
#ifndef org_apache_arrow_flatbuf_Null_identifier
#define org_apache_arrow_flatbuf_Null_identifier 0
#endif
#define org_apache_arrow_flatbuf_Null_type_hash ((flatbuffers_thash_t)0x7b36a4dd)
#define org_apache_arrow_flatbuf_Null_type_identifier "\xdd\xa4\x36\x7b"
#ifndef org_apache_arrow_flatbuf_Null_file_extension
#define org_apache_arrow_flatbuf_Null_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Struct__file_identifier
#define org_apache_arrow_flatbuf_Struct__file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Struct__file_identifier */
#ifndef org_apache_arrow_flatbuf_Struct__identifier
#define org_apache_arrow_flatbuf_Struct__identifier 0
#endif
#define org_apache_arrow_flatbuf_Struct__type_hash ((flatbuffers_thash_t)0x6310f362)
#define org_apache_arrow_flatbuf_Struct__type_identifier "\x62\xf3\x10\x63"
#ifndef org_apache_arrow_flatbuf_Struct__file_extension
#define org_apache_arrow_flatbuf_Struct__file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_List_file_identifier
#define org_apache_arrow_flatbuf_List_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_List_file_identifier */
#ifndef org_apache_arrow_flatbuf_List_identifier
#define org_apache_arrow_flatbuf_List_identifier 0
#endif
#define org_apache_arrow_flatbuf_List_type_hash ((flatbuffers_thash_t)0xd4ce5878)
#define org_apache_arrow_flatbuf_List_type_identifier "\x78\x58\xce\xd4"
#ifndef org_apache_arrow_flatbuf_List_file_extension
#define org_apache_arrow_flatbuf_List_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeList_file_identifier
#define org_apache_arrow_flatbuf_LargeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeList_identifier
#define org_apache_arrow_flatbuf_LargeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeList_type_hash ((flatbuffers_thash_t)0x38aa7e27)
#define org_apache_arrow_flatbuf_LargeList_type_identifier "\x27\x7e\xaa\x38"
#ifndef org_apache_arrow_flatbuf_LargeList_file_extension
#define org_apache_arrow_flatbuf_LargeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_ListView_file_identifier
#define org_apache_arrow_flatbuf_ListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_ListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_ListView_identifier
#define org_apache_arrow_flatbuf_ListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_ListView_type_hash ((flatbuffers_thash_t)0x23d37919)
#define org_apache_arrow_flatbuf_ListView_type_identifier "\x19\x79\xd3\x23"
#ifndef org_apache_arrow_flatbuf_ListView_file_extension
#define org_apache_arrow_flatbuf_ListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeListView_file_identifier
#define org_apache_arrow_flatbuf_LargeListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeListView_identifier
#define org_apache_arrow_flatbuf_LargeListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeListView_type_hash ((flatbuffers_thash_t)0x28efac02)
#define org_apache_arrow_flatbuf_LargeListView_type_identifier "\x02\xac\xef\x28"
#ifndef org_apache_arrow_flatbuf_LargeListView_file_extension
#define org_apache_arrow_flatbuf_LargeListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeList_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeList_type_hash ((flatbuffers_thash_t)0xcef245bb)
#define org_apache_arrow_flatbuf_FixedSizeList_type_identifier "\xbb\x45\xf2\xce"
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_extension
#define org_apache_arrow_flatbuf_FixedSizeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Map_file_identifier
#define org_apache_arrow_flatbuf_Map_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Map_file_identifier */
#ifndef org_apache_arrow_flatbuf_Map_identifier
#define org_apache_arrow_flatbuf_Map_identifier 0
#endif
#define org_apache_arrow_flatbuf_Map_type_hash ((flatbuffers_thash_t)0xcebef8e6)
#define org_apache_arrow_flatbuf_Map_type_identifier "\xe6\xf8\xbe\xce"
#ifndef org_apache_arrow_flatbuf_Map_file_extension
#define org_apache_arrow_flatbuf_Map_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Union_file_identifier
#define org_apache_arrow_flatbuf_Union_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Union_file_identifier */
#ifndef org_apache_arrow_flatbuf_Union_identifier
#define org_apache_arrow_flatbuf_Union_identifier 0
#endif
#define org_apache_arrow_flatbuf_Union_type_hash ((flatbuffers_thash_t)0x896bda57)
#define org_apache_arrow_flatbuf_Union_type_identifier "\x57\xda\x6b\x89"
#ifndef org_apache_arrow_flatbuf_Union_file_extension
#define org_apache_arrow_flatbuf_Union_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Int_file_identifier
#define org_apache_arrow_flatbuf_Int_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Int_file_identifier */
#ifndef org_apache_arrow_flatbuf_Int_identifier
#define org_apache_arrow_flatbuf_Int_identifier 0
#endif
#define org_apache_arrow_flatbuf_Int_type_hash ((flatbuffers_thash_t)0x30789001)
#define org_apache_arrow_flatbuf_Int_type_identifier "\x01\x90\x78\x30"
#ifndef org_apache_arrow_flatbuf_Int_file_extension
#define org_apache_arrow_flatbuf_Int_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FloatingPoint_file_identifier */
#ifndef org_apache_arrow_flatbuf_FloatingPoint_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_identifier 0
#endif
#define org_apache_arrow_flatbuf_FloatingPoint_type_hash ((flatbuffers_thash_t)0xf7d06268)
#define org_apache_arrow_flatbuf_FloatingPoint_type_identifier "\x68\x62\xd0\xf7"
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_extension
#define org_apache_arrow_flatbuf_FloatingPoint_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8_file_identifier
#define org_apache_arrow_flatbuf_Utf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8_identifier
#define org_apache_arrow_flatbuf_Utf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8_type_hash ((flatbuffers_thash_t)0x8fe60d37)
#define org_apache_arrow_flatbuf_Utf8_type_identifier "\x37\x0d\xe6\x8f"
#ifndef org_apache_arrow_flatbuf_Utf8_file_extension
#define org_apache_arrow_flatbuf_Utf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Binary_file_identifier
#define org_apache_arrow_flatbuf_Binary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Binary_file_identifier */
#ifndef org_apache_arrow_flatbuf_Binary_identifier
#define org_apache_arrow_flatbuf_Binary_identifier 0
#endif
#define org_apache_arrow_flatbuf_Binary_type_hash ((flatbuffers_thash_t)0x8e21a795)
#define org_apache_arrow_flatbuf_Binary_type_identifier "\x95\xa7\x21\x8e"
#ifndef org_apache_arrow_flatbuf_Binary_file_extension
#define org_apache_arrow_flatbuf_Binary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeUtf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeUtf8_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeUtf8_type_hash ((flatbuffers_thash_t)0x24ed2fb0)
#define org_apache_arrow_flatbuf_LargeUtf8_type_identifier "\xb0\x2f\xed\x24"
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_extension
#define org_apache_arrow_flatbuf_LargeUtf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_identifier
#define org_apache_arrow_flatbuf_LargeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeBinary_identifier
#define org_apache_arrow_flatbuf_LargeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeBinary_type_hash ((flatbuffers_thash_t)0xbd437872)
#define org_apache_arrow_flatbuf_LargeBinary_type_identifier "\x72\x78\x43\xbd"
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_extension
#define org_apache_arrow_flatbuf_LargeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8View_file_identifier
#define org_apache_arrow_flatbuf_Utf8View_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8View_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8View_identifier
#define org_apache_arrow_flatbuf_Utf8View_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8View_type_hash ((flatbuffers_thash_t)0xab7692)
#define org_apache_arrow_flatbuf_Utf8View_type_identifier "\x92\x76\xab\x00"
#ifndef org_apache_arrow_flatbuf_Utf8View_file_extension
#define org_apache_arrow_flatbuf_Utf8View_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_BinaryView_file_identifier
#define org_apache_arrow_flatbuf_BinaryView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_BinaryView_file_identifier */
#ifndef org_apache_arrow_flatbuf_BinaryView_identifier
#define org_apache_arrow_flatbuf_BinaryView_identifier 0
#endif
#define org_apache_arrow_flatbuf_BinaryView_type_hash ((flatbuffers_thash_t)0x18c52428)
#define org_apache_arrow_flatbuf_BinaryView_type_identifier "\x28\x24\xc5\x18"
#ifndef org_apache_arrow_flatbuf_BinaryView_file_extension
#define org_apache_arrow_flatbuf_BinaryView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_hash ((flatbuffers_thash_t)0x80d0f4ce)
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier "\xce\xf4\xd0\x80"
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_extension
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Bool_file_identifier
#define org_apache_arrow_flatbuf_Bool_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Bool_file_identifier */
#ifndef org_apache_arrow_flatbuf_Bool_identifier
#define org_apache_arrow_flatbuf_Bool_identifier 0
#endif
#define org_apache_arrow_flatbuf_Bool_type_hash ((flatbuffers_thash_t)0x96bf83f0)
#define org_apache_arrow_flatbuf_Bool_type_identifier "\xf0\x83\xbf\x96"
#ifndef org_apache_arrow_flatbuf_Bool_file_extension
#define org_apache_arrow_flatbuf_Bool_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_RunEndEncoded_file_identifier */
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_identifier 0
#endif
#define org_apache_arrow_flatbuf_RunEndEncoded_type_hash ((flatbuffers_thash_t)0x5a98bcc)
#define org_apache_arrow_flatbuf_RunEndEncoded_type_identifier "\xcc\x8b\xa9\x05"
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_extension
#define org_apache_arrow_flatbuf_RunEndEncoded_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Decimal_file_identifier
#define org_apache_arrow_flatbuf_Decimal_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Decimal_file_identifier */
#ifndef org_apache_arrow_flatbuf_Decimal_identifier
#define org_apache_arrow_flatbuf_Decimal_identifier 0
#endif
#define org_apache_arrow_flatbuf_Decimal_type_hash ((flatbuffers_thash_t)0x91d1beb7)
#define org_apache_arrow_flatbuf_Decimal_type_identifier "\xb7\xbe\xd1\x91"
#ifndef org_apache_arrow_flatbuf_Decimal_file_extension
#define org_apache_arrow_flatbuf_Decimal_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Date_file_identifier
#define org_apache_arrow_flatbuf_Date_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Date_file_identifier */
#ifndef org_apache_arrow_flatbuf_Date_identifier
#define org_apache_arrow_flatbuf_Date_identifier 0
#endif
#define org_apache_arrow_flatbuf_Date_type_hash ((flatbuffers_thash_t)0xe0ccf624)
#define org_apache_arrow_flatbuf_Date_type_identifier "\x24\xf6\xcc\xe0"
#ifndef org_apache_arrow_flatbuf_Date_file_extension
#define org_apache_arrow_flatbuf_Date_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Time_file_identifier
#define org_apache_arrow_flatbuf_Time_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Time_file_identifier */
#ifndef org_apache_arrow_flatbuf_Time_identifier
#define org_apache_arrow_flatbuf_Time_identifier 0
#endif
#define org_apache_arrow_flatbuf_Time_type_hash ((flatbuffers_thash_t)0x2442a489)
#define org_apache_arrow_flatbuf_Time_type_identifier "\x89\xa4\x42\x24"
#ifndef org_apache_arrow_flatbuf_Time_file_extension
#define org_apache_arrow_flatbuf_Time_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Timestamp_file_identifier
#define org_apache_arrow_flatbuf_Timestamp_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Timestamp_file_identifier */
#ifndef org_apache_arrow_flatbuf_Timestamp_identifier
#define org_apache_arrow_flatbuf_Timestamp_identifier 0
#endif
#define org_apache_arrow_flatbuf_Timestamp_type_hash ((flatbuffers_thash_t)0x1fddf080)
#define org_apache_arrow_flatbuf_Timestamp_type_identifier "\x80\xf0\xdd\x1f"
#ifndef org_apache_arrow_flatbuf_Timestamp_file_extension
#define org_apache_arrow_flatbuf_Timestamp_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Interval_file_identifier
#define org_apache_arrow_flatbuf_Interval_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Interval_file_identifier */
#ifndef org_apache_arrow_flatbuf_Interval_identifier
#define org_apache_arrow_flatbuf_Interval_identifier 0
#endif
#define org_apache_arrow_flatbuf_Interval_type_hash ((flatbuffers_thash_t)0x1e2d6809)
#define org_apache_arrow_flatbuf_Interval_type_identifier "\x09\x68\x2d\x1e"
#ifndef org_apache_arrow_flatbuf_Interval_file_extension
#define org_apache_arrow_flatbuf_Interval_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Duration_file_identifier
#define org_apache_arrow_flatbuf_Duration_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Duration_file_identifier */
#ifndef org_apache_arrow_flatbuf_Duration_identifier
#define org_apache_arrow_flatbuf_Duration_identifier 0
#endif
#define org_apache_arrow_flatbuf_Duration_type_hash ((flatbuffers_thash_t)0x1ecea6b0)
#define org_apache_arrow_flatbuf_Duration_type_identifier "\xb0\xa6\xce\x1e"
#ifndef org_apache_arrow_flatbuf_Duration_file_extension
#define org_apache_arrow_flatbuf_Duration_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_KeyValue_file_identifier
#define org_apache_arrow_flatbuf_KeyValue_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_KeyValue_file_identifier */
#ifndef org_apache_arrow_flatbuf_KeyValue_identifier
#define org_apache_arrow_flatbuf_KeyValue_identifier 0
#endif
#define org_apache_arrow_flatbuf_KeyValue_type_hash ((flatbuffers_thash_t)0x3b264744)
#define org_apache_arrow_flatbuf_KeyValue_type_identifier "\x44\x47\x26\x3b"
#ifndef org_apache_arrow_flatbuf_KeyValue_file_extension
#define org_apache_arrow_flatbuf_KeyValue_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier */
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_identifier 0
#endif
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_hash ((flatbuffers_thash_t)0x8c703261)
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier "\x61\x32\x70\x8c"
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_extension
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Field_file_identifier
#define org_apache_arrow_flatbuf_Field_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Field_file_identifier */
#ifndef org_apache_arrow_flatbuf_Field_identifier
#define org_apache_arrow_flatbuf_Field_identifier 0
#endif
#define org_apache_arrow_flatbuf_Field_type_hash ((flatbuffers_thash_t)0xd981525c)
#define org_apache_arrow_flatbuf_Field_type_identifier "\x5c\x52\x81\xd9"
#ifndef org_apache_arrow_flatbuf_Field_file_extension
#define org_apache_arrow_flatbuf_Field_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Buffer_file_identifier
#define org_apache_arrow_flatbuf_Buffer_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Buffer_file_identifier */
#ifndef org_apache_arrow_flatbuf_Buffer_identifier
#define org_apache_arrow_flatbuf_Buffer_identifier 0
#endif
#define org_apache_arrow_flatbuf_Buffer_type_hash ((flatbuffers_thash_t)0x519d7fea)
#define org_apache_arrow_flatbuf_Buffer_type_identifier "\xea\x7f\x9d\x51"
#ifndef org_apache_arrow_flatbuf_Buffer_file_extension
#define org_apache_arrow_flatbuf_Buffer_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Schema_file_identifier
#define org_apache_arrow_flatbuf_Schema_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Schema_file_identifier */
#ifndef org_apache_arrow_flatbuf_Schema_identifier
#define org_apache_arrow_flatbuf_Schema_identifier 0
#endif
#define org_apache_arrow_flatbuf_Schema_type_hash ((flatbuffers_thash_t)0x406570b)
#define org_apache_arrow_flatbuf_Schema_type_identifier "\x0b\x57\x06\x04"
#ifndef org_apache_arrow_flatbuf_Schema_file_extension
#define org_apache_arrow_flatbuf_Schema_file_extension "bin"
#endif

typedef int16_t org_apache_arrow_flatbuf_MetadataVersion_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t, 16)
/**  0.1.0 (October 2016). */
#define org_apache_arrow_flatbuf_MetadataVersion_V1 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_MetadataVersion_V2 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_MetadataVersion_V3 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_MetadataVersion_V4 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(3))
#define org_apache_arrow_flatbuf_MetadataVersion_V5 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(4))

static inline const char *org_apache_arrow_flatbuf_MetadataVersion_name(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return "V1";
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return "V2";
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return "V3";
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return "V4";
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return "V5";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_MetadataVersion_is_known_value(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return 1;
    default: return 0;
    }
}

/**  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 intended to represent higher level
 *       features, additional details may be 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. */
typedef int64_t org_apache_arrow_flatbuf_Feature_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, 64)
/**  Needed to make flatbuffers happy. */
#define org_apache_arrow_flatbuf_Feature_UNUSED ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(0))
#define org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(1))
#define org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(2))

static inline const char *org_apache_arrow_flatbuf_Feature_name(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return "UNUSED";
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return "DICTIONARY_REPLACEMENT";
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return "COMPRESSED_BODY";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Feature_is_known_value(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return 1;
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return 1;
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_UnionMode_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 16)
#define org_apache_arrow_flatbuf_UnionMode_Sparse ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_UnionMode_Dense ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_UnionMode_name(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return "Sparse";
    case org_apache_arrow_flatbuf_UnionMode_Dense: return "Dense";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_UnionMode_is_known_value(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return 1;
    case org_apache_arrow_flatbuf_UnionMode_Dense: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_Precision_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 16)
#define org_apache_arrow_flatbuf_Precision_HALF ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Precision_SINGLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_Precision_DOUBLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_Precision_name(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return "HALF";
    case org_apache_arrow_flatbuf_Precision_SINGLE: return "SINGLE";
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return "DOUBLE";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Precision_is_known_value(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return 1;
    case org_apache_arrow_flatbuf_Precision_SINGLE: return 1;
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_DateUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_DateUnit_DAY ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_DateUnit_MILLISECOND ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_DateUnit_name(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return "DAY";
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return "MILLISECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DateUnit_is_known_value(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return 1;
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_TimeUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_TimeUnit_SECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_TimeUnit_MILLISECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_TimeUnit_MICROSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_TimeUnit_NANOSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(3))

static inline const char *org_apache_arrow_flatbuf_TimeUnit_name(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return "SECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return "MILLISECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return "MICROSECOND";
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return "NANOSECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_TimeUnit_is_known_value(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_IntervalUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_IntervalUnit_name(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return "YEAR_MONTH";
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return "DAY_TIME";
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return "MONTH_DAY_NANO";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_IntervalUnit_is_known_value(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  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 */
typedef int16_t org_apache_arrow_flatbuf_DictionaryKind_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 16)
#define org_apache_arrow_flatbuf_DictionaryKind_DenseArray ((org_apache_arrow_flatbuf_DictionaryKind_enum_t)INT16_C(0))

static inline const char *org_apache_arrow_flatbuf_DictionaryKind_name(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return "DenseArray";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DictionaryKind_is_known_value(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  Endianness of the platform producing the data */
typedef int16_t org_apache_arrow_flatbuf_Endianness_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 16)
#define org_apache_arrow_flatbuf_Endianness_Little ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Endianness_Big ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_Endianness_name(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return "Little";
    case org_apache_arrow_flatbuf_Endianness_Big: return "Big";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Endianness_is_known_value(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return 1;
    case org_apache_arrow_flatbuf_Endianness_Big: return 1;
    default: return 0;
    }
}


/**  ----------------------------------------------------------------------
 *  A Buffer represents a single contiguous memory segment */
struct org_apache_arrow_flatbuf_Buffer {
    /**  The relative offset into the shared memory page where the bytes for this
     *  buffer starts */
    alignas(8) int64_t 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. */
    alignas(8) int64_t length;
};
static_assert(sizeof(org_apache_arrow_flatbuf_Buffer_t) == 16, "struct size mismatch");

static inline const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__const_ptr_add(const org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__ptr_add(org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_struct_t org_apache_arrow_flatbuf_Buffer_vec_at(org_apache_arrow_flatbuf_Buffer_vec_t vec, size_t i)
__flatbuffers_struct_vec_at(vec, i)
static inline size_t org_apache_arrow_flatbuf_Buffer__size(void) { return 16; }
static inline size_t org_apache_arrow_flatbuf_Buffer_vec_len(org_apache_arrow_flatbuf_Buffer_vec_t vec)
__flatbuffers_vec_len(vec)
__flatbuffers_struct_as_root(org_apache_arrow_flatbuf_Buffer)

__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, offset, flatbuffers_int64, int64_t)
__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, length, flatbuffers_int64, int64_t)


/**  These are stored in the flatbuffer in the Type union below */
struct org_apache_arrow_flatbuf_Null_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Null_vec_len(org_apache_arrow_flatbuf_Null_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Null_table_t org_apache_arrow_flatbuf_Null_vec_at(org_apache_arrow_flatbuf_Null_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Null_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Null)


/**  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 org_apache_arrow_flatbuf_Struct__table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Struct__vec_len(org_apache_arrow_flatbuf_Struct__vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Struct__table_t org_apache_arrow_flatbuf_Struct__vec_at(org_apache_arrow_flatbuf_Struct__vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Struct__table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Struct_)


struct org_apache_arrow_flatbuf_List_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_List_vec_len(org_apache_arrow_flatbuf_List_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_List_table_t org_apache_arrow_flatbuf_List_vec_at(org_apache_arrow_flatbuf_List_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_List_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_List)


/**  Same as List, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeList_vec_len(org_apache_arrow_flatbuf_LargeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeList_table_t org_apache_arrow_flatbuf_LargeList_vec_at(org_apache_arrow_flatbuf_LargeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeList)


/**  Represents the same logical types that List can, but contains offsets and
 *  sizes allowing for writes in any order and sharing of child values among
 *  list values. */
struct org_apache_arrow_flatbuf_ListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_ListView_vec_len(org_apache_arrow_flatbuf_ListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_ListView_table_t org_apache_arrow_flatbuf_ListView_vec_at(org_apache_arrow_flatbuf_ListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_ListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_ListView)


/**  Same as ListView, but with 64-bit offsets and sizes, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeListView_vec_len(org_apache_arrow_flatbuf_LargeListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeListView_table_t org_apache_arrow_flatbuf_LargeListView_vec_at(org_apache_arrow_flatbuf_LargeListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeListView)


struct org_apache_arrow_flatbuf_FixedSizeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeList_vec_len(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeList_table_t org_apache_arrow_flatbuf_FixedSizeList_vec_at(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeList)

/**  Number of list items per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeList, listSize, flatbuffers_int32, int32_t, INT32_C(0))

/**  A Map is a logical nested type that is represented as
 *
 *  List<entries: Struct<key: K, value: V>>
 *
 *  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: the key type and the value type. The names of the
 *  child fields may be respectively "entries", "key", and "value", but this is
 *  not enforced.
 *
 *  Map
 *  ```text
 *    - 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 org_apache_arrow_flatbuf_Map_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Map_vec_len(org_apache_arrow_flatbuf_Map_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Map_table_t org_apache_arrow_flatbuf_Map_vec_at(org_apache_arrow_flatbuf_Map_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Map_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Map)

/**  Set to true if the keys within each value are sorted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Map, keysSorted, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

/**  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 org_apache_arrow_flatbuf_Union_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Union_vec_len(org_apache_arrow_flatbuf_Union_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Union_table_t org_apache_arrow_flatbuf_Union_vec_at(org_apache_arrow_flatbuf_Union_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Union_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Union)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Union, mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Union, typeIds, flatbuffers_int32_vec_t, 0)

struct org_apache_arrow_flatbuf_Int_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Int_vec_len(org_apache_arrow_flatbuf_Int_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Int_table_t org_apache_arrow_flatbuf_Int_vec_at(org_apache_arrow_flatbuf_Int_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Int_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Int)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Int, bitWidth, flatbuffers_int32, int32_t, INT32_C(0))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Int, is_signed, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

struct org_apache_arrow_flatbuf_FloatingPoint_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FloatingPoint_vec_len(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FloatingPoint_table_t org_apache_arrow_flatbuf_FloatingPoint_vec_at(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FloatingPoint_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FloatingPoint)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FloatingPoint, precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, INT16_C(0))

/**  Unicode with UTF-8 encoding */
struct org_apache_arrow_flatbuf_Utf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8_vec_len(org_apache_arrow_flatbuf_Utf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8_table_t org_apache_arrow_flatbuf_Utf8_vec_at(org_apache_arrow_flatbuf_Utf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8)


/**  Opaque binary data */
struct org_apache_arrow_flatbuf_Binary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Binary_vec_len(org_apache_arrow_flatbuf_Binary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Binary_table_t org_apache_arrow_flatbuf_Binary_vec_at(org_apache_arrow_flatbuf_Binary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Binary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Binary)


/**  Same as Utf8, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeUtf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeUtf8_vec_len(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeUtf8_table_t org_apache_arrow_flatbuf_LargeUtf8_vec_at(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeUtf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeUtf8)


/**  Same as Binary, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeBinary_vec_len(org_apache_arrow_flatbuf_LargeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeBinary_table_t org_apache_arrow_flatbuf_LargeBinary_vec_at(org_apache_arrow_flatbuf_LargeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeBinary)


/**  Logically the same as Utf8, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_Utf8View_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8View_vec_len(org_apache_arrow_flatbuf_Utf8View_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8View_table_t org_apache_arrow_flatbuf_Utf8View_vec_at(org_apache_arrow_flatbuf_Utf8View_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8View_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8View)


/**  Logically the same as Binary, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_BinaryView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_BinaryView_vec_len(org_apache_arrow_flatbuf_BinaryView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_BinaryView_table_t org_apache_arrow_flatbuf_BinaryView_vec_at(org_apache_arrow_flatbuf_BinaryView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_BinaryView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_BinaryView)


struct org_apache_arrow_flatbuf_FixedSizeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_len(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeBinary_table_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeBinary)

/**  Number of bytes per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeBinary, byteWidth, flatbuffers_int32, int32_t, INT32_C(0))

struct org_apache_arrow_flatbuf_Bool_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Bool_vec_len(org_apache_arrow_flatbuf_Bool_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Bool_table_t org_apache_arrow_flatbuf_Bool_vec_at(org_apache_arrow_flatbuf_Bool_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Bool_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Bool)


/**  Contains two child arrays, run_ends and values.
 *  The run_ends child array must be a 16/32/64-bit integer array
 *  which encodes the indices at which the run with the value in
 *  each corresponding index in the values child array ends.
 *  Like list/struct types, the value array can be of any type. */
struct org_apache_arrow_flatbuf_RunEndEncoded_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_RunEndEncoded_vec_len(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_RunEndEncoded_table_t org_apache_arrow_flatbuf_RunEndEncoded_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_RunEndEncoded)


/**  Exact decimal value represented as an integer value in two's
 *  complement. Currently 32-bit (4-byte), 64-bit (8-byte),
 *  128-bit (16-byte) and 256-bit (32-byte) integers are used.
 *  The representation uses the endianness indicated in the Schema. */
struct org_apache_arrow_flatbuf_Decimal_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Decimal_vec_len(org_apache_arrow_flatbuf_Decimal_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Decimal_table_t org_apache_arrow_flatbuf_Decimal_vec_at(org_apache_arrow_flatbuf_Decimal_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Decimal_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Decimal)

/**  Total number of decimal digits */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Decimal, precision, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of digits after the decimal point "." */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Decimal, scale, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of bits per value. The accepted widths are 32, 64, 128 and 256.
 *  We use bitWidth for consistency with Int::bitWidth. */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_Decimal, bitWidth, flatbuffers_int32, int32_t, INT32_C(128))

/**  Date is either a 32-bit or 64-bit signed integer type representing an
 *  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 org_apache_arrow_flatbuf_Date_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Date_vec_len(org_apache_arrow_flatbuf_Date_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Date_table_t org_apache_arrow_flatbuf_Date_vec_at(org_apache_arrow_flatbuf_Date_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Date_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Date)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Date, unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, INT16_C(1))

/**  Time is either a 32-bit or 64-bit signed integer type representing an
 *  elapsed time since midnight, stored in either of four units: seconds,
 *  milliseconds, microseconds or nanoseconds.
 *
 *  The integer `bitWidth` depends on the `unit` and must be one of the following:
 *  * SECOND and MILLISECOND: 32 bits
 *  * MICROSECOND and NANOSECOND: 64 bits
 *
 *  The allowed values are between 0 (inclusive) and 86400 (=24*60*60) seconds
 *  (exclusive), adjusted for the time unit (for example, up to 86400000
 *  exclusive for the MILLISECOND unit).
 *  This definition doesn't allow for leap seconds. Time values from
 *  measurements with leap seconds will need to be corrected when ingesting
 *  into Arrow (for example by replacing the value 86400 with 86399). */
struct org_apache_arrow_flatbuf_Time_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Time_vec_len(org_apache_arrow_flatbuf_Time_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Time_table_t org_apache_arrow_flatbuf_Time_vec_at(org_apache_arrow_flatbuf_Time_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Time_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Time)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Time, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Time, bitWidth, flatbuffers_int32, int32_t, INT32_C(32))

/**  Timestamp is a 64-bit signed integer representing an elapsed time since a
 *  fixed epoch, stored in either of four units: seconds, milliseconds,
 *  microseconds or nanoseconds, and is optionally annotated with a timezone.
 *
 *  Timestamp values do not include any leap seconds (in other words, all
 *  days are considered 86400 seconds long).
 *
 *  Timestamps with a non-empty timezone
 *  ------------------------------------
 *
 *  If a Timestamp column has a non-empty timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in the *UTC* timezone
 *  (the Unix epoch), regardless of the Timestamp's own timezone.
 *
 *  Therefore, timestamp values with a non-empty timezone correspond to
 *  physical points in time together with some additional information about
 *  how the data was obtained and/or how to display it (the timezone).
 *
 *    For example, the timestamp value 0 with the timezone string "Europe/Paris"
 *    corresponds to "January 1st 1970, 00h00" in the UTC timezone, but the
 *    application may prefer to display it as "January 1st 1970, 01h00" in
 *    the Europe/Paris timezone (which is the same physical point in time).
 *
 *  One consequence is that timestamp values with a non-empty timezone
 *  can be compared and ordered directly, since they all share the same
 *  well-known point of reference (the Unix epoch).
 *
 *  Timestamps with an unset / empty timezone
 *  -----------------------------------------
 *
 *  If a Timestamp column has no timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in an *unknown* timezone.
 *
 *  Therefore, timestamp values without a timezone cannot be meaningfully
 *  interpreted as physical points in time, but only as calendar / clock
 *  indications ("wall clock time") in an unspecified timezone.
 *
 *    For example, the timestamp value 0 with an empty timezone string
 *    corresponds to "January 1st 1970, 00h00" in an unknown timezone: there
 *    is not enough information to interpret it as a well-defined physical
 *    point in time.
 *
 *  One consequence is that timestamp values without a timezone cannot
 *  be reliably compared or ordered, since they may have different points of
 *  reference.  In particular, it is *not* possible to interpret an unset
 *  or empty timezone as the same as "UTC".
 *
 *  Conversion between timezones
 *  ----------------------------
 *
 *  If a Timestamp column has a non-empty timezone, changing the timezone
 *  to a different non-empty value is a metadata-only operation:
 *  the timestamp values need not change as their point of reference remains
 *  the same (the Unix epoch).
 *
 *  However, if a Timestamp column has no timezone value, changing it to a
 *  non-empty value requires to think about the desired semantics.
 *  One possibility is to assume that the original timestamp values are
 *  relative to the epoch of the timezone being set; timestamp values should
 *  then adjusted to the Unix epoch (for example, changing the timezone from
 *  empty to "Europe/Paris" would require converting the timestamp values
 *  from "Europe/Paris" to "UTC", which seems counter-intuitive but is
 *  nevertheless correct).
 *
 *  Guidelines for encoding data from external libraries
 *  ----------------------------------------------------
 *
 *  Date & time libraries often have multiple different data types for temporal
 *  data. In order to ease interoperability between different implementations the
 *  Arrow project has some recommendations for encoding these types into a Timestamp
 *  column.
 *
 *  An "instant" represents a physical point in time that has no relevant timezone
 *  (for example, astronomical data). To encode an instant, use a Timestamp with
 *  the timezone string set to "UTC", and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *  A "zoned date-time" represents a physical point in time annotated with an
 *  informative timezone (for example, the timezone in which the data was
 *  recorded).  To encode a zoned date-time, use a Timestamp with the timezone
 *  string set to the name of the timezone, and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *   (There is some ambiguity between an instant and a zoned date-time with the
 *    UTC timezone.  Both of these are stored the same in Arrow.  Typically,
 *    this distinction does not matter.  If it does, then an application should
 *    use custom metadata or an extension type to distinguish between the two cases.)
 *
 *  An "offset date-time" represents a physical point in time combined with an
 *  explicit offset from UTC.  To encode an offset date-time, use a Timestamp
 *  with the timezone string set to the numeric timezone offset string
 *  (e.g. "+03:00"), and make sure the Timestamp values are relative to
 *  the UTC epoch (January 1st 1970, midnight).
 *
 *  A "naive date-time" (also called "local date-time" in some libraries)
 *  represents a wall clock time combined with a calendar date, but with
 *  no indication of how to map this information to a physical point in time.
 *  Naive date-times must be handled with care because of this missing
 *  information, and also because daylight saving time (DST) may make
 *  some values ambiguous or nonexistent. A naive date-time may be
 *  stored as a struct with Date and Time fields. However, it may also be
 *  encoded into a Timestamp column with an empty timezone. The timestamp
 *  values should be computed "as if" the timezone of the date-time values
 *  was UTC; for example, the naive date-time "January 1st 1970, 00h00" would
 *  be encoded as timestamp value 0. */
struct org_apache_arrow_flatbuf_Timestamp_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Timestamp_vec_len(org_apache_arrow_flatbuf_Timestamp_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Timestamp_table_t org_apache_arrow_flatbuf_Timestamp_vec_at(org_apache_arrow_flatbuf_Timestamp_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Timestamp_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Timestamp)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Timestamp, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(0))
/**  The timezone is an optional string indicating the name of a timezone,
 *  one of:
 *
 *  * As used in the Olson timezone database (the "tz database" or
 *    "tzdata"), such as "America/New_York".
 *  * An absolute timezone offset of the form "+XX:XX" or "-XX:XX",
 *    such as "+07:30".
 *
 *  Whether a timezone string is present indicates different semantics about
 *  the data (see above). */
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_Timestamp, timezone, 0)

struct org_apache_arrow_flatbuf_Interval_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Interval_vec_len(org_apache_arrow_flatbuf_Interval_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Interval_table_t org_apache_arrow_flatbuf_Interval_vec_at(org_apache_arrow_flatbuf_Interval_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Interval_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Interval)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Interval, unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, INT16_C(0))

struct org_apache_arrow_flatbuf_Duration_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Duration_vec_len(org_apache_arrow_flatbuf_Duration_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Duration_table_t org_apache_arrow_flatbuf_Duration_vec_at(org_apache_arrow_flatbuf_Duration_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Duration_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Duration)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Duration, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
/**  ----------------------------------------------------------------------
 *  Top-level Type value, enabling extensible type-specific metadata. We can
 *  add new logical types to Type without breaking backwards compatibility */
typedef uint8_t org_apache_arrow_flatbuf_Type_union_type_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Type_union_type_t, 8)
__flatbuffers_define_union(flatbuffers_, org_apache_arrow_flatbuf_Type)
/**  ----------------------------------------------------------------------
 *  user defined key value pairs to add custom metadata to arrow
 *  key namespacing is the responsibility of the user */
#define org_apache_arrow_flatbuf_Type_NONE ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(0))
#define org_apache_arrow_flatbuf_Type_Null ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(1))
#define org_apache_arrow_flatbuf_Type_Int ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(2))
#define org_apache_arrow_flatbuf_Type_FloatingPoint ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(3))
#define org_apache_arrow_flatbuf_Type_Binary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(4))
#define org_apache_arrow_flatbuf_Type_Utf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(5))
#define org_apache_arrow_flatbuf_Type_Bool ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(6))
#define org_apache_arrow_flatbuf_Type_Decimal ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(7))
#define org_apache_arrow_flatbuf_Type_Date ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(8))
#define org_apache_arrow_flatbuf_Type_Time ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(9))
#define org_apache_arrow_flatbuf_Type_Timestamp ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(10))
#define org_apache_arrow_flatbuf_Type_Interval ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(11))
#define org_apache_arrow_flatbuf_Type_List ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(12))
#define org_apache_arrow_flatbuf_Type_Struct_ ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(13))
#define org_apache_arrow_flatbuf_Type_Union ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(14))
#define org_apache_arrow_flatbuf_Type_FixedSizeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(15))
#define org_apache_arrow_flatbuf_Type_FixedSizeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(16))
#define org_apache_arrow_flatbuf_Type_Map ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(17))
#define org_apache_arrow_flatbuf_Type_Duration ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(18))
#define org_apache_arrow_flatbuf_Type_LargeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(19))
#define org_apache_arrow_flatbuf_Type_LargeUtf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(20))
#define org_apache_arrow_flatbuf_Type_LargeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(21))
#define org_apache_arrow_flatbuf_Type_RunEndEncoded ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(22))
#define org_apache_arrow_flatbuf_Type_BinaryView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(23))
#define org_apache_arrow_flatbuf_Type_Utf8View ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(24))
#define org_apache_arrow_flatbuf_Type_ListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(25))
#define org_apache_arrow_flatbuf_Type_LargeListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(26))

static inline const char *org_apache_arrow_flatbuf_Type_type_name(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return "NONE";
    case org_apache_arrow_flatbuf_Type_Null: return "Null";
    case org_apache_arrow_flatbuf_Type_Int: return "Int";
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return "FloatingPoint";
    case org_apache_arrow_flatbuf_Type_Binary: return "Binary";
    case org_apache_arrow_flatbuf_Type_Utf8: return "Utf8";
    case org_apache_arrow_flatbuf_Type_Bool: return "Bool";
    case org_apache_arrow_flatbuf_Type_Decimal: return "Decimal";
    case org_apache_arrow_flatbuf_Type_Date: return "Date";
    case org_apache_arrow_flatbuf_Type_Time: return "Time";
    case org_apache_arrow_flatbuf_Type_Timestamp: return "Timestamp";
    case org_apache_arrow_flatbuf_Type_Interval: return "Interval";
    case org_apache_arrow_flatbuf_Type_List: return "List";
    case org_apache_arrow_flatbuf_Type_Struct_: return "Struct_";
    case org_apache_arrow_flatbuf_Type_Union: return "Union";
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return "FixedSizeBinary";
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return "FixedSizeList";
    case org_apache_arrow_flatbuf_Type_Map: return "Map";
    case org_apache_arrow_flatbuf_Type_Duration: return "Duration";
    case org_apache_arrow_flatbuf_Type_LargeBinary: return "LargeBinary";
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return "LargeUtf8";
    case org_apache_arrow_flatbuf_Type_LargeList: return "LargeList";
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return "RunEndEncoded";
    case org_apache_arrow_flatbuf_Type_BinaryView: return "BinaryView";
    case org_apache_arrow_flatbuf_Type_Utf8View: return "Utf8View";
    case org_apache_arrow_flatbuf_Type_ListView: return "ListView";
    case org_apache_arrow_flatbuf_Type_LargeListView: return "LargeListView";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Type_is_known_type(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return 1;
    case org_apache_arrow_flatbuf_Type_Null: return 1;
    case org_apache_arrow_flatbuf_Type_Int: return 1;
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return 1;
    case org_apache_arrow_flatbuf_Type_Binary: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8: return 1;
    case org_apache_arrow_flatbuf_Type_Bool: return 1;
    case org_apache_arrow_flatbuf_Type_Decimal: return 1;
    case org_apache_arrow_flatbuf_Type_Date: return 1;
    case org_apache_arrow_flatbuf_Type_Time: return 1;
    case org_apache_arrow_flatbuf_Type_Timestamp: return 1;
    case org_apache_arrow_flatbuf_Type_Interval: return 1;
    case org_apache_arrow_flatbuf_Type_List: return 1;
    case org_apache_arrow_flatbuf_Type_Struct_: return 1;
    case org_apache_arrow_flatbuf_Type_Union: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return 1;
    case org_apache_arrow_flatbuf_Type_Map: return 1;
    case org_apache_arrow_flatbuf_Type_Duration: return 1;
    case org_apache_arrow_flatbuf_Type_LargeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return 1;
    case org_apache_arrow_flatbuf_Type_LargeList: return 1;
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return 1;
    case org_apache_arrow_flatbuf_Type_BinaryView: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8View: return 1;
    case org_apache_arrow_flatbuf_Type_ListView: return 1;
    case org_apache_arrow_flatbuf_Type_LargeListView: return 1;
    default: return 0;
    }
}


struct org_apache_arrow_flatbuf_KeyValue_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_KeyValue_vec_len(org_apache_arrow_flatbuf_KeyValue_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_KeyValue_table_t org_apache_arrow_flatbuf_KeyValue_vec_at(org_apache_arrow_flatbuf_KeyValue_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_KeyValue_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_KeyValue)

__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_KeyValue, key, 0)
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_KeyValue, value, 0)

struct org_apache_arrow_flatbuf_DictionaryEncoding_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_len(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_DictionaryEncoding_table_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_DictionaryEncoding)

/**  The known dictionary id in the application where this data is used. In
 *  the file or streaming formats, the dictionary ids are found in the
 *  DictionaryBatch messages */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_DictionaryEncoding, id, flatbuffers_int64, int64_t, INT64_C(0))
/**  The dictionary indices are constrained to be non-negative integers. If
 *  this field is null, the indices must be signed int32. To maximize
 *  cross-language compatibility and performance, implementations are
 *  recommended to prefer signed integer types over unsigned integer types
 *  and to avoid uint64 indices unless they are required by an application. */
__flatbuffers_define_table_field(1, org_apache_arrow_flatbuf_DictionaryEncoding, indexType, org_apache_arrow_flatbuf_Int_table_t, 0)
/**  By default, dictionaries are not ordered, or the order does not have
 *  semantic meaning. In some statistical applications, dictionary-encoding
 *  is used to represent ordered categorical data, and we provide a way to
 *  preserve that metadata here */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_DictionaryEncoding, isOrdered, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_DictionaryEncoding, dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, INT16_C(0))

/**  ----------------------------------------------------------------------
 *  A field represents a named column in a record / row batch or child of a
 *  nested type. */
struct org_apache_arrow_flatbuf_Field_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Field_vec_len(org_apache_arrow_flatbuf_Field_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Field_table_t org_apache_arrow_flatbuf_Field_vec_at(org_apache_arrow_flatbuf_Field_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Field_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Field)

/**  Name is not required (e.g., in a List) */
__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_Field, name, 0)
/**  Whether or not this field can contain nulls. Should be true in general. */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Field, nullable, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
/**  This is the type of the decoded value if the field is dictionary encoded. */
__flatbuffers_define_union_field(flatbuffers_, 3, org_apache_arrow_flatbuf_Field, type, org_apache_arrow_flatbuf_Type, 0)
/**  Present only if the field is dictionary encoded. */
__flatbuffers_define_table_field(4, org_apache_arrow_flatbuf_Field, dictionary, org_apache_arrow_flatbuf_DictionaryEncoding_table_t, 0)
/**  children apply only to nested data types like Struct, List and Union. For
 *  primitive types children will have length 0. */
__flatbuffers_define_vector_field(5, org_apache_arrow_flatbuf_Field, children, org_apache_arrow_flatbuf_Field_vec_t, 0)
/**  User-defined metadata */
__flatbuffers_define_vector_field(6, org_apache_arrow_flatbuf_Field, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)

/**  ----------------------------------------------------------------------
 *  A Schema describes the columns in a row batch */
struct org_apache_arrow_flatbuf_Schema_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Schema_vec_len(org_apache_arrow_flatbuf_Schema_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Schema_table_t org_apache_arrow_flatbuf_Schema_vec_at(org_apache_arrow_flatbuf_Schema_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Schema_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Schema)

/**  endianness of the buffer
 *  it is Little Endian by default
 *  if endianness doesn't match the underlying system then the vectors need to be converted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Schema, endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Schema, fields, org_apache_arrow_flatbuf_Field_vec_t, 0)
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_Schema, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)
/**  Features used in the stream/file. */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_Schema, features, org_apache_arrow_flatbuf_Feature_vec_t, 0)


#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_READER_H */
#ifndef SCHEMA_BUILDER_H
#define SCHEMA_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

#define __org_apache_arrow_flatbuf_MetadataVersion_formal_args , org_apache_arrow_flatbuf_MetadataVersion_enum_t v0
#define __org_apache_arrow_flatbuf_MetadataVersion_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t)
#define __org_apache_arrow_flatbuf_Feature_formal_args , org_apache_arrow_flatbuf_Feature_enum_t v0
#define __org_apache_arrow_flatbuf_Feature_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t)
#define __org_apache_arrow_flatbuf_UnionMode_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0
#define __org_apache_arrow_flatbuf_UnionMode_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t)
#define __org_apache_arrow_flatbuf_Precision_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_Precision_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t)
#define __org_apache_arrow_flatbuf_DateUnit_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_DateUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t)
#define __org_apache_arrow_flatbuf_TimeUnit_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_TimeUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t)
#define __org_apache_arrow_flatbuf_IntervalUnit_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_IntervalUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t)
#define __org_apache_arrow_flatbuf_DictionaryKind_formal_args , org_apache_arrow_flatbuf_DictionaryKind_enum_t v0
#define __org_apache_arrow_flatbuf_DictionaryKind_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t)
#define __org_apache_arrow_flatbuf_Endianness_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0
#define __org_apache_arrow_flatbuf_Endianness_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t)

#define __org_apache_arrow_flatbuf_Buffer_formal_args , int64_t v0, int64_t v1
#define __org_apache_arrow_flatbuf_Buffer_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ p->offset = v0; p->length = v1;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ p->offset = p2->offset; p->length = p2->length;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_to_pe(&p->offset, v0); flatbuffers_int64_assign_to_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_to_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_to_pe(&p->length, &p2->length);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_from_pe(&p->offset, v0); flatbuffers_int64_assign_from_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_from_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_from_pe(&p->length, &p2->length);
  return p; }
__flatbuffers_build_struct(flatbuffers_, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_Buffer_file_identifier, org_apache_arrow_flatbuf_Buffer_type_identifier)
__flatbuffers_define_fixed_array_primitives(flatbuffers_, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t)

typedef flatbuffers_union_ref_t org_apache_arrow_flatbuf_Type_union_ref_t;
typedef flatbuffers_union_vec_ref_t org_apache_arrow_flatbuf_Type_union_vec_ref_t;
static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t t);

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Null_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Null_ref_t;
static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Null, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Struct__required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Struct__ref_t;
static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Struct_, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_List_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_List_ref_t;
static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_List, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeList_ref_t;
static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeList, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_ListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_ListView_ref_t;
static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_ListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeListView_ref_t;
static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeList_ref_t;
static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Map_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Map_ref_t;
static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Map, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Union_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Union_ref_t;
static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Union, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Int_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Int_ref_t;
static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Int, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FloatingPoint_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FloatingPoint_ref_t;
static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8_ref_t;
static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Binary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Binary_ref_t;
static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Binary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeUtf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeUtf8_ref_t;
static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeBinary_ref_t;
static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8View_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8View_ref_t;
static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_BinaryView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_BinaryView_ref_t;
static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_ref_t;
static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Bool_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Bool_ref_t;
static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Bool, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_RunEndEncoded_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_RunEndEncoded_ref_t;
static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Decimal_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Decimal_ref_t;
static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Decimal, 3)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Date_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Date_ref_t;
static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Date, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Time_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Time_ref_t;
static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Time, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Timestamp_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Timestamp_ref_t;
static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Interval_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Interval_ref_t;
static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Interval, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Duration_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Duration_ref_t;
static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Duration, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_KeyValue_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_KeyValue_ref_t;
static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_DictionaryEncoding_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_ref_t;
static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, 4)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Field_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Field_ref_t;
static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Field, 7)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Schema_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Schema_ref_t;
static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Schema, 4)

#define __org_apache_arrow_flatbuf_Null_formal_args
#define __org_apache_arrow_flatbuf_Null_call_args
static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Null, org_apache_arrow_flatbuf_Null_file_identifier, org_apache_arrow_flatbuf_Null_type_identifier)

#define __org_apache_arrow_flatbuf_Struct__formal_args
#define __org_apache_arrow_flatbuf_Struct__call_args
static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Struct_, org_apache_arrow_flatbuf_Struct__file_identifier, org_apache_arrow_flatbuf_Struct__type_identifier)

#define __org_apache_arrow_flatbuf_List_formal_args
#define __org_apache_arrow_flatbuf_List_call_args
static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_List, org_apache_arrow_flatbuf_List_file_identifier, org_apache_arrow_flatbuf_List_type_identifier)

#define __org_apache_arrow_flatbuf_LargeList_formal_args
#define __org_apache_arrow_flatbuf_LargeList_call_args
static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeList, org_apache_arrow_flatbuf_LargeList_file_identifier, org_apache_arrow_flatbuf_LargeList_type_identifier)

#define __org_apache_arrow_flatbuf_ListView_formal_args
#define __org_apache_arrow_flatbuf_ListView_call_args
static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_ListView, org_apache_arrow_flatbuf_ListView_file_identifier, org_apache_arrow_flatbuf_ListView_type_identifier)

#define __org_apache_arrow_flatbuf_LargeListView_formal_args
#define __org_apache_arrow_flatbuf_LargeListView_call_args
static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, org_apache_arrow_flatbuf_LargeListView_file_identifier, org_apache_arrow_flatbuf_LargeListView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeList_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeList_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList_file_identifier, org_apache_arrow_flatbuf_FixedSizeList_type_identifier)

#define __org_apache_arrow_flatbuf_Map_formal_args , flatbuffers_bool_t v0
#define __org_apache_arrow_flatbuf_Map_call_args , v0
static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Map, org_apache_arrow_flatbuf_Map_file_identifier, org_apache_arrow_flatbuf_Map_type_identifier)

#define __org_apache_arrow_flatbuf_Union_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0, flatbuffers_int32_vec_ref_t v1
#define __org_apache_arrow_flatbuf_Union_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Union, org_apache_arrow_flatbuf_Union_file_identifier, org_apache_arrow_flatbuf_Union_type_identifier)

#define __org_apache_arrow_flatbuf_Int_formal_args , int32_t v0, flatbuffers_bool_t v1
#define __org_apache_arrow_flatbuf_Int_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_Int_file_identifier, org_apache_arrow_flatbuf_Int_type_identifier)

#define __org_apache_arrow_flatbuf_FloatingPoint_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_FloatingPoint_call_args , v0
static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint_file_identifier, org_apache_arrow_flatbuf_FloatingPoint_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8_formal_args
#define __org_apache_arrow_flatbuf_Utf8_call_args
static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8, org_apache_arrow_flatbuf_Utf8_file_identifier, org_apache_arrow_flatbuf_Utf8_type_identifier)

#define __org_apache_arrow_flatbuf_Binary_formal_args
#define __org_apache_arrow_flatbuf_Binary_call_args
static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Binary, org_apache_arrow_flatbuf_Binary_file_identifier, org_apache_arrow_flatbuf_Binary_type_identifier)

#define __org_apache_arrow_flatbuf_LargeUtf8_formal_args
#define __org_apache_arrow_flatbuf_LargeUtf8_call_args
static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8_file_identifier, org_apache_arrow_flatbuf_LargeUtf8_type_identifier)

#define __org_apache_arrow_flatbuf_LargeBinary_formal_args
#define __org_apache_arrow_flatbuf_LargeBinary_call_args
static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, org_apache_arrow_flatbuf_LargeBinary_file_identifier, org_apache_arrow_flatbuf_LargeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8View_formal_args
#define __org_apache_arrow_flatbuf_Utf8View_call_args
static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, org_apache_arrow_flatbuf_Utf8View_file_identifier, org_apache_arrow_flatbuf_Utf8View_type_identifier)

#define __org_apache_arrow_flatbuf_BinaryView_formal_args
#define __org_apache_arrow_flatbuf_BinaryView_call_args
static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, org_apache_arrow_flatbuf_BinaryView_file_identifier, org_apache_arrow_flatbuf_BinaryView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeBinary_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Bool_formal_args
#define __org_apache_arrow_flatbuf_Bool_call_args
static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Bool, org_apache_arrow_flatbuf_Bool_file_identifier, org_apache_arrow_flatbuf_Bool_type_identifier)

#define __org_apache_arrow_flatbuf_RunEndEncoded_formal_args
#define __org_apache_arrow_flatbuf_RunEndEncoded_call_args
static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded_file_identifier, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier)

#define __org_apache_arrow_flatbuf_Decimal_formal_args , int32_t v0, int32_t v1, int32_t v2
#define __org_apache_arrow_flatbuf_Decimal_call_args , v0, v1, v2
static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Decimal, org_apache_arrow_flatbuf_Decimal_file_identifier, org_apache_arrow_flatbuf_Decimal_type_identifier)

#define __org_apache_arrow_flatbuf_Date_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Date_call_args , v0
static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Date, org_apache_arrow_flatbuf_Date_file_identifier, org_apache_arrow_flatbuf_Date_type_identifier)

#define __org_apache_arrow_flatbuf_Time_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, int32_t v1
#define __org_apache_arrow_flatbuf_Time_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Time, org_apache_arrow_flatbuf_Time_file_identifier, org_apache_arrow_flatbuf_Time_type_identifier)

#define __org_apache_arrow_flatbuf_Timestamp_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_Timestamp_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, org_apache_arrow_flatbuf_Timestamp_file_identifier, org_apache_arrow_flatbuf_Timestamp_type_identifier)

#define __org_apache_arrow_flatbuf_Interval_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Interval_call_args , v0
static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Interval, org_apache_arrow_flatbuf_Interval_file_identifier, org_apache_arrow_flatbuf_Interval_type_identifier)

#define __org_apache_arrow_flatbuf_Duration_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Duration_call_args , v0
static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Duration, org_apache_arrow_flatbuf_Duration_file_identifier, org_apache_arrow_flatbuf_Duration_type_identifier)

#define __org_apache_arrow_flatbuf_KeyValue_formal_args , flatbuffers_string_ref_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_KeyValue_call_args , v0, v1
static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_KeyValue_file_identifier, org_apache_arrow_flatbuf_KeyValue_type_identifier)

#define __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args , int64_t v0, org_apache_arrow_flatbuf_Int_ref_t v1, flatbuffers_bool_t v2, org_apache_arrow_flatbuf_DictionaryKind_enum_t v3
#define __org_apache_arrow_flatbuf_DictionaryEncoding_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier)

#define __org_apache_arrow_flatbuf_Field_formal_args ,\
  flatbuffers_string_ref_t v0, flatbuffers_bool_t v1, org_apache_arrow_flatbuf_Type_union_ref_t v3, org_apache_arrow_flatbuf_DictionaryEncoding_ref_t v4, org_apache_arrow_flatbuf_Field_vec_ref_t v5, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v6
#define __org_apache_arrow_flatbuf_Field_call_args ,\
  v0, v1, v3, v4, v5, v6
static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field_file_identifier, org_apache_arrow_flatbuf_Field_type_identifier)

#define __org_apache_arrow_flatbuf_Schema_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0, org_apache_arrow_flatbuf_Field_vec_ref_t v1, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v2, org_apache_arrow_flatbuf_Feature_vec_ref_t v3
#define __org_apache_arrow_flatbuf_Schema_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Schema, org_apache_arrow_flatbuf_Schema_file_identifier, org_apache_arrow_flatbuf_Schema_type_identifier)

static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_NONE(void)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_NONE; uref.value = 0; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Null; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Int; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FloatingPoint; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Binary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Bool; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Decimal; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Date; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Time; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Timestamp; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Interval; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_List; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Struct_; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Union; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Map; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Duration; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeUtf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_RunEndEncoded; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_BinaryView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8View; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_ListView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeListView; uref.value = ref; return uref; }
__flatbuffers_build_union_vector(flatbuffers_, org_apache_arrow_flatbuf_Type)

static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t u)
{
    switch (u.type) {
    case 1: return org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_clone(B, (org_apache_arrow_flatbuf_Null_table_t)u.value));
    case 2: return org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_clone(B, (org_apache_arrow_flatbuf_Int_table_t)u.value));
    case 3: return org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_clone(B, (org_apache_arrow_flatbuf_FloatingPoint_table_t)u.value));
    case 4: return org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_clone(B, (org_apache_arrow_flatbuf_Binary_table_t)u.value));
    case 5: return org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_clone(B, (org_apache_arrow_flatbuf_Utf8_table_t)u.value));
    case 6: return org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_clone(B, (org_apache_arrow_flatbuf_Bool_table_t)u.value));
    case 7: return org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_clone(B, (org_apache_arrow_flatbuf_Decimal_table_t)u.value));
    case 8: return org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_clone(B, (org_apache_arrow_flatbuf_Date_table_t)u.value));
    case 9: return org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_clone(B, (org_apache_arrow_flatbuf_Time_table_t)u.value));
    case 10: return org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_clone(B, (org_apache_arrow_flatbuf_Timestamp_table_t)u.value));
    case 11: return org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_clone(B, (org_apache_arrow_flatbuf_Interval_table_t)u.value));
    case 12: return org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_clone(B, (org_apache_arrow_flatbuf_List_table_t)u.value));
    case 13: return org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__clone(B, (org_apache_arrow_flatbuf_Struct__table_t)u.value));
    case 14: return org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_clone(B, (org_apache_arrow_flatbuf_Union_table_t)u.value));
    case 15: return org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_clone(B, (org_apache_arrow_flatbuf_FixedSizeBinary_table_t)u.value));
    case 16: return org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_clone(B, (org_apache_arrow_flatbuf_FixedSizeList_table_t)u.value));
    case 17: return org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_clone(B, (org_apache_arrow_flatbuf_Map_table_t)u.value));
    case 18: return org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_clone(B, (org_apache_arrow_flatbuf_Duration_table_t)u.value));
    case 19: return org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_clone(B, (org_apache_arrow_flatbuf_LargeBinary_table_t)u.value));
    case 20: return org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_clone(B, (org_apache_arrow_flatbuf_LargeUtf8_table_t)u.value));
    case 21: return org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_clone(B, (org_apache_arrow_flatbuf_LargeList_table_t)u.value));
    case 22: return org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_clone(B, (org_apache_arrow_flatbuf_RunEndEncoded_table_t)u.value));
    case 23: return org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_clone(B, (org_apache_arrow_flatbuf_BinaryView_table_t)u.value));
    case 24: return org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_clone(B, (org_apache_arrow_flatbuf_Utf8View_table_t)u.value));
    case 25: return org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_clone(B, (org_apache_arrow_flatbuf_ListView_table_t)u.value));
    case 26: return org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_clone(B, (org_apache_arrow_flatbuf_LargeListView_table_t)u.value));
    default: return org_apache_arrow_flatbuf_Type_as_NONE();
    }
}


static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args)
{
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Null_end(B);
}

static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Null_end(B));
}


static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args)
{
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Struct__end(B);
}

static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Struct__end(B));
}


static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args)
{
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_List_end(B);
}

static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_List_end(B));
}


static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeList_end(B);
}

static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeList_end(B));
}


static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args)
{
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_ListView_end(B);
}

static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_ListView_end(B));
}


static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeListView_end(B);
}

static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeListView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList_listSize, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeList)

static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeList_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeList_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Map_keysSorted, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Map)

static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args)
{
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Map_end(B);
}

static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Map_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Union_mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Union)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Union_typeIds, flatbuffers_int32, int32_t, org_apache_arrow_flatbuf_Union)

static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args)
{
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_add(B, v1)
        || org_apache_arrow_flatbuf_Union_mode_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Union_end(B);
}

static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_pick(B, t)
        || org_apache_arrow_flatbuf_Union_mode_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Union_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Int_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Int)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Int_is_signed, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Int)

static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args)
{
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_add(B, v0)
        || org_apache_arrow_flatbuf_Int_is_signed_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Int_end(B);
}

static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Int_is_signed_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Int_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint_precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_FloatingPoint)

static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args)
{
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FloatingPoint_end(B);
}

static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FloatingPoint_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8_end(B);
}

static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8_end(B));
}


static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args)
{
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Binary_end(B);
}

static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Binary_end(B));
}


static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeUtf8_end(B);
}

static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeUtf8_end(B));
}


static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeBinary_end(B);
}

static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8View_end(B);
}

static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8View_end(B));
}


static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args)
{
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_BinaryView_end(B);
}

static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_BinaryView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeBinary)

static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeBinary_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args)
{
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Bool_end(B);
}

static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Bool_end(B));
}


static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args)
{
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_RunEndEncoded_end(B);
}

static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_RunEndEncoded_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Decimal_precision, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Decimal_scale, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_Decimal_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(128), org_apache_arrow_flatbuf_Decimal)

static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args)
{
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_add(B, v0)
        || org_apache_arrow_flatbuf_Decimal_scale_add(B, v1)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Decimal_end(B);
}

static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_scale_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Decimal_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Date_unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Date)

static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args)
{
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Date_end(B);
}

static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Date_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Time_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Time)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Time_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(32), org_apache_arrow_flatbuf_Time)

static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args)
{
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_add(B, v1)
        || org_apache_arrow_flatbuf_Time_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Time_end(B);
}

static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Time_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Time_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_timezone, org_apache_arrow_flatbuf_Timestamp)

static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args)
{
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_add(B, v1)
        || org_apache_arrow_flatbuf_Timestamp_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Timestamp_end(B);
}

static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_pick(B, t)
        || org_apache_arrow_flatbuf_Timestamp_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Timestamp_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Interval_unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Interval)

static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args)
{
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Interval_end(B);
}

static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Interval_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Duration_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Duration)

static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args)
{
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Duration_end(B);
}

static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Duration_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_key, org_apache_arrow_flatbuf_KeyValue)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_value, org_apache_arrow_flatbuf_KeyValue)

static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args)
{
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_add(B, v0)
        || org_apache_arrow_flatbuf_KeyValue_value_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_KeyValue_end(B);
}

static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_pick(B, t)
        || org_apache_arrow_flatbuf_KeyValue_value_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_KeyValue_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_id, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_table_field(1, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_indexType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)

static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args)
{
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_add(B, v0)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_add(B, v1)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_add(B, v3)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_DictionaryEncoding_end(B);
}

static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_DictionaryEncoding_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_Field_name, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Field_nullable, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_field(3, flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_field(4, flatbuffers_, org_apache_arrow_flatbuf_Field_dictionary, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(5, flatbuffers_, org_apache_arrow_flatbuf_Field_children, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(6, flatbuffers_, org_apache_arrow_flatbuf_Field_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Field)

static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args)
{
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_add(B, v0)
        || org_apache_arrow_flatbuf_Field_type_add_value(B, v3)
        || org_apache_arrow_flatbuf_Field_dictionary_add(B, v4)
        || org_apache_arrow_flatbuf_Field_children_add(B, v5)
        || org_apache_arrow_flatbuf_Field_custom_metadata_add(B, v6)
        || org_apache_arrow_flatbuf_Field_nullable_add(B, v1)
        || org_apache_arrow_flatbuf_Field_type_add_type(B, v3.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Field_end(B);
}

static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_pick(B, t)
        || org_apache_arrow_flatbuf_Field_type_pick(B, t)
        || org_apache_arrow_flatbuf_Field_dictionary_pick(B, t)
        || org_apache_arrow_flatbuf_Field_children_pick(B, t)
        || org_apache_arrow_flatbuf_Field_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Field_nullable_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Field_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Schema_endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Schema_fields, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_Schema_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_Schema_features, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, org_apache_arrow_flatbuf_Schema)

static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args)
{
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_add(B, v1)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_add(B, v2)
        || org_apache_arrow_flatbuf_Schema_features_add(B, v3)
        || org_apache_arrow_flatbuf_Schema_endianness_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Schema_end(B);
}

static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_features_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_endianness_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Schema_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_BUILDER_H */
#ifndef SCHEMA_VERIFIER_H
#define SCHEMA_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_Type_union_verifier(flatcc_union_verifier_descriptor_t *ud)
{
    switch (ud->type) {
    case 1: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Null_verify_table); /* Null */
    case 2: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Int_verify_table); /* Int */
    case 3: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FloatingPoint_verify_table); /* FloatingPoint */
    case 4: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Binary_verify_table); /* Binary */
    case 5: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8_verify_table); /* Utf8 */
    case 6: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Bool_verify_table); /* Bool */
    case 7: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Decimal_verify_table); /* Decimal */
    case 8: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Date_verify_table); /* Date */
    case 9: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Time_verify_table); /* Time */
    case 10: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Timestamp_verify_table); /* Timestamp */
    case 11: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Interval_verify_table); /* Interval */
    case 12: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_List_verify_table); /* List */
    case 13: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Struct__verify_table); /* Struct_ */
    case 14: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Union_verify_table); /* Union */
    case 15: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeBinary_verify_table); /* FixedSizeBinary */
    case 16: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeList_verify_table); /* FixedSizeList */
    case 17: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Map_verify_table); /* Map */
    case 18: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Duration_verify_table); /* Duration */
    case 19: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeBinary_verify_table); /* LargeBinary */
    case 20: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeUtf8_verify_table); /* LargeUtf8 */
    case 21: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeList_verify_table); /* LargeList */
    case 22: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_RunEndEncoded_verify_table); /* RunEndEncoded */
    case 23: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_BinaryView_verify_table); /* BinaryView */
    case 24: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8View_verify_table); /* Utf8View */
    case 25: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_ListView_verify_table); /* ListView */
    case 26: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeListView_verify_table); /* LargeListView */
    default: return flatcc_verify_ok;
    }
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, fid, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, fid, 16, 8);
}

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* listSize */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 1, 1) /* keysSorted */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* mode */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 0, 4, 4, INT64_C(1073741823)) /* typeIds */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* bitWidth */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* is_signed */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* precision */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* byteWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* precision */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* scale */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* timezone */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* key */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* value */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* id */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 1, 0, &org_apache_arrow_flatbuf_Int_verify_table) /* indexType */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 1, 1) /* isOrdered */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 2, 2) /* dictionaryKind */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* name */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* nullable */)) return ret;
    if ((ret = flatcc_verify_union_field(td, 3, 0, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 4, 0, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table) /* dictionary */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 5, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* children */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 6, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* endianness */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 1, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* fields */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 0, 8, 8, INT64_C(536870911)) /* features */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_VERIFIER_H */
#ifndef TENSOR_READER_H
#define TENSOR_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif


typedef const struct org_apache_arrow_flatbuf_TensorDim_table *org_apache_arrow_flatbuf_TensorDim_table_t;
typedef struct org_apache_arrow_flatbuf_TensorDim_table *org_apache_arrow_flatbuf_TensorDim_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_TensorDim_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_TensorDim_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Tensor_table *org_apache_arrow_flatbuf_Tensor_table_t;
typedef struct org_apache_arrow_flatbuf_Tensor_table *org_apache_arrow_flatbuf_Tensor_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Tensor_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Tensor_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_TensorDim_file_identifier
#define org_apache_arrow_flatbuf_TensorDim_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_TensorDim_file_identifier */
#ifndef org_apache_arrow_flatbuf_TensorDim_identifier
#define org_apache_arrow_flatbuf_TensorDim_identifier 0
#endif
#define org_apache_arrow_flatbuf_TensorDim_type_hash ((flatbuffers_thash_t)0xbc6d7b25)
#define org_apache_arrow_flatbuf_TensorDim_type_identifier "\x25\x7b\x6d\xbc"
#ifndef org_apache_arrow_flatbuf_TensorDim_file_extension
#define org_apache_arrow_flatbuf_TensorDim_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Tensor_file_identifier
#define org_apache_arrow_flatbuf_Tensor_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Tensor_file_identifier */
#ifndef org_apache_arrow_flatbuf_Tensor_identifier
#define org_apache_arrow_flatbuf_Tensor_identifier 0
#endif
#define org_apache_arrow_flatbuf_Tensor_type_hash ((flatbuffers_thash_t)0x1764df19)
#define org_apache_arrow_flatbuf_Tensor_type_identifier "\x19\xdf\x64\x17"
#ifndef org_apache_arrow_flatbuf_Tensor_file_extension
#define org_apache_arrow_flatbuf_Tensor_file_extension "bin"
#endif



/**  ----------------------------------------------------------------------
 *  Data structures for dense tensors
 *  Shape data for a single axis in a tensor */
struct org_apache_arrow_flatbuf_TensorDim_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_TensorDim_vec_len(org_apache_arrow_flatbuf_TensorDim_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_TensorDim_table_t org_apache_arrow_flatbuf_TensorDim_vec_at(org_apache_arrow_flatbuf_TensorDim_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_TensorDim_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_TensorDim)

/**  Length of dimension */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_TensorDim, size, flatbuffers_int64, int64_t, INT64_C(0))
/**  Name of the dimension, optional */
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_TensorDim, name, 0)

struct org_apache_arrow_flatbuf_Tensor_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Tensor_vec_len(org_apache_arrow_flatbuf_Tensor_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Tensor_table_t org_apache_arrow_flatbuf_Tensor_vec_at(org_apache_arrow_flatbuf_Tensor_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Tensor_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Tensor)

/**  The type of data contained in a value cell. Currently only fixed-width
 *  value types are supported, no strings or nested types */
__flatbuffers_define_union_field(flatbuffers_, 1, org_apache_arrow_flatbuf_Tensor, type, org_apache_arrow_flatbuf_Type, 1)
/**  The dimensions of the tensor, optionally named */
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_Tensor, shape, org_apache_arrow_flatbuf_TensorDim_vec_t, 1)
/**  Non-negative byte offsets to advance one value cell along each dimension
 *  If omitted, default to row-major order (C-like). */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_Tensor, strides, flatbuffers_int64_vec_t, 0)
/**  The location and size of the tensor's data */
__flatbuffers_define_struct_field(4, org_apache_arrow_flatbuf_Tensor, data, org_apache_arrow_flatbuf_Buffer_struct_t, 1)


#include "flatcc/flatcc_epilogue.h"
#endif /* TENSOR_READER_H */
#ifndef TENSOR_BUILDER_H
#define TENSOR_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef TENSOR_READER_H
#include "Tensor_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#ifndef SCHEMA_BUILDER_H
#include "Schema_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_TensorDim_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_TensorDim_ref_t;
static org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_TensorDim_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_TensorDim, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Tensor_required[] = { 1, 2, 4, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Tensor_ref_t;
static org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Tensor_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Tensor, 5)

#define __org_apache_arrow_flatbuf_TensorDim_formal_args , int64_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_TensorDim_call_args , v0, v1
static inline org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_TensorDim_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_TensorDim, org_apache_arrow_flatbuf_TensorDim_file_identifier, org_apache_arrow_flatbuf_TensorDim_type_identifier)

#define __org_apache_arrow_flatbuf_Tensor_formal_args , org_apache_arrow_flatbuf_Type_union_ref_t v1, org_apache_arrow_flatbuf_TensorDim_vec_ref_t v2, flatbuffers_int64_vec_ref_t v3, org_apache_arrow_flatbuf_Buffer_t *v4
#define __org_apache_arrow_flatbuf_Tensor_call_args , v1, v2, v3, v4
static inline org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Tensor_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Tensor, org_apache_arrow_flatbuf_Tensor_file_identifier, org_apache_arrow_flatbuf_Tensor_type_identifier)

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_TensorDim_size, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_TensorDim)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_TensorDim_name, org_apache_arrow_flatbuf_TensorDim)

static inline org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_TensorDim_formal_args)
{
    if (org_apache_arrow_flatbuf_TensorDim_start(B)
        || org_apache_arrow_flatbuf_TensorDim_size_add(B, v0)
        || org_apache_arrow_flatbuf_TensorDim_name_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_TensorDim_end(B);
}

static org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_TensorDim_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_TensorDim_start(B)
        || org_apache_arrow_flatbuf_TensorDim_size_pick(B, t)
        || org_apache_arrow_flatbuf_TensorDim_name_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_TensorDim_end(B));
}

__flatbuffers_build_union_field(1, flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_Tensor_shape, org_apache_arrow_flatbuf_TensorDim, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_Tensor_strides, flatbuffers_int64, int64_t, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_struct_field(4, flatbuffers_, org_apache_arrow_flatbuf_Tensor_data, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_Tensor)

static inline org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Tensor_formal_args)
{
    if (org_apache_arrow_flatbuf_Tensor_start(B)
        || org_apache_arrow_flatbuf_Tensor_data_add(B, v4)
        || org_apache_arrow_flatbuf_Tensor_type_add_value(B, v1)
        || org_apache_arrow_flatbuf_Tensor_shape_add(B, v2)
        || org_apache_arrow_flatbuf_Tensor_strides_add(B, v3)
        || org_apache_arrow_flatbuf_Tensor_type_add_type(B, v1.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Tensor_end(B);
}

static org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Tensor_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Tensor_start(B)
        || org_apache_arrow_flatbuf_Tensor_data_pick(B, t)
        || org_apache_arrow_flatbuf_Tensor_type_pick(B, t)
        || org_apache_arrow_flatbuf_Tensor_shape_pick(B, t)
        || org_apache_arrow_flatbuf_Tensor_strides_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Tensor_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* TENSOR_BUILDER_H */
#ifndef TENSOR_VERIFIER_H
#define TENSOR_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef TENSOR_READER_H
#include "Tensor_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#ifndef SCHEMA_VERIFIER_H
#include "Schema_verifier.h"
#endif
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_TensorDim_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Tensor_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_TensorDim_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* size */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* name */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_type_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_type_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static int org_apache_arrow_flatbuf_Tensor_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_union_field(td, 1, 1, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 1, &org_apache_arrow_flatbuf_TensorDim_verify_table) /* shape */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 0, 8, 8, INT64_C(536870911)) /* strides */)) return ret;
    if ((ret = flatcc_verify_field(td, 4, 16, 8) /* data */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_type_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_type_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* TENSOR_VERIFIER_H */
#ifndef SPARSETENSOR_READER_H
#define SPARSETENSOR_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#ifndef TENSOR_READER_H
#include "Tensor_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif


typedef const struct org_apache_arrow_flatbuf_SparseTensorIndexCOO_table *org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t;
typedef struct org_apache_arrow_flatbuf_SparseTensorIndexCOO_table *org_apache_arrow_flatbuf_SparseTensorIndexCOO_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensorIndexCOO_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table *org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t;
typedef struct org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table *org_apache_arrow_flatbuf_SparseMatrixIndexCSX_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseMatrixIndexCSX_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_SparseTensorIndexCSF_table *org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t;
typedef struct org_apache_arrow_flatbuf_SparseTensorIndexCSF_table *org_apache_arrow_flatbuf_SparseTensorIndexCSF_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensorIndexCSF_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_SparseTensor_table *org_apache_arrow_flatbuf_SparseTensor_table_t;
typedef struct org_apache_arrow_flatbuf_SparseTensor_table *org_apache_arrow_flatbuf_SparseTensor_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensor_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_SparseTensor_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_identifier
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_identifier */
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCOO_identifier
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_identifier 0
#endif
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_hash ((flatbuffers_thash_t)0x3b31385a)
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_identifier "\x5a\x38\x31\x3b"
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_extension
#define org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_identifier
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_identifier */
#ifndef org_apache_arrow_flatbuf_SparseMatrixIndexCSX_identifier
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_identifier 0
#endif
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_hash ((flatbuffers_thash_t)0xec57ea87)
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_identifier "\x87\xea\x57\xec"
#ifndef org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_extension
#define org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_identifier
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_identifier */
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCSF_identifier
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_identifier 0
#endif
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_hash ((flatbuffers_thash_t)0xf44edda9)
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_identifier "\xa9\xdd\x4e\xf4"
#ifndef org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_extension
#define org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_SparseTensor_file_identifier
#define org_apache_arrow_flatbuf_SparseTensor_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_SparseTensor_file_identifier */
#ifndef org_apache_arrow_flatbuf_SparseTensor_identifier
#define org_apache_arrow_flatbuf_SparseTensor_identifier 0
#endif
#define org_apache_arrow_flatbuf_SparseTensor_type_hash ((flatbuffers_thash_t)0xae6f7239)
#define org_apache_arrow_flatbuf_SparseTensor_type_identifier "\x39\x72\x6f\xae"
#ifndef org_apache_arrow_flatbuf_SparseTensor_file_extension
#define org_apache_arrow_flatbuf_SparseTensor_file_extension "bin"
#endif

typedef int16_t org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_SparseMatrixCompressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t, 16)
#define org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Row ((org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Column ((org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_name(org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Row: return "Row";
    case org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Column: return "Column";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_is_known_value(org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Row: return 1;
    case org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_Column: return 1;
    default: return 0;
    }
}



/**  ----------------------------------------------------------------------
 *  EXPERIMENTAL: Data structures for sparse tensors
 *  Coordinate (COO) format of sparse tensor index.
 *
 *  COO's index list is represented as an NxM matrix,
 *  where N is the number of non-zero values,
 *  and M is the number of dimensions of a sparse tensor.
 *
 *  indicesBuffer stores the location and size of the data of these indices
 *  matrix.  The value type and the stride of the indices matrix is
 *  specified in indicesType and indicesStrides fields.
 *
 *  For example, let X be a 2x3x4x5 tensor, and it has the following
 *  6 non-zero values:
 *  ```text
 *    X[0, 1, 2, 0] := 1
 *    X[1, 1, 2, 3] := 2
 *    X[0, 2, 1, 0] := 3
 *    X[0, 1, 3, 0] := 4
 *    X[0, 1, 2, 1] := 5
 *    X[1, 2, 0, 4] := 6
 *  ```
 *  In COO format, the index matrix of X is the following 4x6 matrix:
 *  ```text
 *    [[0, 0, 0, 0, 1, 1],
 *     [1, 1, 1, 2, 1, 2],
 *     [2, 2, 3, 1, 2, 0],
 *     [0, 1, 0, 0, 3, 4]]
 *  ```
 *  When isCanonical is true, the indices are sorted in lexicographical order
 *  (row-major order), and it does not have duplicated entries.  Otherwise,
 *  the indices may not be sorted, or may have duplicated entries. */
struct org_apache_arrow_flatbuf_SparseTensorIndexCOO_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_len(org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_at(org_apache_arrow_flatbuf_SparseTensorIndexCOO_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_SparseTensorIndexCOO)

/**  The type of values in indicesBuffer */
__flatbuffers_define_table_field(0, org_apache_arrow_flatbuf_SparseTensorIndexCOO, indicesType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  Non-negative byte offsets to advance one value cell along each dimension
 *  If omitted, default to row-major order (C-like). */
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_SparseTensorIndexCOO, indicesStrides, flatbuffers_int64_vec_t, 0)
/**  The location and size of the indices matrix's data */
__flatbuffers_define_struct_field(2, org_apache_arrow_flatbuf_SparseTensorIndexCOO, indicesBuffer, org_apache_arrow_flatbuf_Buffer_struct_t, 1)
/**  This flag is true if and only if the indices matrix is sorted in
 *  row-major order, and does not have duplicated entries.
 *  This sort order is the same as of Tensorflow's SparseTensor,
 *  but it is inverse order of SciPy's canonical coo_matrix
 *  (SciPy employs column-major order for its coo_matrix). */
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_SparseTensorIndexCOO, isCanonical, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

/**  Compressed Sparse format, that is matrix-specific. */
struct org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_len(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_at(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_SparseMatrixIndexCSX)

/**  Which axis, row or column, is compressed */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, compressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t, INT16_C(0))
/**  The type of values in indptrBuffer */
__flatbuffers_define_table_field(1, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, indptrType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  indptrBuffer stores the location and size of indptr array that
 *  represents the range of the rows.
 *  The i-th row spans from `indptr[i]` to `indptr[i+1]` in the data.
 *  The length of this array is 1 + (the number of rows), and the type
 *  of index value is long.
 *
 *  For example, let X be the following 6x4 matrix:
 *  ```text
 *    X := [[0, 1, 2, 0],
 *          [0, 0, 3, 0],
 *          [0, 4, 0, 5],
 *          [0, 0, 0, 0],
 *          [6, 0, 7, 8],
 *          [0, 9, 0, 0]].
 *  ```
 *  The array of non-zero values in X is:
 *  ```text
 *    values(X) = [1, 2, 3, 4, 5, 6, 7, 8, 9].
 *  ```
 *  And the indptr of X is:
 *  ```text
 *    indptr(X) = [0, 2, 3, 5, 5, 8, 10].
 *  ``` */
__flatbuffers_define_struct_field(2, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, indptrBuffer, org_apache_arrow_flatbuf_Buffer_struct_t, 1)
/**  The type of values in indicesBuffer */
__flatbuffers_define_table_field(3, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, indicesType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  indicesBuffer stores the location and size of the array that
 *  contains the column indices of the corresponding non-zero values.
 *  The type of index value is long.
 *
 *  For example, the indices of the above X are:
 *  ```text
 *    indices(X) = [1, 2, 2, 1, 3, 0, 2, 3, 1].
 *  ```
 *  Note that the indices are sorted in lexicographical order for each row. */
__flatbuffers_define_struct_field(4, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, indicesBuffer, org_apache_arrow_flatbuf_Buffer_struct_t, 1)

/**  Compressed Sparse Fiber (CSF) sparse tensor index. */
struct org_apache_arrow_flatbuf_SparseTensorIndexCSF_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_len(org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_at(org_apache_arrow_flatbuf_SparseTensorIndexCSF_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_SparseTensorIndexCSF)

/**  CSF is a generalization of compressed sparse row (CSR) index.
 *  See [smith2017knl](http://shaden.io/pub-files/smith2017knl.pdf)
 *
 *  CSF index recursively compresses each dimension of a tensor into a set
 *  of prefix trees. Each path from a root to leaf forms one tensor
 *  non-zero index. CSF is implemented with two arrays of buffers and one
 *  array of integers.
 *
 *  For example, let X be a 2x3x4x5 tensor and let it have the following
 *  8 non-zero values:
 *  ```text
 *    X[0, 0, 0, 1] := 1
 *    X[0, 0, 0, 2] := 2
 *    X[0, 1, 0, 0] := 3
 *    X[0, 1, 0, 2] := 4
 *    X[0, 1, 1, 0] := 5
 *    X[1, 1, 1, 0] := 6
 *    X[1, 1, 1, 1] := 7
 *    X[1, 1, 1, 2] := 8
 *  ```
 *  As a prefix tree this would be represented as:
 *  ```text
 *          0          1
 *         / \         |
 *        0   1        1
 *       /   / \       |
 *      0   0   1      1
 *     /|  /|   |    /| |
 *    1 2 0 2   0   0 1 2
 *  ```
 *  The type of values in indptrBuffers */
__flatbuffers_define_table_field(0, org_apache_arrow_flatbuf_SparseTensorIndexCSF, indptrType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  indptrBuffers stores the sparsity structure.
 *  Each two consecutive dimensions in a tensor correspond to a buffer in
 *  indptrBuffers. A pair of consecutive values at `indptrBuffers[dim][i]`
 *  and `indptrBuffers[dim][i + 1]` signify a range of nodes in
 *  `indicesBuffers[dim + 1]` who are children of `indicesBuffers[dim][i]` node.
 *
 *  For example, the indptrBuffers for the above X are:
 *  ```text
 *    indptrBuffer(X) = [
 *                        [0, 2, 3],
 *                        [0, 1, 3, 4],
 *                        [0, 2, 4, 5, 8]
 *                      ].
 *  ``` */
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_SparseTensorIndexCSF, indptrBuffers, org_apache_arrow_flatbuf_Buffer_vec_t, 1)
/**  The type of values in indicesBuffers */
__flatbuffers_define_table_field(2, org_apache_arrow_flatbuf_SparseTensorIndexCSF, indicesType, org_apache_arrow_flatbuf_Int_table_t, 1)
/**  indicesBuffers stores values of nodes.
 *  Each tensor dimension corresponds to a buffer in indicesBuffers.
 *  For example, the indicesBuffers for the above X are:
 *  ```text
 *    indicesBuffer(X) = [
 *                         [0, 1],
 *                         [0, 1, 1],
 *                         [0, 0, 1, 1],
 *                         [1, 2, 0, 2, 0, 0, 1, 2]
 *                       ].
 *  ``` */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_SparseTensorIndexCSF, indicesBuffers, org_apache_arrow_flatbuf_Buffer_vec_t, 1)
/**  axisOrder stores the sequence in which dimensions were traversed to
 *  produce the prefix tree.
 *  For example, the axisOrder for the above X is:
 *  ```text
 *    axisOrder(X) = [0, 1, 2, 3].
 *  ``` */
__flatbuffers_define_vector_field(4, org_apache_arrow_flatbuf_SparseTensorIndexCSF, axisOrder, flatbuffers_int32_vec_t, 1)
typedef uint8_t org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_SparseTensorIndex, org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t, 8)
__flatbuffers_define_union(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndex)
#define org_apache_arrow_flatbuf_SparseTensorIndex_NONE ((org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t)UINT8_C(0))
#define org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCOO ((org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t)UINT8_C(1))
#define org_apache_arrow_flatbuf_SparseTensorIndex_SparseMatrixIndexCSX ((org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t)UINT8_C(2))
#define org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCSF ((org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t)UINT8_C(3))

static inline const char *org_apache_arrow_flatbuf_SparseTensorIndex_type_name(org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_SparseTensorIndex_NONE: return "NONE";
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCOO: return "SparseTensorIndexCOO";
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseMatrixIndexCSX: return "SparseMatrixIndexCSX";
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCSF: return "SparseTensorIndexCSF";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndex_is_known_type(org_apache_arrow_flatbuf_SparseTensorIndex_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_SparseTensorIndex_NONE: return 1;
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCOO: return 1;
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseMatrixIndexCSX: return 1;
    case org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCSF: return 1;
    default: return 0;
    }
}


struct org_apache_arrow_flatbuf_SparseTensor_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_SparseTensor_vec_len(org_apache_arrow_flatbuf_SparseTensor_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_SparseTensor_table_t org_apache_arrow_flatbuf_SparseTensor_vec_at(org_apache_arrow_flatbuf_SparseTensor_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_SparseTensor_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_SparseTensor)

/**  The type of data contained in a value cell.
 *  Currently only fixed-width value types are supported,
 *  no strings or nested types. */
__flatbuffers_define_union_field(flatbuffers_, 1, org_apache_arrow_flatbuf_SparseTensor, type, org_apache_arrow_flatbuf_Type, 1)
/**  The dimensions of the tensor, optionally named. */
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_SparseTensor, shape, org_apache_arrow_flatbuf_TensorDim_vec_t, 1)
/**  The number of non-zero values in a sparse tensor. */
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_SparseTensor, non_zero_length, flatbuffers_int64, int64_t, INT64_C(0))
/**  Sparse tensor index */
__flatbuffers_define_union_field(flatbuffers_, 5, org_apache_arrow_flatbuf_SparseTensor, sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, 1)
/**  The location and size of the tensor's data */
__flatbuffers_define_struct_field(6, org_apache_arrow_flatbuf_SparseTensor, data, org_apache_arrow_flatbuf_Buffer_struct_t, 1)


#include "flatcc/flatcc_epilogue.h"
#endif /* SPARSETENSOR_READER_H */
#ifndef SPARSETENSOR_BUILDER_H
#define SPARSETENSOR_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SPARSETENSOR_READER_H
#include "SparseTensor_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#ifndef TENSOR_BUILDER_H
#include "Tensor_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

#define __org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_formal_args , org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t v0
#define __org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t)

typedef flatbuffers_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t;
typedef flatbuffers_union_vec_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_union_vec_ref_t;
static org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndex_union_t t);

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_SparseTensorIndexCOO_required[] = { 0, 2, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t;
static org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO, 4)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_required[] = { 1, 2, 3, 4, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t;
static org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, 5)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_SparseTensorIndexCSF_required[] = { 0, 1, 2, 3, 4, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t;
static org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF, 5)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_SparseTensor_required[] = { 1, 2, 5, 6, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_SparseTensor_ref_t;
static org_apache_arrow_flatbuf_SparseTensor_ref_t org_apache_arrow_flatbuf_SparseTensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensor_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor, 7)

#define __org_apache_arrow_flatbuf_SparseTensorIndexCOO_formal_args , org_apache_arrow_flatbuf_Int_ref_t v0, flatbuffers_int64_vec_ref_t v1, org_apache_arrow_flatbuf_Buffer_t *v2, flatbuffers_bool_t v3
#define __org_apache_arrow_flatbuf_SparseTensorIndexCOO_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensorIndexCOO_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO, org_apache_arrow_flatbuf_SparseTensorIndexCOO_file_identifier, org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_identifier)

#define __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_formal_args ,\
  org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t v0, org_apache_arrow_flatbuf_Int_ref_t v1, org_apache_arrow_flatbuf_Buffer_t *v2, org_apache_arrow_flatbuf_Int_ref_t v3, org_apache_arrow_flatbuf_Buffer_t *v4
#define __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_call_args ,\
  v0, v1, v2, v3, v4
static inline org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_file_identifier, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_identifier)

#define __org_apache_arrow_flatbuf_SparseTensorIndexCSF_formal_args ,\
  org_apache_arrow_flatbuf_Int_ref_t v0, org_apache_arrow_flatbuf_Buffer_vec_ref_t v1, org_apache_arrow_flatbuf_Int_ref_t v2, org_apache_arrow_flatbuf_Buffer_vec_ref_t v3, flatbuffers_int32_vec_ref_t v4
#define __org_apache_arrow_flatbuf_SparseTensorIndexCSF_call_args ,\
  v0, v1, v2, v3, v4
static inline org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensorIndexCSF_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF, org_apache_arrow_flatbuf_SparseTensorIndexCSF_file_identifier, org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_identifier)

#define __org_apache_arrow_flatbuf_SparseTensor_formal_args ,\
  org_apache_arrow_flatbuf_Type_union_ref_t v1, org_apache_arrow_flatbuf_TensorDim_vec_ref_t v2, int64_t v3, org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t v5, org_apache_arrow_flatbuf_Buffer_t *v6
#define __org_apache_arrow_flatbuf_SparseTensor_call_args ,\
  v1, v2, v3, v5, v6
static inline org_apache_arrow_flatbuf_SparseTensor_ref_t org_apache_arrow_flatbuf_SparseTensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensor_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor, org_apache_arrow_flatbuf_SparseTensor_file_identifier, org_apache_arrow_flatbuf_SparseTensor_type_identifier)

static inline org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_as_NONE(void)
{ org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_SparseTensorIndex_NONE; uref.value = 0; return uref; }
static inline org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseTensorIndexCOO(org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t ref)
{ org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCOO; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseMatrixIndexCSX(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t ref)
{ org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_SparseTensorIndex_SparseMatrixIndexCSX; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseTensorIndexCSF(org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t ref)
{ org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_SparseTensorIndex_SparseTensorIndexCSF; uref.value = ref; return uref; }
__flatbuffers_build_union_vector(flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndex)

static org_apache_arrow_flatbuf_SparseTensorIndex_union_ref_t org_apache_arrow_flatbuf_SparseTensorIndex_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndex_union_t u)
{
    switch (u.type) {
    case 1: return org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseTensorIndexCOO(org_apache_arrow_flatbuf_SparseTensorIndexCOO_clone(B, (org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t)u.value));
    case 2: return org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseMatrixIndexCSX(org_apache_arrow_flatbuf_SparseMatrixIndexCSX_clone(B, (org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t)u.value));
    case 3: return org_apache_arrow_flatbuf_SparseTensorIndex_as_SparseTensorIndexCSF(org_apache_arrow_flatbuf_SparseTensorIndexCSF_clone(B, (org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t)u.value));
    default: return org_apache_arrow_flatbuf_SparseTensorIndex_as_NONE();
    }
}

__flatbuffers_build_table_field(0, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseTensorIndexCOO)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesStrides, flatbuffers_int64, int64_t, org_apache_arrow_flatbuf_SparseTensorIndexCOO)
__flatbuffers_build_struct_field(2, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesBuffer, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_SparseTensorIndexCOO)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCOO_isCanonical, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_SparseTensorIndexCOO)

static inline org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensorIndexCOO_formal_args)
{
    if (org_apache_arrow_flatbuf_SparseTensorIndexCOO_start(B)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesBuffer_add(B, v2)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesType_add(B, v0)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesStrides_add(B, v1)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_isCanonical_add(B, v3)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_SparseTensorIndexCOO_end(B);
}

static org_apache_arrow_flatbuf_SparseTensorIndexCOO_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCOO_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndexCOO_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_SparseTensorIndexCOO_start(B)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesBuffer_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_indicesStrides_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCOO_isCanonical_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_SparseTensorIndexCOO_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_compressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis, org_apache_arrow_flatbuf_SparseMatrixCompressedAxis_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_table_field(1, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_struct_field(2, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrBuffer, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_table_field(3, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_struct_field(4, flatbuffers_, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesBuffer, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)

static inline org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseMatrixIndexCSX_formal_args)
{
    if (org_apache_arrow_flatbuf_SparseMatrixIndexCSX_start(B)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrBuffer_add(B, v2)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesBuffer_add(B, v4)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrType_add(B, v1)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesType_add(B, v3)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_compressedAxis_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_SparseMatrixIndexCSX_end(B);
}

static org_apache_arrow_flatbuf_SparseMatrixIndexCSX_ref_t org_apache_arrow_flatbuf_SparseMatrixIndexCSX_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_SparseMatrixIndexCSX_start(B)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrBuffer_pick(B, t)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesBuffer_pick(B, t)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indptrType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_indicesType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseMatrixIndexCSX_compressedAxis_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_end(B));
}

__flatbuffers_build_table_field(0, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrBuffers, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_table_field(2, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesBuffers, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_vector_field(4, flatbuffers_, org_apache_arrow_flatbuf_SparseTensorIndexCSF_axisOrder, flatbuffers_int32, int32_t, org_apache_arrow_flatbuf_SparseTensorIndexCSF)

static inline org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensorIndexCSF_formal_args)
{
    if (org_apache_arrow_flatbuf_SparseTensorIndexCSF_start(B)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrType_add(B, v0)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrBuffers_add(B, v1)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesType_add(B, v2)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesBuffers_add(B, v3)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_axisOrder_add(B, v4)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_SparseTensorIndexCSF_end(B);
}

static org_apache_arrow_flatbuf_SparseTensorIndexCSF_ref_t org_apache_arrow_flatbuf_SparseTensorIndexCSF_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensorIndexCSF_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_SparseTensorIndexCSF_start(B)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indptrBuffers_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesType_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_indicesBuffers_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensorIndexCSF_axisOrder_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_SparseTensorIndexCSF_end(B));
}

__flatbuffers_build_union_field(1, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_SparseTensor)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_shape, org_apache_arrow_flatbuf_TensorDim, org_apache_arrow_flatbuf_SparseTensor)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_non_zero_length, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_SparseTensor)
__flatbuffers_build_union_field(5, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, org_apache_arrow_flatbuf_SparseTensor)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, SparseTensorIndexCOO, org_apache_arrow_flatbuf_SparseTensorIndexCOO)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, SparseMatrixIndexCSX, org_apache_arrow_flatbuf_SparseMatrixIndexCSX)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_sparseIndex, org_apache_arrow_flatbuf_SparseTensorIndex, SparseTensorIndexCSF, org_apache_arrow_flatbuf_SparseTensorIndexCSF)
__flatbuffers_build_struct_field(6, flatbuffers_, org_apache_arrow_flatbuf_SparseTensor_data, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_SparseTensor)

static inline org_apache_arrow_flatbuf_SparseTensor_ref_t org_apache_arrow_flatbuf_SparseTensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_SparseTensor_formal_args)
{
    if (org_apache_arrow_flatbuf_SparseTensor_start(B)
        || org_apache_arrow_flatbuf_SparseTensor_non_zero_length_add(B, v3)
        || org_apache_arrow_flatbuf_SparseTensor_data_add(B, v6)
        || org_apache_arrow_flatbuf_SparseTensor_type_add_value(B, v1)
        || org_apache_arrow_flatbuf_SparseTensor_shape_add(B, v2)
        || org_apache_arrow_flatbuf_SparseTensor_sparseIndex_add_value(B, v5)
        || org_apache_arrow_flatbuf_SparseTensor_type_add_type(B, v1.type)
        || org_apache_arrow_flatbuf_SparseTensor_sparseIndex_add_type(B, v5.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_SparseTensor_end(B);
}

static org_apache_arrow_flatbuf_SparseTensor_ref_t org_apache_arrow_flatbuf_SparseTensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_SparseTensor_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_SparseTensor_start(B)
        || org_apache_arrow_flatbuf_SparseTensor_non_zero_length_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensor_data_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensor_type_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensor_shape_pick(B, t)
        || org_apache_arrow_flatbuf_SparseTensor_sparseIndex_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_SparseTensor_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SPARSETENSOR_BUILDER_H */
#ifndef SPARSETENSOR_VERIFIER_H
#define SPARSETENSOR_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SPARSETENSOR_READER_H
#include "SparseTensor_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#ifndef TENSOR_VERIFIER_H
#include "Tensor_verifier.h"
#endif
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_SparseTensor_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_SparseTensorIndex_union_verifier(flatcc_union_verifier_descriptor_t *ud)
{
    switch (ud->type) {
    case 1: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table); /* SparseTensorIndexCOO */
    case 2: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table); /* SparseMatrixIndexCSX */
    case 3: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table); /* SparseTensorIndexCSF */
    default: return flatcc_verify_ok;
    }
}

static int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_table_field(td, 0, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indicesType */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 0, 8, 8, INT64_C(536870911)) /* indicesStrides */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 16, 8) /* indicesBuffer */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 1, 1) /* isCanonical */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCOO_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCOO_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCOO_type_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensorIndexCOO_verify_table);
}

static int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* compressedAxis */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 1, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indptrType */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 16, 8) /* indptrBuffer */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 3, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indicesType */)) return ret;
    if ((ret = flatcc_verify_field(td, 4, 16, 8) /* indicesBuffer */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_identifier, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_identifier, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_identifier, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseMatrixIndexCSX_type_identifier, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseMatrixIndexCSX_verify_table);
}

static int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_table_field(td, 0, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indptrType */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 1, 16, 8, INT64_C(268435455)) /* indptrBuffers */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 2, 1, &org_apache_arrow_flatbuf_Int_verify_table) /* indicesType */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 1, 16, 8, INT64_C(268435455)) /* indicesBuffers */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 4, 1, 4, 4, INT64_C(1073741823)) /* axisOrder */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCSF_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCSF_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensorIndexCSF_type_identifier, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensorIndexCSF_verify_table);
}

static int org_apache_arrow_flatbuf_SparseTensor_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_union_field(td, 1, 1, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 1, &org_apache_arrow_flatbuf_TensorDim_verify_table) /* shape */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 8, 8) /* non_zero_length */)) return ret;
    if ((ret = flatcc_verify_union_field(td, 5, 1, &org_apache_arrow_flatbuf_SparseTensorIndex_union_verifier) /* sparseIndex */)) return ret;
    if ((ret = flatcc_verify_field(td, 6, 16, 8) /* data */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensor_identifier, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensor_identifier, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensor_type_identifier, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_SparseTensor_type_identifier, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_SparseTensor_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_SparseTensor_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SPARSETENSOR_VERIFIER_H */
#ifndef SCHEMA_READER_H
#define SCHEMA_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

typedef struct org_apache_arrow_flatbuf_Buffer org_apache_arrow_flatbuf_Buffer_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_struct_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_struct_t;
typedef const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_vec_t;
typedef org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_mutable_vec_t;

typedef const struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_table_t;
typedef struct org_apache_arrow_flatbuf_Null_table *org_apache_arrow_flatbuf_Null_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Null_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__table_t;
typedef struct org_apache_arrow_flatbuf_Struct__table *org_apache_arrow_flatbuf_Struct__mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Struct__mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_table_t;
typedef struct org_apache_arrow_flatbuf_List_table *org_apache_arrow_flatbuf_List_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_List_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_table_t;
typedef struct org_apache_arrow_flatbuf_LargeList_table *org_apache_arrow_flatbuf_LargeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_table_t;
typedef struct org_apache_arrow_flatbuf_ListView_table *org_apache_arrow_flatbuf_ListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_ListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_table_t;
typedef struct org_apache_arrow_flatbuf_LargeListView_table *org_apache_arrow_flatbuf_LargeListView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeListView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeList_table *org_apache_arrow_flatbuf_FixedSizeList_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeList_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_table_t;
typedef struct org_apache_arrow_flatbuf_Map_table *org_apache_arrow_flatbuf_Map_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Map_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_table_t;
typedef struct org_apache_arrow_flatbuf_Union_table *org_apache_arrow_flatbuf_Union_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Union_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_table_t;
typedef struct org_apache_arrow_flatbuf_Int_table *org_apache_arrow_flatbuf_Int_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Int_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_table_t;
typedef struct org_apache_arrow_flatbuf_FloatingPoint_table *org_apache_arrow_flatbuf_FloatingPoint_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FloatingPoint_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8_table *org_apache_arrow_flatbuf_Utf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_table_t;
typedef struct org_apache_arrow_flatbuf_Binary_table *org_apache_arrow_flatbuf_Binary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Binary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_table_t;
typedef struct org_apache_arrow_flatbuf_LargeUtf8_table *org_apache_arrow_flatbuf_LargeUtf8_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeUtf8_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_LargeBinary_table *org_apache_arrow_flatbuf_LargeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_LargeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_table_t;
typedef struct org_apache_arrow_flatbuf_Utf8View_table *org_apache_arrow_flatbuf_Utf8View_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Utf8View_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_table_t;
typedef struct org_apache_arrow_flatbuf_BinaryView_table *org_apache_arrow_flatbuf_BinaryView_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_BinaryView_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_table_t;
typedef struct org_apache_arrow_flatbuf_FixedSizeBinary_table *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_FixedSizeBinary_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_table_t;
typedef struct org_apache_arrow_flatbuf_Bool_table *org_apache_arrow_flatbuf_Bool_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Bool_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_table_t;
typedef struct org_apache_arrow_flatbuf_RunEndEncoded_table *org_apache_arrow_flatbuf_RunEndEncoded_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_RunEndEncoded_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_table_t;
typedef struct org_apache_arrow_flatbuf_Decimal_table *org_apache_arrow_flatbuf_Decimal_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Decimal_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_table_t;
typedef struct org_apache_arrow_flatbuf_Date_table *org_apache_arrow_flatbuf_Date_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Date_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_table_t;
typedef struct org_apache_arrow_flatbuf_Time_table *org_apache_arrow_flatbuf_Time_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Time_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_table_t;
typedef struct org_apache_arrow_flatbuf_Timestamp_table *org_apache_arrow_flatbuf_Timestamp_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Timestamp_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_table_t;
typedef struct org_apache_arrow_flatbuf_Interval_table *org_apache_arrow_flatbuf_Interval_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Interval_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_table_t;
typedef struct org_apache_arrow_flatbuf_Duration_table *org_apache_arrow_flatbuf_Duration_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Duration_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_table_t;
typedef struct org_apache_arrow_flatbuf_KeyValue_table *org_apache_arrow_flatbuf_KeyValue_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_KeyValue_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_table_t;
typedef struct org_apache_arrow_flatbuf_DictionaryEncoding_table *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_DictionaryEncoding_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_table_t;
typedef struct org_apache_arrow_flatbuf_Field_table *org_apache_arrow_flatbuf_Field_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Field_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_table_t;
typedef struct org_apache_arrow_flatbuf_Schema_table *org_apache_arrow_flatbuf_Schema_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Schema_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_Null_file_identifier
#define org_apache_arrow_flatbuf_Null_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Null_file_identifier */
#ifndef org_apache_arrow_flatbuf_Null_identifier
#define org_apache_arrow_flatbuf_Null_identifier 0
#endif
#define org_apache_arrow_flatbuf_Null_type_hash ((flatbuffers_thash_t)0x7b36a4dd)
#define org_apache_arrow_flatbuf_Null_type_identifier "\xdd\xa4\x36\x7b"
#ifndef org_apache_arrow_flatbuf_Null_file_extension
#define org_apache_arrow_flatbuf_Null_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Struct__file_identifier
#define org_apache_arrow_flatbuf_Struct__file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Struct__file_identifier */
#ifndef org_apache_arrow_flatbuf_Struct__identifier
#define org_apache_arrow_flatbuf_Struct__identifier 0
#endif
#define org_apache_arrow_flatbuf_Struct__type_hash ((flatbuffers_thash_t)0x6310f362)
#define org_apache_arrow_flatbuf_Struct__type_identifier "\x62\xf3\x10\x63"
#ifndef org_apache_arrow_flatbuf_Struct__file_extension
#define org_apache_arrow_flatbuf_Struct__file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_List_file_identifier
#define org_apache_arrow_flatbuf_List_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_List_file_identifier */
#ifndef org_apache_arrow_flatbuf_List_identifier
#define org_apache_arrow_flatbuf_List_identifier 0
#endif
#define org_apache_arrow_flatbuf_List_type_hash ((flatbuffers_thash_t)0xd4ce5878)
#define org_apache_arrow_flatbuf_List_type_identifier "\x78\x58\xce\xd4"
#ifndef org_apache_arrow_flatbuf_List_file_extension
#define org_apache_arrow_flatbuf_List_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeList_file_identifier
#define org_apache_arrow_flatbuf_LargeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeList_identifier
#define org_apache_arrow_flatbuf_LargeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeList_type_hash ((flatbuffers_thash_t)0x38aa7e27)
#define org_apache_arrow_flatbuf_LargeList_type_identifier "\x27\x7e\xaa\x38"
#ifndef org_apache_arrow_flatbuf_LargeList_file_extension
#define org_apache_arrow_flatbuf_LargeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_ListView_file_identifier
#define org_apache_arrow_flatbuf_ListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_ListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_ListView_identifier
#define org_apache_arrow_flatbuf_ListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_ListView_type_hash ((flatbuffers_thash_t)0x23d37919)
#define org_apache_arrow_flatbuf_ListView_type_identifier "\x19\x79\xd3\x23"
#ifndef org_apache_arrow_flatbuf_ListView_file_extension
#define org_apache_arrow_flatbuf_ListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeListView_file_identifier
#define org_apache_arrow_flatbuf_LargeListView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeListView_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeListView_identifier
#define org_apache_arrow_flatbuf_LargeListView_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeListView_type_hash ((flatbuffers_thash_t)0x28efac02)
#define org_apache_arrow_flatbuf_LargeListView_type_identifier "\x02\xac\xef\x28"
#ifndef org_apache_arrow_flatbuf_LargeListView_file_extension
#define org_apache_arrow_flatbuf_LargeListView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeList_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeList_identifier
#define org_apache_arrow_flatbuf_FixedSizeList_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeList_type_hash ((flatbuffers_thash_t)0xcef245bb)
#define org_apache_arrow_flatbuf_FixedSizeList_type_identifier "\xbb\x45\xf2\xce"
#ifndef org_apache_arrow_flatbuf_FixedSizeList_file_extension
#define org_apache_arrow_flatbuf_FixedSizeList_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Map_file_identifier
#define org_apache_arrow_flatbuf_Map_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Map_file_identifier */
#ifndef org_apache_arrow_flatbuf_Map_identifier
#define org_apache_arrow_flatbuf_Map_identifier 0
#endif
#define org_apache_arrow_flatbuf_Map_type_hash ((flatbuffers_thash_t)0xcebef8e6)
#define org_apache_arrow_flatbuf_Map_type_identifier "\xe6\xf8\xbe\xce"
#ifndef org_apache_arrow_flatbuf_Map_file_extension
#define org_apache_arrow_flatbuf_Map_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Union_file_identifier
#define org_apache_arrow_flatbuf_Union_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Union_file_identifier */
#ifndef org_apache_arrow_flatbuf_Union_identifier
#define org_apache_arrow_flatbuf_Union_identifier 0
#endif
#define org_apache_arrow_flatbuf_Union_type_hash ((flatbuffers_thash_t)0x896bda57)
#define org_apache_arrow_flatbuf_Union_type_identifier "\x57\xda\x6b\x89"
#ifndef org_apache_arrow_flatbuf_Union_file_extension
#define org_apache_arrow_flatbuf_Union_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Int_file_identifier
#define org_apache_arrow_flatbuf_Int_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Int_file_identifier */
#ifndef org_apache_arrow_flatbuf_Int_identifier
#define org_apache_arrow_flatbuf_Int_identifier 0
#endif
#define org_apache_arrow_flatbuf_Int_type_hash ((flatbuffers_thash_t)0x30789001)
#define org_apache_arrow_flatbuf_Int_type_identifier "\x01\x90\x78\x30"
#ifndef org_apache_arrow_flatbuf_Int_file_extension
#define org_apache_arrow_flatbuf_Int_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FloatingPoint_file_identifier */
#ifndef org_apache_arrow_flatbuf_FloatingPoint_identifier
#define org_apache_arrow_flatbuf_FloatingPoint_identifier 0
#endif
#define org_apache_arrow_flatbuf_FloatingPoint_type_hash ((flatbuffers_thash_t)0xf7d06268)
#define org_apache_arrow_flatbuf_FloatingPoint_type_identifier "\x68\x62\xd0\xf7"
#ifndef org_apache_arrow_flatbuf_FloatingPoint_file_extension
#define org_apache_arrow_flatbuf_FloatingPoint_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8_file_identifier
#define org_apache_arrow_flatbuf_Utf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8_identifier
#define org_apache_arrow_flatbuf_Utf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8_type_hash ((flatbuffers_thash_t)0x8fe60d37)
#define org_apache_arrow_flatbuf_Utf8_type_identifier "\x37\x0d\xe6\x8f"
#ifndef org_apache_arrow_flatbuf_Utf8_file_extension
#define org_apache_arrow_flatbuf_Utf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Binary_file_identifier
#define org_apache_arrow_flatbuf_Binary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Binary_file_identifier */
#ifndef org_apache_arrow_flatbuf_Binary_identifier
#define org_apache_arrow_flatbuf_Binary_identifier 0
#endif
#define org_apache_arrow_flatbuf_Binary_type_hash ((flatbuffers_thash_t)0x8e21a795)
#define org_apache_arrow_flatbuf_Binary_type_identifier "\x95\xa7\x21\x8e"
#ifndef org_apache_arrow_flatbuf_Binary_file_extension
#define org_apache_arrow_flatbuf_Binary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeUtf8_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeUtf8_identifier
#define org_apache_arrow_flatbuf_LargeUtf8_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeUtf8_type_hash ((flatbuffers_thash_t)0x24ed2fb0)
#define org_apache_arrow_flatbuf_LargeUtf8_type_identifier "\xb0\x2f\xed\x24"
#ifndef org_apache_arrow_flatbuf_LargeUtf8_file_extension
#define org_apache_arrow_flatbuf_LargeUtf8_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_identifier
#define org_apache_arrow_flatbuf_LargeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_LargeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_LargeBinary_identifier
#define org_apache_arrow_flatbuf_LargeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_LargeBinary_type_hash ((flatbuffers_thash_t)0xbd437872)
#define org_apache_arrow_flatbuf_LargeBinary_type_identifier "\x72\x78\x43\xbd"
#ifndef org_apache_arrow_flatbuf_LargeBinary_file_extension
#define org_apache_arrow_flatbuf_LargeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Utf8View_file_identifier
#define org_apache_arrow_flatbuf_Utf8View_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Utf8View_file_identifier */
#ifndef org_apache_arrow_flatbuf_Utf8View_identifier
#define org_apache_arrow_flatbuf_Utf8View_identifier 0
#endif
#define org_apache_arrow_flatbuf_Utf8View_type_hash ((flatbuffers_thash_t)0xab7692)
#define org_apache_arrow_flatbuf_Utf8View_type_identifier "\x92\x76\xab\x00"
#ifndef org_apache_arrow_flatbuf_Utf8View_file_extension
#define org_apache_arrow_flatbuf_Utf8View_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_BinaryView_file_identifier
#define org_apache_arrow_flatbuf_BinaryView_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_BinaryView_file_identifier */
#ifndef org_apache_arrow_flatbuf_BinaryView_identifier
#define org_apache_arrow_flatbuf_BinaryView_identifier 0
#endif
#define org_apache_arrow_flatbuf_BinaryView_type_hash ((flatbuffers_thash_t)0x18c52428)
#define org_apache_arrow_flatbuf_BinaryView_type_identifier "\x28\x24\xc5\x18"
#ifndef org_apache_arrow_flatbuf_BinaryView_file_extension
#define org_apache_arrow_flatbuf_BinaryView_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier */
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_identifier
#define org_apache_arrow_flatbuf_FixedSizeBinary_identifier 0
#endif
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_hash ((flatbuffers_thash_t)0x80d0f4ce)
#define org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier "\xce\xf4\xd0\x80"
#ifndef org_apache_arrow_flatbuf_FixedSizeBinary_file_extension
#define org_apache_arrow_flatbuf_FixedSizeBinary_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Bool_file_identifier
#define org_apache_arrow_flatbuf_Bool_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Bool_file_identifier */
#ifndef org_apache_arrow_flatbuf_Bool_identifier
#define org_apache_arrow_flatbuf_Bool_identifier 0
#endif
#define org_apache_arrow_flatbuf_Bool_type_hash ((flatbuffers_thash_t)0x96bf83f0)
#define org_apache_arrow_flatbuf_Bool_type_identifier "\xf0\x83\xbf\x96"
#ifndef org_apache_arrow_flatbuf_Bool_file_extension
#define org_apache_arrow_flatbuf_Bool_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_RunEndEncoded_file_identifier */
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_identifier
#define org_apache_arrow_flatbuf_RunEndEncoded_identifier 0
#endif
#define org_apache_arrow_flatbuf_RunEndEncoded_type_hash ((flatbuffers_thash_t)0x5a98bcc)
#define org_apache_arrow_flatbuf_RunEndEncoded_type_identifier "\xcc\x8b\xa9\x05"
#ifndef org_apache_arrow_flatbuf_RunEndEncoded_file_extension
#define org_apache_arrow_flatbuf_RunEndEncoded_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Decimal_file_identifier
#define org_apache_arrow_flatbuf_Decimal_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Decimal_file_identifier */
#ifndef org_apache_arrow_flatbuf_Decimal_identifier
#define org_apache_arrow_flatbuf_Decimal_identifier 0
#endif
#define org_apache_arrow_flatbuf_Decimal_type_hash ((flatbuffers_thash_t)0x91d1beb7)
#define org_apache_arrow_flatbuf_Decimal_type_identifier "\xb7\xbe\xd1\x91"
#ifndef org_apache_arrow_flatbuf_Decimal_file_extension
#define org_apache_arrow_flatbuf_Decimal_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Date_file_identifier
#define org_apache_arrow_flatbuf_Date_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Date_file_identifier */
#ifndef org_apache_arrow_flatbuf_Date_identifier
#define org_apache_arrow_flatbuf_Date_identifier 0
#endif
#define org_apache_arrow_flatbuf_Date_type_hash ((flatbuffers_thash_t)0xe0ccf624)
#define org_apache_arrow_flatbuf_Date_type_identifier "\x24\xf6\xcc\xe0"
#ifndef org_apache_arrow_flatbuf_Date_file_extension
#define org_apache_arrow_flatbuf_Date_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Time_file_identifier
#define org_apache_arrow_flatbuf_Time_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Time_file_identifier */
#ifndef org_apache_arrow_flatbuf_Time_identifier
#define org_apache_arrow_flatbuf_Time_identifier 0
#endif
#define org_apache_arrow_flatbuf_Time_type_hash ((flatbuffers_thash_t)0x2442a489)
#define org_apache_arrow_flatbuf_Time_type_identifier "\x89\xa4\x42\x24"
#ifndef org_apache_arrow_flatbuf_Time_file_extension
#define org_apache_arrow_flatbuf_Time_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Timestamp_file_identifier
#define org_apache_arrow_flatbuf_Timestamp_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Timestamp_file_identifier */
#ifndef org_apache_arrow_flatbuf_Timestamp_identifier
#define org_apache_arrow_flatbuf_Timestamp_identifier 0
#endif
#define org_apache_arrow_flatbuf_Timestamp_type_hash ((flatbuffers_thash_t)0x1fddf080)
#define org_apache_arrow_flatbuf_Timestamp_type_identifier "\x80\xf0\xdd\x1f"
#ifndef org_apache_arrow_flatbuf_Timestamp_file_extension
#define org_apache_arrow_flatbuf_Timestamp_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Interval_file_identifier
#define org_apache_arrow_flatbuf_Interval_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Interval_file_identifier */
#ifndef org_apache_arrow_flatbuf_Interval_identifier
#define org_apache_arrow_flatbuf_Interval_identifier 0
#endif
#define org_apache_arrow_flatbuf_Interval_type_hash ((flatbuffers_thash_t)0x1e2d6809)
#define org_apache_arrow_flatbuf_Interval_type_identifier "\x09\x68\x2d\x1e"
#ifndef org_apache_arrow_flatbuf_Interval_file_extension
#define org_apache_arrow_flatbuf_Interval_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Duration_file_identifier
#define org_apache_arrow_flatbuf_Duration_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Duration_file_identifier */
#ifndef org_apache_arrow_flatbuf_Duration_identifier
#define org_apache_arrow_flatbuf_Duration_identifier 0
#endif
#define org_apache_arrow_flatbuf_Duration_type_hash ((flatbuffers_thash_t)0x1ecea6b0)
#define org_apache_arrow_flatbuf_Duration_type_identifier "\xb0\xa6\xce\x1e"
#ifndef org_apache_arrow_flatbuf_Duration_file_extension
#define org_apache_arrow_flatbuf_Duration_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_KeyValue_file_identifier
#define org_apache_arrow_flatbuf_KeyValue_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_KeyValue_file_identifier */
#ifndef org_apache_arrow_flatbuf_KeyValue_identifier
#define org_apache_arrow_flatbuf_KeyValue_identifier 0
#endif
#define org_apache_arrow_flatbuf_KeyValue_type_hash ((flatbuffers_thash_t)0x3b264744)
#define org_apache_arrow_flatbuf_KeyValue_type_identifier "\x44\x47\x26\x3b"
#ifndef org_apache_arrow_flatbuf_KeyValue_file_extension
#define org_apache_arrow_flatbuf_KeyValue_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier */
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_identifier
#define org_apache_arrow_flatbuf_DictionaryEncoding_identifier 0
#endif
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_hash ((flatbuffers_thash_t)0x8c703261)
#define org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier "\x61\x32\x70\x8c"
#ifndef org_apache_arrow_flatbuf_DictionaryEncoding_file_extension
#define org_apache_arrow_flatbuf_DictionaryEncoding_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Field_file_identifier
#define org_apache_arrow_flatbuf_Field_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Field_file_identifier */
#ifndef org_apache_arrow_flatbuf_Field_identifier
#define org_apache_arrow_flatbuf_Field_identifier 0
#endif
#define org_apache_arrow_flatbuf_Field_type_hash ((flatbuffers_thash_t)0xd981525c)
#define org_apache_arrow_flatbuf_Field_type_identifier "\x5c\x52\x81\xd9"
#ifndef org_apache_arrow_flatbuf_Field_file_extension
#define org_apache_arrow_flatbuf_Field_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Buffer_file_identifier
#define org_apache_arrow_flatbuf_Buffer_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Buffer_file_identifier */
#ifndef org_apache_arrow_flatbuf_Buffer_identifier
#define org_apache_arrow_flatbuf_Buffer_identifier 0
#endif
#define org_apache_arrow_flatbuf_Buffer_type_hash ((flatbuffers_thash_t)0x519d7fea)
#define org_apache_arrow_flatbuf_Buffer_type_identifier "\xea\x7f\x9d\x51"
#ifndef org_apache_arrow_flatbuf_Buffer_file_extension
#define org_apache_arrow_flatbuf_Buffer_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Schema_file_identifier
#define org_apache_arrow_flatbuf_Schema_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Schema_file_identifier */
#ifndef org_apache_arrow_flatbuf_Schema_identifier
#define org_apache_arrow_flatbuf_Schema_identifier 0
#endif
#define org_apache_arrow_flatbuf_Schema_type_hash ((flatbuffers_thash_t)0x406570b)
#define org_apache_arrow_flatbuf_Schema_type_identifier "\x0b\x57\x06\x04"
#ifndef org_apache_arrow_flatbuf_Schema_file_extension
#define org_apache_arrow_flatbuf_Schema_file_extension "bin"
#endif

typedef int16_t org_apache_arrow_flatbuf_MetadataVersion_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t, 16)
/**  0.1.0 (October 2016). */
#define org_apache_arrow_flatbuf_MetadataVersion_V1 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_MetadataVersion_V2 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_MetadataVersion_V3 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_MetadataVersion_V4 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(3))
#define org_apache_arrow_flatbuf_MetadataVersion_V5 ((org_apache_arrow_flatbuf_MetadataVersion_enum_t)INT16_C(4))

static inline const char *org_apache_arrow_flatbuf_MetadataVersion_name(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return "V1";
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return "V2";
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return "V3";
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return "V4";
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return "V5";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_MetadataVersion_is_known_value(org_apache_arrow_flatbuf_MetadataVersion_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_MetadataVersion_V1: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V2: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V3: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V4: return 1;
    case org_apache_arrow_flatbuf_MetadataVersion_V5: return 1;
    default: return 0;
    }
}

/**  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 intended to represent higher level
 *       features, additional details may be 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. */
typedef int64_t org_apache_arrow_flatbuf_Feature_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, 64)
/**  Needed to make flatbuffers happy. */
#define org_apache_arrow_flatbuf_Feature_UNUSED ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(0))
#define org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(1))
#define org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY ((org_apache_arrow_flatbuf_Feature_enum_t)INT64_C(2))

static inline const char *org_apache_arrow_flatbuf_Feature_name(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return "UNUSED";
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return "DICTIONARY_REPLACEMENT";
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return "COMPRESSED_BODY";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Feature_is_known_value(org_apache_arrow_flatbuf_Feature_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Feature_UNUSED: return 1;
    case org_apache_arrow_flatbuf_Feature_DICTIONARY_REPLACEMENT: return 1;
    case org_apache_arrow_flatbuf_Feature_COMPRESSED_BODY: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_UnionMode_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 16)
#define org_apache_arrow_flatbuf_UnionMode_Sparse ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_UnionMode_Dense ((org_apache_arrow_flatbuf_UnionMode_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_UnionMode_name(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return "Sparse";
    case org_apache_arrow_flatbuf_UnionMode_Dense: return "Dense";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_UnionMode_is_known_value(org_apache_arrow_flatbuf_UnionMode_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_UnionMode_Sparse: return 1;
    case org_apache_arrow_flatbuf_UnionMode_Dense: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_Precision_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 16)
#define org_apache_arrow_flatbuf_Precision_HALF ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Precision_SINGLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_Precision_DOUBLE ((org_apache_arrow_flatbuf_Precision_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_Precision_name(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return "HALF";
    case org_apache_arrow_flatbuf_Precision_SINGLE: return "SINGLE";
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return "DOUBLE";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Precision_is_known_value(org_apache_arrow_flatbuf_Precision_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Precision_HALF: return 1;
    case org_apache_arrow_flatbuf_Precision_SINGLE: return 1;
    case org_apache_arrow_flatbuf_Precision_DOUBLE: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_DateUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_DateUnit_DAY ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_DateUnit_MILLISECOND ((org_apache_arrow_flatbuf_DateUnit_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_DateUnit_name(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return "DAY";
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return "MILLISECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DateUnit_is_known_value(org_apache_arrow_flatbuf_DateUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DateUnit_DAY: return 1;
    case org_apache_arrow_flatbuf_DateUnit_MILLISECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_TimeUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_TimeUnit_SECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_TimeUnit_MILLISECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_TimeUnit_MICROSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(2))
#define org_apache_arrow_flatbuf_TimeUnit_NANOSECOND ((org_apache_arrow_flatbuf_TimeUnit_enum_t)INT16_C(3))

static inline const char *org_apache_arrow_flatbuf_TimeUnit_name(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return "SECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return "MILLISECOND";
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return "MICROSECOND";
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return "NANOSECOND";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_TimeUnit_is_known_value(org_apache_arrow_flatbuf_TimeUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_TimeUnit_SECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MILLISECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_MICROSECOND: return 1;
    case org_apache_arrow_flatbuf_TimeUnit_NANOSECOND: return 1;
    default: return 0;
    }
}

typedef int16_t org_apache_arrow_flatbuf_IntervalUnit_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 16)
#define org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(1))
#define org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO ((org_apache_arrow_flatbuf_IntervalUnit_enum_t)INT16_C(2))

static inline const char *org_apache_arrow_flatbuf_IntervalUnit_name(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return "YEAR_MONTH";
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return "DAY_TIME";
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return "MONTH_DAY_NANO";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_IntervalUnit_is_known_value(org_apache_arrow_flatbuf_IntervalUnit_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_IntervalUnit_YEAR_MONTH: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_DAY_TIME: return 1;
    case org_apache_arrow_flatbuf_IntervalUnit_MONTH_DAY_NANO: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  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 */
typedef int16_t org_apache_arrow_flatbuf_DictionaryKind_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 16)
#define org_apache_arrow_flatbuf_DictionaryKind_DenseArray ((org_apache_arrow_flatbuf_DictionaryKind_enum_t)INT16_C(0))

static inline const char *org_apache_arrow_flatbuf_DictionaryKind_name(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return "DenseArray";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_DictionaryKind_is_known_value(org_apache_arrow_flatbuf_DictionaryKind_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_DictionaryKind_DenseArray: return 1;
    default: return 0;
    }
}

/**  ----------------------------------------------------------------------
 *  Endianness of the platform producing the data */
typedef int16_t org_apache_arrow_flatbuf_Endianness_enum_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 16)
#define org_apache_arrow_flatbuf_Endianness_Little ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(0))
#define org_apache_arrow_flatbuf_Endianness_Big ((org_apache_arrow_flatbuf_Endianness_enum_t)INT16_C(1))

static inline const char *org_apache_arrow_flatbuf_Endianness_name(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return "Little";
    case org_apache_arrow_flatbuf_Endianness_Big: return "Big";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Endianness_is_known_value(org_apache_arrow_flatbuf_Endianness_enum_t value)
{
    switch (value) {
    case org_apache_arrow_flatbuf_Endianness_Little: return 1;
    case org_apache_arrow_flatbuf_Endianness_Big: return 1;
    default: return 0;
    }
}


/**  ----------------------------------------------------------------------
 *  A Buffer represents a single contiguous memory segment */
struct org_apache_arrow_flatbuf_Buffer {
    /**  The relative offset into the shared memory page where the bytes for this
     *  buffer starts */
    alignas(8) int64_t 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. */
    alignas(8) int64_t length;
};
static_assert(sizeof(org_apache_arrow_flatbuf_Buffer_t) == 16, "struct size mismatch");

static inline const org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__const_ptr_add(const org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer__ptr_add(org_apache_arrow_flatbuf_Buffer_t *p, size_t i) { return p + i; }
static inline org_apache_arrow_flatbuf_Buffer_struct_t org_apache_arrow_flatbuf_Buffer_vec_at(org_apache_arrow_flatbuf_Buffer_vec_t vec, size_t i)
__flatbuffers_struct_vec_at(vec, i)
static inline size_t org_apache_arrow_flatbuf_Buffer__size(void) { return 16; }
static inline size_t org_apache_arrow_flatbuf_Buffer_vec_len(org_apache_arrow_flatbuf_Buffer_vec_t vec)
__flatbuffers_vec_len(vec)
__flatbuffers_struct_as_root(org_apache_arrow_flatbuf_Buffer)

__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, offset, flatbuffers_int64, int64_t)
__flatbuffers_define_struct_scalar_field(org_apache_arrow_flatbuf_Buffer, length, flatbuffers_int64, int64_t)


/**  These are stored in the flatbuffer in the Type union below */
struct org_apache_arrow_flatbuf_Null_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Null_vec_len(org_apache_arrow_flatbuf_Null_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Null_table_t org_apache_arrow_flatbuf_Null_vec_at(org_apache_arrow_flatbuf_Null_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Null_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Null)


/**  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 org_apache_arrow_flatbuf_Struct__table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Struct__vec_len(org_apache_arrow_flatbuf_Struct__vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Struct__table_t org_apache_arrow_flatbuf_Struct__vec_at(org_apache_arrow_flatbuf_Struct__vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Struct__table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Struct_)


struct org_apache_arrow_flatbuf_List_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_List_vec_len(org_apache_arrow_flatbuf_List_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_List_table_t org_apache_arrow_flatbuf_List_vec_at(org_apache_arrow_flatbuf_List_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_List_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_List)


/**  Same as List, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeList_vec_len(org_apache_arrow_flatbuf_LargeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeList_table_t org_apache_arrow_flatbuf_LargeList_vec_at(org_apache_arrow_flatbuf_LargeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeList)


/**  Represents the same logical types that List can, but contains offsets and
 *  sizes allowing for writes in any order and sharing of child values among
 *  list values. */
struct org_apache_arrow_flatbuf_ListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_ListView_vec_len(org_apache_arrow_flatbuf_ListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_ListView_table_t org_apache_arrow_flatbuf_ListView_vec_at(org_apache_arrow_flatbuf_ListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_ListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_ListView)


/**  Same as ListView, but with 64-bit offsets and sizes, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeListView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeListView_vec_len(org_apache_arrow_flatbuf_LargeListView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeListView_table_t org_apache_arrow_flatbuf_LargeListView_vec_at(org_apache_arrow_flatbuf_LargeListView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeListView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeListView)


struct org_apache_arrow_flatbuf_FixedSizeList_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeList_vec_len(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeList_table_t org_apache_arrow_flatbuf_FixedSizeList_vec_at(org_apache_arrow_flatbuf_FixedSizeList_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeList_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeList)

/**  Number of list items per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeList, listSize, flatbuffers_int32, int32_t, INT32_C(0))

/**  A Map is a logical nested type that is represented as
 *
 *  List<entries: Struct<key: K, value: V>>
 *
 *  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: the key type and the value type. The names of the
 *  child fields may be respectively "entries", "key", and "value", but this is
 *  not enforced.
 *
 *  Map
 *  ```text
 *    - 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 org_apache_arrow_flatbuf_Map_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Map_vec_len(org_apache_arrow_flatbuf_Map_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Map_table_t org_apache_arrow_flatbuf_Map_vec_at(org_apache_arrow_flatbuf_Map_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Map_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Map)

/**  Set to true if the keys within each value are sorted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Map, keysSorted, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

/**  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 org_apache_arrow_flatbuf_Union_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Union_vec_len(org_apache_arrow_flatbuf_Union_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Union_table_t org_apache_arrow_flatbuf_Union_vec_at(org_apache_arrow_flatbuf_Union_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Union_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Union)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Union, mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Union, typeIds, flatbuffers_int32_vec_t, 0)

struct org_apache_arrow_flatbuf_Int_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Int_vec_len(org_apache_arrow_flatbuf_Int_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Int_table_t org_apache_arrow_flatbuf_Int_vec_at(org_apache_arrow_flatbuf_Int_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Int_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Int)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Int, bitWidth, flatbuffers_int32, int32_t, INT32_C(0))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Int, is_signed, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))

struct org_apache_arrow_flatbuf_FloatingPoint_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FloatingPoint_vec_len(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FloatingPoint_table_t org_apache_arrow_flatbuf_FloatingPoint_vec_at(org_apache_arrow_flatbuf_FloatingPoint_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FloatingPoint_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FloatingPoint)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FloatingPoint, precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, INT16_C(0))

/**  Unicode with UTF-8 encoding */
struct org_apache_arrow_flatbuf_Utf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8_vec_len(org_apache_arrow_flatbuf_Utf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8_table_t org_apache_arrow_flatbuf_Utf8_vec_at(org_apache_arrow_flatbuf_Utf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8)


/**  Opaque binary data */
struct org_apache_arrow_flatbuf_Binary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Binary_vec_len(org_apache_arrow_flatbuf_Binary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Binary_table_t org_apache_arrow_flatbuf_Binary_vec_at(org_apache_arrow_flatbuf_Binary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Binary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Binary)


/**  Same as Utf8, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeUtf8_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeUtf8_vec_len(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeUtf8_table_t org_apache_arrow_flatbuf_LargeUtf8_vec_at(org_apache_arrow_flatbuf_LargeUtf8_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeUtf8_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeUtf8)


/**  Same as Binary, but with 64-bit offsets, allowing to represent
 *  extremely large data values. */
struct org_apache_arrow_flatbuf_LargeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_LargeBinary_vec_len(org_apache_arrow_flatbuf_LargeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_LargeBinary_table_t org_apache_arrow_flatbuf_LargeBinary_vec_at(org_apache_arrow_flatbuf_LargeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_LargeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_LargeBinary)


/**  Logically the same as Utf8, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_Utf8View_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Utf8View_vec_len(org_apache_arrow_flatbuf_Utf8View_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Utf8View_table_t org_apache_arrow_flatbuf_Utf8View_vec_at(org_apache_arrow_flatbuf_Utf8View_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Utf8View_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Utf8View)


/**  Logically the same as Binary, but the internal representation uses a view
 *  struct that contains the string length and either the string's entire data
 *  inline (for small strings) or an inlined prefix, an index of another buffer,
 *  and an offset pointing to a slice in that buffer (for non-small strings).
 *
 *  Since it uses a variable number of data buffers, each Field with this type
 *  must have a corresponding entry in `variadicBufferCounts`. */
struct org_apache_arrow_flatbuf_BinaryView_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_BinaryView_vec_len(org_apache_arrow_flatbuf_BinaryView_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_BinaryView_table_t org_apache_arrow_flatbuf_BinaryView_vec_at(org_apache_arrow_flatbuf_BinaryView_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_BinaryView_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_BinaryView)


struct org_apache_arrow_flatbuf_FixedSizeBinary_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_len(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_FixedSizeBinary_table_t org_apache_arrow_flatbuf_FixedSizeBinary_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_FixedSizeBinary_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_FixedSizeBinary)

/**  Number of bytes per value */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_FixedSizeBinary, byteWidth, flatbuffers_int32, int32_t, INT32_C(0))

struct org_apache_arrow_flatbuf_Bool_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Bool_vec_len(org_apache_arrow_flatbuf_Bool_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Bool_table_t org_apache_arrow_flatbuf_Bool_vec_at(org_apache_arrow_flatbuf_Bool_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Bool_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Bool)


/**  Contains two child arrays, run_ends and values.
 *  The run_ends child array must be a 16/32/64-bit integer array
 *  which encodes the indices at which the run with the value in
 *  each corresponding index in the values child array ends.
 *  Like list/struct types, the value array can be of any type. */
struct org_apache_arrow_flatbuf_RunEndEncoded_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_RunEndEncoded_vec_len(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_RunEndEncoded_table_t org_apache_arrow_flatbuf_RunEndEncoded_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_RunEndEncoded_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_RunEndEncoded)


/**  Exact decimal value represented as an integer value in two's
 *  complement. Currently 32-bit (4-byte), 64-bit (8-byte),
 *  128-bit (16-byte) and 256-bit (32-byte) integers are used.
 *  The representation uses the endianness indicated in the Schema. */
struct org_apache_arrow_flatbuf_Decimal_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Decimal_vec_len(org_apache_arrow_flatbuf_Decimal_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Decimal_table_t org_apache_arrow_flatbuf_Decimal_vec_at(org_apache_arrow_flatbuf_Decimal_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Decimal_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Decimal)

/**  Total number of decimal digits */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Decimal, precision, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of digits after the decimal point "." */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Decimal, scale, flatbuffers_int32, int32_t, INT32_C(0))
/**  Number of bits per value. The accepted widths are 32, 64, 128 and 256.
 *  We use bitWidth for consistency with Int::bitWidth. */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_Decimal, bitWidth, flatbuffers_int32, int32_t, INT32_C(128))

/**  Date is either a 32-bit or 64-bit signed integer type representing an
 *  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 org_apache_arrow_flatbuf_Date_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Date_vec_len(org_apache_arrow_flatbuf_Date_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Date_table_t org_apache_arrow_flatbuf_Date_vec_at(org_apache_arrow_flatbuf_Date_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Date_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Date)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Date, unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, INT16_C(1))

/**  Time is either a 32-bit or 64-bit signed integer type representing an
 *  elapsed time since midnight, stored in either of four units: seconds,
 *  milliseconds, microseconds or nanoseconds.
 *
 *  The integer `bitWidth` depends on the `unit` and must be one of the following:
 *  * SECOND and MILLISECOND: 32 bits
 *  * MICROSECOND and NANOSECOND: 64 bits
 *
 *  The allowed values are between 0 (inclusive) and 86400 (=24*60*60) seconds
 *  (exclusive), adjusted for the time unit (for example, up to 86400000
 *  exclusive for the MILLISECOND unit).
 *  This definition doesn't allow for leap seconds. Time values from
 *  measurements with leap seconds will need to be corrected when ingesting
 *  into Arrow (for example by replacing the value 86400 with 86399). */
struct org_apache_arrow_flatbuf_Time_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Time_vec_len(org_apache_arrow_flatbuf_Time_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Time_table_t org_apache_arrow_flatbuf_Time_vec_at(org_apache_arrow_flatbuf_Time_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Time_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Time)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Time, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Time, bitWidth, flatbuffers_int32, int32_t, INT32_C(32))

/**  Timestamp is a 64-bit signed integer representing an elapsed time since a
 *  fixed epoch, stored in either of four units: seconds, milliseconds,
 *  microseconds or nanoseconds, and is optionally annotated with a timezone.
 *
 *  Timestamp values do not include any leap seconds (in other words, all
 *  days are considered 86400 seconds long).
 *
 *  Timestamps with a non-empty timezone
 *  ------------------------------------
 *
 *  If a Timestamp column has a non-empty timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in the *UTC* timezone
 *  (the Unix epoch), regardless of the Timestamp's own timezone.
 *
 *  Therefore, timestamp values with a non-empty timezone correspond to
 *  physical points in time together with some additional information about
 *  how the data was obtained and/or how to display it (the timezone).
 *
 *    For example, the timestamp value 0 with the timezone string "Europe/Paris"
 *    corresponds to "January 1st 1970, 00h00" in the UTC timezone, but the
 *    application may prefer to display it as "January 1st 1970, 01h00" in
 *    the Europe/Paris timezone (which is the same physical point in time).
 *
 *  One consequence is that timestamp values with a non-empty timezone
 *  can be compared and ordered directly, since they all share the same
 *  well-known point of reference (the Unix epoch).
 *
 *  Timestamps with an unset / empty timezone
 *  -----------------------------------------
 *
 *  If a Timestamp column has no timezone value, its epoch is
 *  1970-01-01 00:00:00 (January 1st 1970, midnight) in an *unknown* timezone.
 *
 *  Therefore, timestamp values without a timezone cannot be meaningfully
 *  interpreted as physical points in time, but only as calendar / clock
 *  indications ("wall clock time") in an unspecified timezone.
 *
 *    For example, the timestamp value 0 with an empty timezone string
 *    corresponds to "January 1st 1970, 00h00" in an unknown timezone: there
 *    is not enough information to interpret it as a well-defined physical
 *    point in time.
 *
 *  One consequence is that timestamp values without a timezone cannot
 *  be reliably compared or ordered, since they may have different points of
 *  reference.  In particular, it is *not* possible to interpret an unset
 *  or empty timezone as the same as "UTC".
 *
 *  Conversion between timezones
 *  ----------------------------
 *
 *  If a Timestamp column has a non-empty timezone, changing the timezone
 *  to a different non-empty value is a metadata-only operation:
 *  the timestamp values need not change as their point of reference remains
 *  the same (the Unix epoch).
 *
 *  However, if a Timestamp column has no timezone value, changing it to a
 *  non-empty value requires to think about the desired semantics.
 *  One possibility is to assume that the original timestamp values are
 *  relative to the epoch of the timezone being set; timestamp values should
 *  then adjusted to the Unix epoch (for example, changing the timezone from
 *  empty to "Europe/Paris" would require converting the timestamp values
 *  from "Europe/Paris" to "UTC", which seems counter-intuitive but is
 *  nevertheless correct).
 *
 *  Guidelines for encoding data from external libraries
 *  ----------------------------------------------------
 *
 *  Date & time libraries often have multiple different data types for temporal
 *  data. In order to ease interoperability between different implementations the
 *  Arrow project has some recommendations for encoding these types into a Timestamp
 *  column.
 *
 *  An "instant" represents a physical point in time that has no relevant timezone
 *  (for example, astronomical data). To encode an instant, use a Timestamp with
 *  the timezone string set to "UTC", and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *  A "zoned date-time" represents a physical point in time annotated with an
 *  informative timezone (for example, the timezone in which the data was
 *  recorded).  To encode a zoned date-time, use a Timestamp with the timezone
 *  string set to the name of the timezone, and make sure the Timestamp values
 *  are relative to the UTC epoch (January 1st 1970, midnight).
 *
 *   (There is some ambiguity between an instant and a zoned date-time with the
 *    UTC timezone.  Both of these are stored the same in Arrow.  Typically,
 *    this distinction does not matter.  If it does, then an application should
 *    use custom metadata or an extension type to distinguish between the two cases.)
 *
 *  An "offset date-time" represents a physical point in time combined with an
 *  explicit offset from UTC.  To encode an offset date-time, use a Timestamp
 *  with the timezone string set to the numeric timezone offset string
 *  (e.g. "+03:00"), and make sure the Timestamp values are relative to
 *  the UTC epoch (January 1st 1970, midnight).
 *
 *  A "naive date-time" (also called "local date-time" in some libraries)
 *  represents a wall clock time combined with a calendar date, but with
 *  no indication of how to map this information to a physical point in time.
 *  Naive date-times must be handled with care because of this missing
 *  information, and also because daylight saving time (DST) may make
 *  some values ambiguous or nonexistent. A naive date-time may be
 *  stored as a struct with Date and Time fields. However, it may also be
 *  encoded into a Timestamp column with an empty timezone. The timestamp
 *  values should be computed "as if" the timezone of the date-time values
 *  was UTC; for example, the naive date-time "January 1st 1970, 00h00" would
 *  be encoded as timestamp value 0. */
struct org_apache_arrow_flatbuf_Timestamp_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Timestamp_vec_len(org_apache_arrow_flatbuf_Timestamp_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Timestamp_table_t org_apache_arrow_flatbuf_Timestamp_vec_at(org_apache_arrow_flatbuf_Timestamp_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Timestamp_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Timestamp)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Timestamp, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(0))
/**  The timezone is an optional string indicating the name of a timezone,
 *  one of:
 *
 *  * As used in the Olson timezone database (the "tz database" or
 *    "tzdata"), such as "America/New_York".
 *  * An absolute timezone offset of the form "+XX:XX" or "-XX:XX",
 *    such as "+07:30".
 *
 *  Whether a timezone string is present indicates different semantics about
 *  the data (see above). */
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_Timestamp, timezone, 0)

struct org_apache_arrow_flatbuf_Interval_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Interval_vec_len(org_apache_arrow_flatbuf_Interval_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Interval_table_t org_apache_arrow_flatbuf_Interval_vec_at(org_apache_arrow_flatbuf_Interval_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Interval_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Interval)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Interval, unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, INT16_C(0))

struct org_apache_arrow_flatbuf_Duration_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Duration_vec_len(org_apache_arrow_flatbuf_Duration_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Duration_table_t org_apache_arrow_flatbuf_Duration_vec_at(org_apache_arrow_flatbuf_Duration_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Duration_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Duration)

__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Duration, unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, INT16_C(1))
/**  ----------------------------------------------------------------------
 *  Top-level Type value, enabling extensible type-specific metadata. We can
 *  add new logical types to Type without breaking backwards compatibility */
typedef uint8_t org_apache_arrow_flatbuf_Type_union_type_t;
__flatbuffers_define_integer_type(org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Type_union_type_t, 8)
__flatbuffers_define_union(flatbuffers_, org_apache_arrow_flatbuf_Type)
/**  ----------------------------------------------------------------------
 *  user defined key value pairs to add custom metadata to arrow
 *  key namespacing is the responsibility of the user */
#define org_apache_arrow_flatbuf_Type_NONE ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(0))
#define org_apache_arrow_flatbuf_Type_Null ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(1))
#define org_apache_arrow_flatbuf_Type_Int ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(2))
#define org_apache_arrow_flatbuf_Type_FloatingPoint ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(3))
#define org_apache_arrow_flatbuf_Type_Binary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(4))
#define org_apache_arrow_flatbuf_Type_Utf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(5))
#define org_apache_arrow_flatbuf_Type_Bool ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(6))
#define org_apache_arrow_flatbuf_Type_Decimal ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(7))
#define org_apache_arrow_flatbuf_Type_Date ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(8))
#define org_apache_arrow_flatbuf_Type_Time ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(9))
#define org_apache_arrow_flatbuf_Type_Timestamp ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(10))
#define org_apache_arrow_flatbuf_Type_Interval ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(11))
#define org_apache_arrow_flatbuf_Type_List ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(12))
#define org_apache_arrow_flatbuf_Type_Struct_ ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(13))
#define org_apache_arrow_flatbuf_Type_Union ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(14))
#define org_apache_arrow_flatbuf_Type_FixedSizeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(15))
#define org_apache_arrow_flatbuf_Type_FixedSizeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(16))
#define org_apache_arrow_flatbuf_Type_Map ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(17))
#define org_apache_arrow_flatbuf_Type_Duration ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(18))
#define org_apache_arrow_flatbuf_Type_LargeBinary ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(19))
#define org_apache_arrow_flatbuf_Type_LargeUtf8 ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(20))
#define org_apache_arrow_flatbuf_Type_LargeList ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(21))
#define org_apache_arrow_flatbuf_Type_RunEndEncoded ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(22))
#define org_apache_arrow_flatbuf_Type_BinaryView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(23))
#define org_apache_arrow_flatbuf_Type_Utf8View ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(24))
#define org_apache_arrow_flatbuf_Type_ListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(25))
#define org_apache_arrow_flatbuf_Type_LargeListView ((org_apache_arrow_flatbuf_Type_union_type_t)UINT8_C(26))

static inline const char *org_apache_arrow_flatbuf_Type_type_name(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return "NONE";
    case org_apache_arrow_flatbuf_Type_Null: return "Null";
    case org_apache_arrow_flatbuf_Type_Int: return "Int";
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return "FloatingPoint";
    case org_apache_arrow_flatbuf_Type_Binary: return "Binary";
    case org_apache_arrow_flatbuf_Type_Utf8: return "Utf8";
    case org_apache_arrow_flatbuf_Type_Bool: return "Bool";
    case org_apache_arrow_flatbuf_Type_Decimal: return "Decimal";
    case org_apache_arrow_flatbuf_Type_Date: return "Date";
    case org_apache_arrow_flatbuf_Type_Time: return "Time";
    case org_apache_arrow_flatbuf_Type_Timestamp: return "Timestamp";
    case org_apache_arrow_flatbuf_Type_Interval: return "Interval";
    case org_apache_arrow_flatbuf_Type_List: return "List";
    case org_apache_arrow_flatbuf_Type_Struct_: return "Struct_";
    case org_apache_arrow_flatbuf_Type_Union: return "Union";
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return "FixedSizeBinary";
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return "FixedSizeList";
    case org_apache_arrow_flatbuf_Type_Map: return "Map";
    case org_apache_arrow_flatbuf_Type_Duration: return "Duration";
    case org_apache_arrow_flatbuf_Type_LargeBinary: return "LargeBinary";
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return "LargeUtf8";
    case org_apache_arrow_flatbuf_Type_LargeList: return "LargeList";
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return "RunEndEncoded";
    case org_apache_arrow_flatbuf_Type_BinaryView: return "BinaryView";
    case org_apache_arrow_flatbuf_Type_Utf8View: return "Utf8View";
    case org_apache_arrow_flatbuf_Type_ListView: return "ListView";
    case org_apache_arrow_flatbuf_Type_LargeListView: return "LargeListView";
    default: return "";
    }
}

static inline int org_apache_arrow_flatbuf_Type_is_known_type(org_apache_arrow_flatbuf_Type_union_type_t type)
{
    switch (type) {
    case org_apache_arrow_flatbuf_Type_NONE: return 1;
    case org_apache_arrow_flatbuf_Type_Null: return 1;
    case org_apache_arrow_flatbuf_Type_Int: return 1;
    case org_apache_arrow_flatbuf_Type_FloatingPoint: return 1;
    case org_apache_arrow_flatbuf_Type_Binary: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8: return 1;
    case org_apache_arrow_flatbuf_Type_Bool: return 1;
    case org_apache_arrow_flatbuf_Type_Decimal: return 1;
    case org_apache_arrow_flatbuf_Type_Date: return 1;
    case org_apache_arrow_flatbuf_Type_Time: return 1;
    case org_apache_arrow_flatbuf_Type_Timestamp: return 1;
    case org_apache_arrow_flatbuf_Type_Interval: return 1;
    case org_apache_arrow_flatbuf_Type_List: return 1;
    case org_apache_arrow_flatbuf_Type_Struct_: return 1;
    case org_apache_arrow_flatbuf_Type_Union: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_FixedSizeList: return 1;
    case org_apache_arrow_flatbuf_Type_Map: return 1;
    case org_apache_arrow_flatbuf_Type_Duration: return 1;
    case org_apache_arrow_flatbuf_Type_LargeBinary: return 1;
    case org_apache_arrow_flatbuf_Type_LargeUtf8: return 1;
    case org_apache_arrow_flatbuf_Type_LargeList: return 1;
    case org_apache_arrow_flatbuf_Type_RunEndEncoded: return 1;
    case org_apache_arrow_flatbuf_Type_BinaryView: return 1;
    case org_apache_arrow_flatbuf_Type_Utf8View: return 1;
    case org_apache_arrow_flatbuf_Type_ListView: return 1;
    case org_apache_arrow_flatbuf_Type_LargeListView: return 1;
    default: return 0;
    }
}


struct org_apache_arrow_flatbuf_KeyValue_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_KeyValue_vec_len(org_apache_arrow_flatbuf_KeyValue_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_KeyValue_table_t org_apache_arrow_flatbuf_KeyValue_vec_at(org_apache_arrow_flatbuf_KeyValue_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_KeyValue_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_KeyValue)

__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_KeyValue, key, 0)
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_KeyValue, value, 0)

struct org_apache_arrow_flatbuf_DictionaryEncoding_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_len(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_DictionaryEncoding_table_t org_apache_arrow_flatbuf_DictionaryEncoding_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_DictionaryEncoding_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_DictionaryEncoding)

/**  The known dictionary id in the application where this data is used. In
 *  the file or streaming formats, the dictionary ids are found in the
 *  DictionaryBatch messages */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_DictionaryEncoding, id, flatbuffers_int64, int64_t, INT64_C(0))
/**  The dictionary indices are constrained to be non-negative integers. If
 *  this field is null, the indices must be signed int32. To maximize
 *  cross-language compatibility and performance, implementations are
 *  recommended to prefer signed integer types over unsigned integer types
 *  and to avoid uint64 indices unless they are required by an application. */
__flatbuffers_define_table_field(1, org_apache_arrow_flatbuf_DictionaryEncoding, indexType, org_apache_arrow_flatbuf_Int_table_t, 0)
/**  By default, dictionaries are not ordered, or the order does not have
 *  semantic meaning. In some statistical applications, dictionary-encoding
 *  is used to represent ordered categorical data, and we provide a way to
 *  preserve that metadata here */
__flatbuffers_define_scalar_field(2, org_apache_arrow_flatbuf_DictionaryEncoding, isOrdered, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
__flatbuffers_define_scalar_field(3, org_apache_arrow_flatbuf_DictionaryEncoding, dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, INT16_C(0))

/**  ----------------------------------------------------------------------
 *  A field represents a named column in a record / row batch or child of a
 *  nested type. */
struct org_apache_arrow_flatbuf_Field_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Field_vec_len(org_apache_arrow_flatbuf_Field_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Field_table_t org_apache_arrow_flatbuf_Field_vec_at(org_apache_arrow_flatbuf_Field_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Field_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Field)

/**  Name is not required (e.g., in a List) */
__flatbuffers_define_string_field(0, org_apache_arrow_flatbuf_Field, name, 0)
/**  Whether or not this field can contain nulls. Should be true in general. */
__flatbuffers_define_scalar_field(1, org_apache_arrow_flatbuf_Field, nullable, flatbuffers_bool, flatbuffers_bool_t, UINT8_C(0))
/**  This is the type of the decoded value if the field is dictionary encoded. */
__flatbuffers_define_union_field(flatbuffers_, 3, org_apache_arrow_flatbuf_Field, type, org_apache_arrow_flatbuf_Type, 0)
/**  Present only if the field is dictionary encoded. */
__flatbuffers_define_table_field(4, org_apache_arrow_flatbuf_Field, dictionary, org_apache_arrow_flatbuf_DictionaryEncoding_table_t, 0)
/**  children apply only to nested data types like Struct, List and Union. For
 *  primitive types children will have length 0. */
__flatbuffers_define_vector_field(5, org_apache_arrow_flatbuf_Field, children, org_apache_arrow_flatbuf_Field_vec_t, 0)
/**  User-defined metadata */
__flatbuffers_define_vector_field(6, org_apache_arrow_flatbuf_Field, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)

/**  ----------------------------------------------------------------------
 *  A Schema describes the columns in a row batch */
struct org_apache_arrow_flatbuf_Schema_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Schema_vec_len(org_apache_arrow_flatbuf_Schema_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Schema_table_t org_apache_arrow_flatbuf_Schema_vec_at(org_apache_arrow_flatbuf_Schema_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Schema_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Schema)

/**  endianness of the buffer
 *  it is Little Endian by default
 *  if endianness doesn't match the underlying system then the vectors need to be converted */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_Schema, endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, INT16_C(0))
__flatbuffers_define_vector_field(1, org_apache_arrow_flatbuf_Schema, fields, org_apache_arrow_flatbuf_Field_vec_t, 0)
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_Schema, custom_metadata, org_apache_arrow_flatbuf_KeyValue_vec_t, 0)
/**  Features used in the stream/file. */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_Schema, features, org_apache_arrow_flatbuf_Feature_vec_t, 0)


#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_READER_H */
#ifndef SCHEMA_BUILDER_H
#define SCHEMA_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

#define __org_apache_arrow_flatbuf_MetadataVersion_formal_args , org_apache_arrow_flatbuf_MetadataVersion_enum_t v0
#define __org_apache_arrow_flatbuf_MetadataVersion_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_MetadataVersion, org_apache_arrow_flatbuf_MetadataVersion_enum_t)
#define __org_apache_arrow_flatbuf_Feature_formal_args , org_apache_arrow_flatbuf_Feature_enum_t v0
#define __org_apache_arrow_flatbuf_Feature_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t)
#define __org_apache_arrow_flatbuf_UnionMode_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0
#define __org_apache_arrow_flatbuf_UnionMode_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t)
#define __org_apache_arrow_flatbuf_Precision_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_Precision_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t)
#define __org_apache_arrow_flatbuf_DateUnit_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_DateUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t)
#define __org_apache_arrow_flatbuf_TimeUnit_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_TimeUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t)
#define __org_apache_arrow_flatbuf_IntervalUnit_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_IntervalUnit_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t)
#define __org_apache_arrow_flatbuf_DictionaryKind_formal_args , org_apache_arrow_flatbuf_DictionaryKind_enum_t v0
#define __org_apache_arrow_flatbuf_DictionaryKind_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t)
#define __org_apache_arrow_flatbuf_Endianness_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0
#define __org_apache_arrow_flatbuf_Endianness_call_args , v0
__flatbuffers_build_scalar(flatbuffers_, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t)

#define __org_apache_arrow_flatbuf_Buffer_formal_args , int64_t v0, int64_t v1
#define __org_apache_arrow_flatbuf_Buffer_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ p->offset = v0; p->length = v1;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ p->offset = p2->offset; p->length = p2->length;
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_to_pe(&p->offset, v0); flatbuffers_int64_assign_to_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_to_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_to_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_to_pe(&p->length, &p2->length);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_assign_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, int64_t v0, int64_t v1)
{ flatbuffers_int64_assign_from_pe(&p->offset, v0); flatbuffers_int64_assign_from_pe(&p->length, v1);
  return p; }
static inline org_apache_arrow_flatbuf_Buffer_t *org_apache_arrow_flatbuf_Buffer_copy_from_pe(org_apache_arrow_flatbuf_Buffer_t *p, const org_apache_arrow_flatbuf_Buffer_t *p2)
{ flatbuffers_int64_copy_from_pe(&p->offset, &p2->offset); flatbuffers_int64_copy_from_pe(&p->length, &p2->length);
  return p; }
__flatbuffers_build_struct(flatbuffers_, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_Buffer_file_identifier, org_apache_arrow_flatbuf_Buffer_type_identifier)
__flatbuffers_define_fixed_array_primitives(flatbuffers_, org_apache_arrow_flatbuf_Buffer, org_apache_arrow_flatbuf_Buffer_t)

typedef flatbuffers_union_ref_t org_apache_arrow_flatbuf_Type_union_ref_t;
typedef flatbuffers_union_vec_ref_t org_apache_arrow_flatbuf_Type_union_vec_ref_t;
static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t t);

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Null_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Null_ref_t;
static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Null, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Struct__required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Struct__ref_t;
static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Struct_, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_List_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_List_ref_t;
static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_List, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeList_ref_t;
static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeList, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_ListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_ListView_ref_t;
static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_ListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeListView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeListView_ref_t;
static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeList_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeList_ref_t;
static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Map_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Map_ref_t;
static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Map, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Union_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Union_ref_t;
static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Union, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Int_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Int_ref_t;
static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Int, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FloatingPoint_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FloatingPoint_ref_t;
static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8_ref_t;
static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Binary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Binary_ref_t;
static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Binary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeUtf8_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeUtf8_ref_t;
static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_LargeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_LargeBinary_ref_t;
static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Utf8View_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Utf8View_ref_t;
static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_BinaryView_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_BinaryView_ref_t;
static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_FixedSizeBinary_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_ref_t;
static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Bool_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Bool_ref_t;
static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Bool, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_RunEndEncoded_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_RunEndEncoded_ref_t;
static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, 0)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Decimal_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Decimal_ref_t;
static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Decimal, 3)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Date_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Date_ref_t;
static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Date, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Time_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Time_ref_t;
static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Time, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Timestamp_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Timestamp_ref_t;
static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Interval_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Interval_ref_t;
static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Interval, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Duration_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Duration_ref_t;
static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Duration, 1)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_KeyValue_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_KeyValue_ref_t;
static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_DictionaryEncoding_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_ref_t;
static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, 4)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Field_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Field_ref_t;
static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Field, 7)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Schema_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Schema_ref_t;
static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Schema, 4)

#define __org_apache_arrow_flatbuf_Null_formal_args
#define __org_apache_arrow_flatbuf_Null_call_args
static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Null, org_apache_arrow_flatbuf_Null_file_identifier, org_apache_arrow_flatbuf_Null_type_identifier)

#define __org_apache_arrow_flatbuf_Struct__formal_args
#define __org_apache_arrow_flatbuf_Struct__call_args
static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Struct_, org_apache_arrow_flatbuf_Struct__file_identifier, org_apache_arrow_flatbuf_Struct__type_identifier)

#define __org_apache_arrow_flatbuf_List_formal_args
#define __org_apache_arrow_flatbuf_List_call_args
static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_List, org_apache_arrow_flatbuf_List_file_identifier, org_apache_arrow_flatbuf_List_type_identifier)

#define __org_apache_arrow_flatbuf_LargeList_formal_args
#define __org_apache_arrow_flatbuf_LargeList_call_args
static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeList, org_apache_arrow_flatbuf_LargeList_file_identifier, org_apache_arrow_flatbuf_LargeList_type_identifier)

#define __org_apache_arrow_flatbuf_ListView_formal_args
#define __org_apache_arrow_flatbuf_ListView_call_args
static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_ListView, org_apache_arrow_flatbuf_ListView_file_identifier, org_apache_arrow_flatbuf_ListView_type_identifier)

#define __org_apache_arrow_flatbuf_LargeListView_formal_args
#define __org_apache_arrow_flatbuf_LargeListView_call_args
static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeListView, org_apache_arrow_flatbuf_LargeListView_file_identifier, org_apache_arrow_flatbuf_LargeListView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeList_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeList_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList_file_identifier, org_apache_arrow_flatbuf_FixedSizeList_type_identifier)

#define __org_apache_arrow_flatbuf_Map_formal_args , flatbuffers_bool_t v0
#define __org_apache_arrow_flatbuf_Map_call_args , v0
static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Map, org_apache_arrow_flatbuf_Map_file_identifier, org_apache_arrow_flatbuf_Map_type_identifier)

#define __org_apache_arrow_flatbuf_Union_formal_args , org_apache_arrow_flatbuf_UnionMode_enum_t v0, flatbuffers_int32_vec_ref_t v1
#define __org_apache_arrow_flatbuf_Union_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Union, org_apache_arrow_flatbuf_Union_file_identifier, org_apache_arrow_flatbuf_Union_type_identifier)

#define __org_apache_arrow_flatbuf_Int_formal_args , int32_t v0, flatbuffers_bool_t v1
#define __org_apache_arrow_flatbuf_Int_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_Int_file_identifier, org_apache_arrow_flatbuf_Int_type_identifier)

#define __org_apache_arrow_flatbuf_FloatingPoint_formal_args , org_apache_arrow_flatbuf_Precision_enum_t v0
#define __org_apache_arrow_flatbuf_FloatingPoint_call_args , v0
static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint_file_identifier, org_apache_arrow_flatbuf_FloatingPoint_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8_formal_args
#define __org_apache_arrow_flatbuf_Utf8_call_args
static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8, org_apache_arrow_flatbuf_Utf8_file_identifier, org_apache_arrow_flatbuf_Utf8_type_identifier)

#define __org_apache_arrow_flatbuf_Binary_formal_args
#define __org_apache_arrow_flatbuf_Binary_call_args
static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Binary, org_apache_arrow_flatbuf_Binary_file_identifier, org_apache_arrow_flatbuf_Binary_type_identifier)

#define __org_apache_arrow_flatbuf_LargeUtf8_formal_args
#define __org_apache_arrow_flatbuf_LargeUtf8_call_args
static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8_file_identifier, org_apache_arrow_flatbuf_LargeUtf8_type_identifier)

#define __org_apache_arrow_flatbuf_LargeBinary_formal_args
#define __org_apache_arrow_flatbuf_LargeBinary_call_args
static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_LargeBinary, org_apache_arrow_flatbuf_LargeBinary_file_identifier, org_apache_arrow_flatbuf_LargeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Utf8View_formal_args
#define __org_apache_arrow_flatbuf_Utf8View_call_args
static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Utf8View, org_apache_arrow_flatbuf_Utf8View_file_identifier, org_apache_arrow_flatbuf_Utf8View_type_identifier)

#define __org_apache_arrow_flatbuf_BinaryView_formal_args
#define __org_apache_arrow_flatbuf_BinaryView_call_args
static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_BinaryView, org_apache_arrow_flatbuf_BinaryView_file_identifier, org_apache_arrow_flatbuf_BinaryView_type_identifier)

#define __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args , int32_t v0
#define __org_apache_arrow_flatbuf_FixedSizeBinary_call_args , v0
static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary_file_identifier, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier)

#define __org_apache_arrow_flatbuf_Bool_formal_args
#define __org_apache_arrow_flatbuf_Bool_call_args
static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Bool, org_apache_arrow_flatbuf_Bool_file_identifier, org_apache_arrow_flatbuf_Bool_type_identifier)

#define __org_apache_arrow_flatbuf_RunEndEncoded_formal_args
#define __org_apache_arrow_flatbuf_RunEndEncoded_call_args
static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded_file_identifier, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier)

#define __org_apache_arrow_flatbuf_Decimal_formal_args , int32_t v0, int32_t v1, int32_t v2
#define __org_apache_arrow_flatbuf_Decimal_call_args , v0, v1, v2
static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Decimal, org_apache_arrow_flatbuf_Decimal_file_identifier, org_apache_arrow_flatbuf_Decimal_type_identifier)

#define __org_apache_arrow_flatbuf_Date_formal_args , org_apache_arrow_flatbuf_DateUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Date_call_args , v0
static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Date, org_apache_arrow_flatbuf_Date_file_identifier, org_apache_arrow_flatbuf_Date_type_identifier)

#define __org_apache_arrow_flatbuf_Time_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, int32_t v1
#define __org_apache_arrow_flatbuf_Time_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Time, org_apache_arrow_flatbuf_Time_file_identifier, org_apache_arrow_flatbuf_Time_type_identifier)

#define __org_apache_arrow_flatbuf_Timestamp_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_Timestamp_call_args , v0, v1
static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Timestamp, org_apache_arrow_flatbuf_Timestamp_file_identifier, org_apache_arrow_flatbuf_Timestamp_type_identifier)

#define __org_apache_arrow_flatbuf_Interval_formal_args , org_apache_arrow_flatbuf_IntervalUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Interval_call_args , v0
static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Interval, org_apache_arrow_flatbuf_Interval_file_identifier, org_apache_arrow_flatbuf_Interval_type_identifier)

#define __org_apache_arrow_flatbuf_Duration_formal_args , org_apache_arrow_flatbuf_TimeUnit_enum_t v0
#define __org_apache_arrow_flatbuf_Duration_call_args , v0
static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Duration, org_apache_arrow_flatbuf_Duration_file_identifier, org_apache_arrow_flatbuf_Duration_type_identifier)

#define __org_apache_arrow_flatbuf_KeyValue_formal_args , flatbuffers_string_ref_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_KeyValue_call_args , v0, v1
static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_KeyValue_file_identifier, org_apache_arrow_flatbuf_KeyValue_type_identifier)

#define __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args , int64_t v0, org_apache_arrow_flatbuf_Int_ref_t v1, flatbuffers_bool_t v2, org_apache_arrow_flatbuf_DictionaryKind_enum_t v3
#define __org_apache_arrow_flatbuf_DictionaryEncoding_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_DictionaryEncoding_file_identifier, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier)

#define __org_apache_arrow_flatbuf_Field_formal_args ,\
  flatbuffers_string_ref_t v0, flatbuffers_bool_t v1, org_apache_arrow_flatbuf_Type_union_ref_t v3, org_apache_arrow_flatbuf_DictionaryEncoding_ref_t v4, org_apache_arrow_flatbuf_Field_vec_ref_t v5, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v6
#define __org_apache_arrow_flatbuf_Field_call_args ,\
  v0, v1, v3, v4, v5, v6
static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field_file_identifier, org_apache_arrow_flatbuf_Field_type_identifier)

#define __org_apache_arrow_flatbuf_Schema_formal_args , org_apache_arrow_flatbuf_Endianness_enum_t v0, org_apache_arrow_flatbuf_Field_vec_ref_t v1, org_apache_arrow_flatbuf_KeyValue_vec_ref_t v2, org_apache_arrow_flatbuf_Feature_vec_ref_t v3
#define __org_apache_arrow_flatbuf_Schema_call_args , v0, v1, v2, v3
static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Schema, org_apache_arrow_flatbuf_Schema_file_identifier, org_apache_arrow_flatbuf_Schema_type_identifier)

static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_NONE(void)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_NONE; uref.value = 0; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Null; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Int; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FloatingPoint; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Binary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Bool; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Decimal; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Date; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Time; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Timestamp; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Interval; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_List; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Struct_; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Union; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_FixedSizeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Map; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Duration; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeBinary; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeUtf8; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeList; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_RunEndEncoded; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_BinaryView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_Utf8View; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_ListView; uref.value = ref; return uref; }
static inline org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_ref_t ref)
{ org_apache_arrow_flatbuf_Type_union_ref_t uref; uref.type = org_apache_arrow_flatbuf_Type_LargeListView; uref.value = ref; return uref; }
__flatbuffers_build_union_vector(flatbuffers_, org_apache_arrow_flatbuf_Type)

static org_apache_arrow_flatbuf_Type_union_ref_t org_apache_arrow_flatbuf_Type_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Type_union_t u)
{
    switch (u.type) {
    case 1: return org_apache_arrow_flatbuf_Type_as_Null(org_apache_arrow_flatbuf_Null_clone(B, (org_apache_arrow_flatbuf_Null_table_t)u.value));
    case 2: return org_apache_arrow_flatbuf_Type_as_Int(org_apache_arrow_flatbuf_Int_clone(B, (org_apache_arrow_flatbuf_Int_table_t)u.value));
    case 3: return org_apache_arrow_flatbuf_Type_as_FloatingPoint(org_apache_arrow_flatbuf_FloatingPoint_clone(B, (org_apache_arrow_flatbuf_FloatingPoint_table_t)u.value));
    case 4: return org_apache_arrow_flatbuf_Type_as_Binary(org_apache_arrow_flatbuf_Binary_clone(B, (org_apache_arrow_flatbuf_Binary_table_t)u.value));
    case 5: return org_apache_arrow_flatbuf_Type_as_Utf8(org_apache_arrow_flatbuf_Utf8_clone(B, (org_apache_arrow_flatbuf_Utf8_table_t)u.value));
    case 6: return org_apache_arrow_flatbuf_Type_as_Bool(org_apache_arrow_flatbuf_Bool_clone(B, (org_apache_arrow_flatbuf_Bool_table_t)u.value));
    case 7: return org_apache_arrow_flatbuf_Type_as_Decimal(org_apache_arrow_flatbuf_Decimal_clone(B, (org_apache_arrow_flatbuf_Decimal_table_t)u.value));
    case 8: return org_apache_arrow_flatbuf_Type_as_Date(org_apache_arrow_flatbuf_Date_clone(B, (org_apache_arrow_flatbuf_Date_table_t)u.value));
    case 9: return org_apache_arrow_flatbuf_Type_as_Time(org_apache_arrow_flatbuf_Time_clone(B, (org_apache_arrow_flatbuf_Time_table_t)u.value));
    case 10: return org_apache_arrow_flatbuf_Type_as_Timestamp(org_apache_arrow_flatbuf_Timestamp_clone(B, (org_apache_arrow_flatbuf_Timestamp_table_t)u.value));
    case 11: return org_apache_arrow_flatbuf_Type_as_Interval(org_apache_arrow_flatbuf_Interval_clone(B, (org_apache_arrow_flatbuf_Interval_table_t)u.value));
    case 12: return org_apache_arrow_flatbuf_Type_as_List(org_apache_arrow_flatbuf_List_clone(B, (org_apache_arrow_flatbuf_List_table_t)u.value));
    case 13: return org_apache_arrow_flatbuf_Type_as_Struct_(org_apache_arrow_flatbuf_Struct__clone(B, (org_apache_arrow_flatbuf_Struct__table_t)u.value));
    case 14: return org_apache_arrow_flatbuf_Type_as_Union(org_apache_arrow_flatbuf_Union_clone(B, (org_apache_arrow_flatbuf_Union_table_t)u.value));
    case 15: return org_apache_arrow_flatbuf_Type_as_FixedSizeBinary(org_apache_arrow_flatbuf_FixedSizeBinary_clone(B, (org_apache_arrow_flatbuf_FixedSizeBinary_table_t)u.value));
    case 16: return org_apache_arrow_flatbuf_Type_as_FixedSizeList(org_apache_arrow_flatbuf_FixedSizeList_clone(B, (org_apache_arrow_flatbuf_FixedSizeList_table_t)u.value));
    case 17: return org_apache_arrow_flatbuf_Type_as_Map(org_apache_arrow_flatbuf_Map_clone(B, (org_apache_arrow_flatbuf_Map_table_t)u.value));
    case 18: return org_apache_arrow_flatbuf_Type_as_Duration(org_apache_arrow_flatbuf_Duration_clone(B, (org_apache_arrow_flatbuf_Duration_table_t)u.value));
    case 19: return org_apache_arrow_flatbuf_Type_as_LargeBinary(org_apache_arrow_flatbuf_LargeBinary_clone(B, (org_apache_arrow_flatbuf_LargeBinary_table_t)u.value));
    case 20: return org_apache_arrow_flatbuf_Type_as_LargeUtf8(org_apache_arrow_flatbuf_LargeUtf8_clone(B, (org_apache_arrow_flatbuf_LargeUtf8_table_t)u.value));
    case 21: return org_apache_arrow_flatbuf_Type_as_LargeList(org_apache_arrow_flatbuf_LargeList_clone(B, (org_apache_arrow_flatbuf_LargeList_table_t)u.value));
    case 22: return org_apache_arrow_flatbuf_Type_as_RunEndEncoded(org_apache_arrow_flatbuf_RunEndEncoded_clone(B, (org_apache_arrow_flatbuf_RunEndEncoded_table_t)u.value));
    case 23: return org_apache_arrow_flatbuf_Type_as_BinaryView(org_apache_arrow_flatbuf_BinaryView_clone(B, (org_apache_arrow_flatbuf_BinaryView_table_t)u.value));
    case 24: return org_apache_arrow_flatbuf_Type_as_Utf8View(org_apache_arrow_flatbuf_Utf8View_clone(B, (org_apache_arrow_flatbuf_Utf8View_table_t)u.value));
    case 25: return org_apache_arrow_flatbuf_Type_as_ListView(org_apache_arrow_flatbuf_ListView_clone(B, (org_apache_arrow_flatbuf_ListView_table_t)u.value));
    case 26: return org_apache_arrow_flatbuf_Type_as_LargeListView(org_apache_arrow_flatbuf_LargeListView_clone(B, (org_apache_arrow_flatbuf_LargeListView_table_t)u.value));
    default: return org_apache_arrow_flatbuf_Type_as_NONE();
    }
}


static inline org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Null_formal_args)
{
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Null_end(B);
}

static org_apache_arrow_flatbuf_Null_ref_t org_apache_arrow_flatbuf_Null_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Null_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Null_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Null_end(B));
}


static inline org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Struct__formal_args)
{
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Struct__end(B);
}

static org_apache_arrow_flatbuf_Struct__ref_t org_apache_arrow_flatbuf_Struct__clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Struct__table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Struct__start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Struct__end(B));
}


static inline org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_List_formal_args)
{
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_List_end(B);
}

static org_apache_arrow_flatbuf_List_ref_t org_apache_arrow_flatbuf_List_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_List_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_List_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_List_end(B));
}


static inline org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeList_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeList_end(B);
}

static org_apache_arrow_flatbuf_LargeList_ref_t org_apache_arrow_flatbuf_LargeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeList_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeList_end(B));
}


static inline org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_ListView_formal_args)
{
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_ListView_end(B);
}

static org_apache_arrow_flatbuf_ListView_ref_t org_apache_arrow_flatbuf_ListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_ListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_ListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_ListView_end(B));
}


static inline org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeListView_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeListView_end(B);
}

static org_apache_arrow_flatbuf_LargeListView_ref_t org_apache_arrow_flatbuf_LargeListView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeListView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeListView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeListView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeList_listSize, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeList)

static inline org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeList_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeList_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeList_ref_t org_apache_arrow_flatbuf_FixedSizeList_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeList_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeList_start(B)
        || org_apache_arrow_flatbuf_FixedSizeList_listSize_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeList_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Map_keysSorted, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Map)

static inline org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Map_formal_args)
{
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Map_end(B);
}

static org_apache_arrow_flatbuf_Map_ref_t org_apache_arrow_flatbuf_Map_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Map_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Map_start(B)
        || org_apache_arrow_flatbuf_Map_keysSorted_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Map_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Union_mode, org_apache_arrow_flatbuf_UnionMode, org_apache_arrow_flatbuf_UnionMode_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Union)
__flatbuffers_build_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Union_typeIds, flatbuffers_int32, int32_t, org_apache_arrow_flatbuf_Union)

static inline org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Union_formal_args)
{
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_add(B, v1)
        || org_apache_arrow_flatbuf_Union_mode_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Union_end(B);
}

static org_apache_arrow_flatbuf_Union_ref_t org_apache_arrow_flatbuf_Union_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Union_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Union_start(B)
        || org_apache_arrow_flatbuf_Union_typeIds_pick(B, t)
        || org_apache_arrow_flatbuf_Union_mode_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Union_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Int_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Int)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Int_is_signed, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Int)

static inline org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Int_formal_args)
{
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_add(B, v0)
        || org_apache_arrow_flatbuf_Int_is_signed_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Int_end(B);
}

static org_apache_arrow_flatbuf_Int_ref_t org_apache_arrow_flatbuf_Int_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Int_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Int_start(B)
        || org_apache_arrow_flatbuf_Int_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Int_is_signed_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Int_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FloatingPoint_precision, org_apache_arrow_flatbuf_Precision, org_apache_arrow_flatbuf_Precision_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_FloatingPoint)

static inline org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FloatingPoint_formal_args)
{
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FloatingPoint_end(B);
}

static org_apache_arrow_flatbuf_FloatingPoint_ref_t org_apache_arrow_flatbuf_FloatingPoint_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FloatingPoint_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FloatingPoint_start(B)
        || org_apache_arrow_flatbuf_FloatingPoint_precision_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FloatingPoint_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8_end(B);
}

static org_apache_arrow_flatbuf_Utf8_ref_t org_apache_arrow_flatbuf_Utf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8_end(B));
}


static inline org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Binary_formal_args)
{
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Binary_end(B);
}

static org_apache_arrow_flatbuf_Binary_ref_t org_apache_arrow_flatbuf_Binary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Binary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Binary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Binary_end(B));
}


static inline org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeUtf8_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeUtf8_end(B);
}

static org_apache_arrow_flatbuf_LargeUtf8_ref_t org_apache_arrow_flatbuf_LargeUtf8_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeUtf8_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeUtf8_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeUtf8_end(B));
}


static inline org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_LargeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_LargeBinary_end(B);
}

static org_apache_arrow_flatbuf_LargeBinary_ref_t org_apache_arrow_flatbuf_LargeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_LargeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_LargeBinary_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_LargeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Utf8View_formal_args)
{
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Utf8View_end(B);
}

static org_apache_arrow_flatbuf_Utf8View_ref_t org_apache_arrow_flatbuf_Utf8View_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Utf8View_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Utf8View_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Utf8View_end(B));
}


static inline org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_BinaryView_formal_args)
{
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_BinaryView_end(B);
}

static org_apache_arrow_flatbuf_BinaryView_ref_t org_apache_arrow_flatbuf_BinaryView_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_BinaryView_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_BinaryView_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_BinaryView_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_FixedSizeBinary)

static inline org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_FixedSizeBinary_formal_args)
{
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_FixedSizeBinary_end(B);
}

static org_apache_arrow_flatbuf_FixedSizeBinary_ref_t org_apache_arrow_flatbuf_FixedSizeBinary_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_FixedSizeBinary_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_FixedSizeBinary_start(B)
        || org_apache_arrow_flatbuf_FixedSizeBinary_byteWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_FixedSizeBinary_end(B));
}


static inline org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Bool_formal_args)
{
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Bool_end(B);
}

static org_apache_arrow_flatbuf_Bool_ref_t org_apache_arrow_flatbuf_Bool_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Bool_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Bool_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Bool_end(B));
}


static inline org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_RunEndEncoded_formal_args)
{
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_RunEndEncoded_end(B);
}

static org_apache_arrow_flatbuf_RunEndEncoded_ref_t org_apache_arrow_flatbuf_RunEndEncoded_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_RunEndEncoded_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_RunEndEncoded_start(B)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_RunEndEncoded_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Decimal_precision, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Decimal_scale, flatbuffers_int32, int32_t, 4, 4, INT32_C(0), org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_Decimal_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(128), org_apache_arrow_flatbuf_Decimal)

static inline org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Decimal_formal_args)
{
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_add(B, v0)
        || org_apache_arrow_flatbuf_Decimal_scale_add(B, v1)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Decimal_end(B);
}

static org_apache_arrow_flatbuf_Decimal_ref_t org_apache_arrow_flatbuf_Decimal_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Decimal_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Decimal_start(B)
        || org_apache_arrow_flatbuf_Decimal_precision_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_scale_pick(B, t)
        || org_apache_arrow_flatbuf_Decimal_bitWidth_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Decimal_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Date_unit, org_apache_arrow_flatbuf_DateUnit, org_apache_arrow_flatbuf_DateUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Date)

static inline org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Date_formal_args)
{
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Date_end(B);
}

static org_apache_arrow_flatbuf_Date_ref_t org_apache_arrow_flatbuf_Date_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Date_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Date_start(B)
        || org_apache_arrow_flatbuf_Date_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Date_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Time_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Time)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Time_bitWidth, flatbuffers_int32, int32_t, 4, 4, INT32_C(32), org_apache_arrow_flatbuf_Time)

static inline org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Time_formal_args)
{
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_add(B, v1)
        || org_apache_arrow_flatbuf_Time_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Time_end(B);
}

static org_apache_arrow_flatbuf_Time_ref_t org_apache_arrow_flatbuf_Time_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Time_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Time_start(B)
        || org_apache_arrow_flatbuf_Time_bitWidth_pick(B, t)
        || org_apache_arrow_flatbuf_Time_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Time_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_Timestamp_timezone, org_apache_arrow_flatbuf_Timestamp)

static inline org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Timestamp_formal_args)
{
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_add(B, v1)
        || org_apache_arrow_flatbuf_Timestamp_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Timestamp_end(B);
}

static org_apache_arrow_flatbuf_Timestamp_ref_t org_apache_arrow_flatbuf_Timestamp_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Timestamp_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Timestamp_start(B)
        || org_apache_arrow_flatbuf_Timestamp_timezone_pick(B, t)
        || org_apache_arrow_flatbuf_Timestamp_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Timestamp_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Interval_unit, org_apache_arrow_flatbuf_IntervalUnit, org_apache_arrow_flatbuf_IntervalUnit_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Interval)

static inline org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Interval_formal_args)
{
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Interval_end(B);
}

static org_apache_arrow_flatbuf_Interval_ref_t org_apache_arrow_flatbuf_Interval_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Interval_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Interval_start(B)
        || org_apache_arrow_flatbuf_Interval_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Interval_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Duration_unit, org_apache_arrow_flatbuf_TimeUnit, org_apache_arrow_flatbuf_TimeUnit_enum_t, 2, 2, INT16_C(1), org_apache_arrow_flatbuf_Duration)

static inline org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Duration_formal_args)
{
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Duration_end(B);
}

static org_apache_arrow_flatbuf_Duration_ref_t org_apache_arrow_flatbuf_Duration_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Duration_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Duration_start(B)
        || org_apache_arrow_flatbuf_Duration_unit_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Duration_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_key, org_apache_arrow_flatbuf_KeyValue)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_KeyValue_value, org_apache_arrow_flatbuf_KeyValue)

static inline org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_KeyValue_formal_args)
{
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_add(B, v0)
        || org_apache_arrow_flatbuf_KeyValue_value_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_KeyValue_end(B);
}

static org_apache_arrow_flatbuf_KeyValue_ref_t org_apache_arrow_flatbuf_KeyValue_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_KeyValue_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_KeyValue_start(B)
        || org_apache_arrow_flatbuf_KeyValue_key_pick(B, t)
        || org_apache_arrow_flatbuf_KeyValue_value_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_KeyValue_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_id, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_table_field(1, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_indexType, org_apache_arrow_flatbuf_Int, org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(2, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)
__flatbuffers_build_scalar_field(3, flatbuffers_, org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind, org_apache_arrow_flatbuf_DictionaryKind, org_apache_arrow_flatbuf_DictionaryKind_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_DictionaryEncoding)

static inline org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_DictionaryEncoding_formal_args)
{
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_add(B, v0)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_add(B, v1)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_add(B, v3)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_add(B, v2)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_DictionaryEncoding_end(B);
}

static org_apache_arrow_flatbuf_DictionaryEncoding_ref_t org_apache_arrow_flatbuf_DictionaryEncoding_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_DictionaryEncoding_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_DictionaryEncoding_start(B)
        || org_apache_arrow_flatbuf_DictionaryEncoding_id_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_indexType_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind_pick(B, t)
        || org_apache_arrow_flatbuf_DictionaryEncoding_isOrdered_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_DictionaryEncoding_end(B));
}

__flatbuffers_build_string_field(0, flatbuffers_, org_apache_arrow_flatbuf_Field_name, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_scalar_field(1, flatbuffers_, org_apache_arrow_flatbuf_Field_nullable, flatbuffers_bool, flatbuffers_bool_t, 1, 1, UINT8_C(0), org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_field(3, flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Field_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_field(4, flatbuffers_, org_apache_arrow_flatbuf_Field_dictionary, org_apache_arrow_flatbuf_DictionaryEncoding, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(5, flatbuffers_, org_apache_arrow_flatbuf_Field_children, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Field)
__flatbuffers_build_table_vector_field(6, flatbuffers_, org_apache_arrow_flatbuf_Field_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Field)

static inline org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Field_formal_args)
{
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_add(B, v0)
        || org_apache_arrow_flatbuf_Field_type_add_value(B, v3)
        || org_apache_arrow_flatbuf_Field_dictionary_add(B, v4)
        || org_apache_arrow_flatbuf_Field_children_add(B, v5)
        || org_apache_arrow_flatbuf_Field_custom_metadata_add(B, v6)
        || org_apache_arrow_flatbuf_Field_nullable_add(B, v1)
        || org_apache_arrow_flatbuf_Field_type_add_type(B, v3.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Field_end(B);
}

static org_apache_arrow_flatbuf_Field_ref_t org_apache_arrow_flatbuf_Field_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Field_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Field_start(B)
        || org_apache_arrow_flatbuf_Field_name_pick(B, t)
        || org_apache_arrow_flatbuf_Field_type_pick(B, t)
        || org_apache_arrow_flatbuf_Field_dictionary_pick(B, t)
        || org_apache_arrow_flatbuf_Field_children_pick(B, t)
        || org_apache_arrow_flatbuf_Field_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Field_nullable_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Field_end(B));
}

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_Schema_endianness, org_apache_arrow_flatbuf_Endianness, org_apache_arrow_flatbuf_Endianness_enum_t, 2, 2, INT16_C(0), org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(1, flatbuffers_, org_apache_arrow_flatbuf_Schema_fields, org_apache_arrow_flatbuf_Field, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_Schema_custom_metadata, org_apache_arrow_flatbuf_KeyValue, org_apache_arrow_flatbuf_Schema)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_Schema_features, org_apache_arrow_flatbuf_Feature, org_apache_arrow_flatbuf_Feature_enum_t, org_apache_arrow_flatbuf_Schema)

static inline org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Schema_formal_args)
{
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_add(B, v1)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_add(B, v2)
        || org_apache_arrow_flatbuf_Schema_features_add(B, v3)
        || org_apache_arrow_flatbuf_Schema_endianness_add(B, v0)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Schema_end(B);
}

static org_apache_arrow_flatbuf_Schema_ref_t org_apache_arrow_flatbuf_Schema_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Schema_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Schema_start(B)
        || org_apache_arrow_flatbuf_Schema_fields_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_custom_metadata_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_features_pick(B, t)
        || org_apache_arrow_flatbuf_Schema_endianness_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Schema_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_BUILDER_H */
#ifndef SCHEMA_VERIFIER_H
#define SCHEMA_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_Type_union_verifier(flatcc_union_verifier_descriptor_t *ud)
{
    switch (ud->type) {
    case 1: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Null_verify_table); /* Null */
    case 2: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Int_verify_table); /* Int */
    case 3: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FloatingPoint_verify_table); /* FloatingPoint */
    case 4: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Binary_verify_table); /* Binary */
    case 5: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8_verify_table); /* Utf8 */
    case 6: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Bool_verify_table); /* Bool */
    case 7: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Decimal_verify_table); /* Decimal */
    case 8: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Date_verify_table); /* Date */
    case 9: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Time_verify_table); /* Time */
    case 10: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Timestamp_verify_table); /* Timestamp */
    case 11: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Interval_verify_table); /* Interval */
    case 12: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_List_verify_table); /* List */
    case 13: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Struct__verify_table); /* Struct_ */
    case 14: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Union_verify_table); /* Union */
    case 15: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeBinary_verify_table); /* FixedSizeBinary */
    case 16: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_FixedSizeList_verify_table); /* FixedSizeList */
    case 17: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Map_verify_table); /* Map */
    case 18: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Duration_verify_table); /* Duration */
    case 19: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeBinary_verify_table); /* LargeBinary */
    case 20: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeUtf8_verify_table); /* LargeUtf8 */
    case 21: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeList_verify_table); /* LargeList */
    case 22: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_RunEndEncoded_verify_table); /* RunEndEncoded */
    case 23: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_BinaryView_verify_table); /* BinaryView */
    case 24: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_Utf8View_verify_table); /* Utf8View */
    case 25: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_ListView_verify_table); /* ListView */
    case 26: return flatcc_verify_union_table(ud, org_apache_arrow_flatbuf_LargeListView_verify_table); /* LargeListView */
    default: return flatcc_verify_ok;
    }
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_identifier, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Buffer_type_hash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_struct_as_typed_root_with_size(buf, bufsiz, thash, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root(buf, bufsiz, fid, 16, 8);
}

static inline int org_apache_arrow_flatbuf_Buffer_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_struct_as_root_with_size(buf, bufsiz, fid, 16, 8);
}

static int org_apache_arrow_flatbuf_Null_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Null_type_identifier, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static inline int org_apache_arrow_flatbuf_Null_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Null_verify_table);
}

static int org_apache_arrow_flatbuf_Struct__verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Struct__type_identifier, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static inline int org_apache_arrow_flatbuf_Struct__verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Struct__verify_table);
}

static int org_apache_arrow_flatbuf_List_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_List_type_identifier, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static inline int org_apache_arrow_flatbuf_List_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_List_verify_table);
}

static int org_apache_arrow_flatbuf_LargeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeList_type_identifier, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeList_verify_table);
}

static int org_apache_arrow_flatbuf_ListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_ListView_type_identifier, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_ListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_ListView_verify_table);
}

static int org_apache_arrow_flatbuf_LargeListView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeListView_type_identifier, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeListView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeListView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeList_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* listSize */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeList_type_identifier, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeList_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeList_verify_table);
}

static int org_apache_arrow_flatbuf_Map_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 1, 1) /* keysSorted */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Map_type_identifier, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static inline int org_apache_arrow_flatbuf_Map_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Map_verify_table);
}

static int org_apache_arrow_flatbuf_Union_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* mode */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 1, 0, 4, 4, INT64_C(1073741823)) /* typeIds */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Union_type_identifier, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static inline int org_apache_arrow_flatbuf_Union_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Union_verify_table);
}

static int org_apache_arrow_flatbuf_Int_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* bitWidth */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* is_signed */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Int_type_identifier, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static inline int org_apache_arrow_flatbuf_Int_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Int_verify_table);
}

static int org_apache_arrow_flatbuf_FloatingPoint_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* precision */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FloatingPoint_type_identifier, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static inline int org_apache_arrow_flatbuf_FloatingPoint_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FloatingPoint_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8_type_identifier, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8_verify_table);
}

static int org_apache_arrow_flatbuf_Binary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Binary_type_identifier, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static inline int org_apache_arrow_flatbuf_Binary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Binary_verify_table);
}

static int org_apache_arrow_flatbuf_LargeUtf8_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeUtf8_type_identifier, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeUtf8_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeUtf8_verify_table);
}

static int org_apache_arrow_flatbuf_LargeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_LargeBinary_type_identifier, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_LargeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_LargeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Utf8View_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Utf8View_type_identifier, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static inline int org_apache_arrow_flatbuf_Utf8View_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Utf8View_verify_table);
}

static int org_apache_arrow_flatbuf_BinaryView_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_BinaryView_type_identifier, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static inline int org_apache_arrow_flatbuf_BinaryView_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_BinaryView_verify_table);
}

static int org_apache_arrow_flatbuf_FixedSizeBinary_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* byteWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_FixedSizeBinary_type_identifier, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static inline int org_apache_arrow_flatbuf_FixedSizeBinary_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_FixedSizeBinary_verify_table);
}

static int org_apache_arrow_flatbuf_Bool_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Bool_type_identifier, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static inline int org_apache_arrow_flatbuf_Bool_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Bool_verify_table);
}

static int org_apache_arrow_flatbuf_RunEndEncoded_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_RunEndEncoded_type_identifier, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static inline int org_apache_arrow_flatbuf_RunEndEncoded_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_RunEndEncoded_verify_table);
}

static int org_apache_arrow_flatbuf_Decimal_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 4, 4) /* precision */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* scale */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Decimal_type_identifier, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static inline int org_apache_arrow_flatbuf_Decimal_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Decimal_verify_table);
}

static int org_apache_arrow_flatbuf_Date_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Date_type_identifier, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static inline int org_apache_arrow_flatbuf_Date_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Date_verify_table);
}

static int org_apache_arrow_flatbuf_Time_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 4, 4) /* bitWidth */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Time_type_identifier, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static inline int org_apache_arrow_flatbuf_Time_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Time_verify_table);
}

static int org_apache_arrow_flatbuf_Timestamp_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* timezone */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Timestamp_type_identifier, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static inline int org_apache_arrow_flatbuf_Timestamp_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Timestamp_verify_table);
}

static int org_apache_arrow_flatbuf_Interval_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Interval_type_identifier, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static inline int org_apache_arrow_flatbuf_Interval_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Interval_verify_table);
}

static int org_apache_arrow_flatbuf_Duration_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* unit */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Duration_type_identifier, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static inline int org_apache_arrow_flatbuf_Duration_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Duration_verify_table);
}

static int org_apache_arrow_flatbuf_KeyValue_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* key */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* value */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_KeyValue_type_identifier, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static inline int org_apache_arrow_flatbuf_KeyValue_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_KeyValue_verify_table);
}

static int org_apache_arrow_flatbuf_DictionaryEncoding_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* id */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 1, 0, &org_apache_arrow_flatbuf_Int_verify_table) /* indexType */)) return ret;
    if ((ret = flatcc_verify_field(td, 2, 1, 1) /* isOrdered */)) return ret;
    if ((ret = flatcc_verify_field(td, 3, 2, 2) /* dictionaryKind */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_DictionaryEncoding_type_identifier, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static inline int org_apache_arrow_flatbuf_DictionaryEncoding_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table);
}

static int org_apache_arrow_flatbuf_Field_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_string_field(td, 0, 0) /* name */)) return ret;
    if ((ret = flatcc_verify_field(td, 1, 1, 1) /* nullable */)) return ret;
    if ((ret = flatcc_verify_union_field(td, 3, 0, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_field(td, 4, 0, &org_apache_arrow_flatbuf_DictionaryEncoding_verify_table) /* dictionary */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 5, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* children */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 6, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Field_type_identifier, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static inline int org_apache_arrow_flatbuf_Field_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Field_verify_table);
}

static int org_apache_arrow_flatbuf_Schema_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 2, 2) /* endianness */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 1, 0, &org_apache_arrow_flatbuf_Field_verify_table) /* fields */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 0, &org_apache_arrow_flatbuf_KeyValue_verify_table) /* custom_metadata */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 0, 8, 8, INT64_C(536870911)) /* features */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Schema_type_identifier, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

static inline int org_apache_arrow_flatbuf_Schema_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Schema_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* SCHEMA_VERIFIER_H */
#ifndef TENSOR_READER_H
#define TENSOR_READER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef FLATBUFFERS_COMMON_READER_H
#include "flatbuffers_common_reader.h"
#endif
#ifndef SCHEMA_READER_H
#include "Schema_reader.h"
#endif
#include "flatcc/flatcc_flatbuffers.h"
#ifndef __alignas_is_defined
#include <stdalign.h>
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif


typedef const struct org_apache_arrow_flatbuf_TensorDim_table *org_apache_arrow_flatbuf_TensorDim_table_t;
typedef struct org_apache_arrow_flatbuf_TensorDim_table *org_apache_arrow_flatbuf_TensorDim_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_TensorDim_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_TensorDim_mutable_vec_t;
typedef const struct org_apache_arrow_flatbuf_Tensor_table *org_apache_arrow_flatbuf_Tensor_table_t;
typedef struct org_apache_arrow_flatbuf_Tensor_table *org_apache_arrow_flatbuf_Tensor_mutable_table_t;
typedef const flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Tensor_vec_t;
typedef flatbuffers_uoffset_t *org_apache_arrow_flatbuf_Tensor_mutable_vec_t;
#ifndef org_apache_arrow_flatbuf_TensorDim_file_identifier
#define org_apache_arrow_flatbuf_TensorDim_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_TensorDim_file_identifier */
#ifndef org_apache_arrow_flatbuf_TensorDim_identifier
#define org_apache_arrow_flatbuf_TensorDim_identifier 0
#endif
#define org_apache_arrow_flatbuf_TensorDim_type_hash ((flatbuffers_thash_t)0xbc6d7b25)
#define org_apache_arrow_flatbuf_TensorDim_type_identifier "\x25\x7b\x6d\xbc"
#ifndef org_apache_arrow_flatbuf_TensorDim_file_extension
#define org_apache_arrow_flatbuf_TensorDim_file_extension "bin"
#endif
#ifndef org_apache_arrow_flatbuf_Tensor_file_identifier
#define org_apache_arrow_flatbuf_Tensor_file_identifier 0
#endif
/* deprecated, use org_apache_arrow_flatbuf_Tensor_file_identifier */
#ifndef org_apache_arrow_flatbuf_Tensor_identifier
#define org_apache_arrow_flatbuf_Tensor_identifier 0
#endif
#define org_apache_arrow_flatbuf_Tensor_type_hash ((flatbuffers_thash_t)0x1764df19)
#define org_apache_arrow_flatbuf_Tensor_type_identifier "\x19\xdf\x64\x17"
#ifndef org_apache_arrow_flatbuf_Tensor_file_extension
#define org_apache_arrow_flatbuf_Tensor_file_extension "bin"
#endif



/**  ----------------------------------------------------------------------
 *  Data structures for dense tensors
 *  Shape data for a single axis in a tensor */
struct org_apache_arrow_flatbuf_TensorDim_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_TensorDim_vec_len(org_apache_arrow_flatbuf_TensorDim_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_TensorDim_table_t org_apache_arrow_flatbuf_TensorDim_vec_at(org_apache_arrow_flatbuf_TensorDim_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_TensorDim_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_TensorDim)

/**  Length of dimension */
__flatbuffers_define_scalar_field(0, org_apache_arrow_flatbuf_TensorDim, size, flatbuffers_int64, int64_t, INT64_C(0))
/**  Name of the dimension, optional */
__flatbuffers_define_string_field(1, org_apache_arrow_flatbuf_TensorDim, name, 0)

struct org_apache_arrow_flatbuf_Tensor_table { uint8_t unused__; };

static inline size_t org_apache_arrow_flatbuf_Tensor_vec_len(org_apache_arrow_flatbuf_Tensor_vec_t vec)
__flatbuffers_vec_len(vec)
static inline org_apache_arrow_flatbuf_Tensor_table_t org_apache_arrow_flatbuf_Tensor_vec_at(org_apache_arrow_flatbuf_Tensor_vec_t vec, size_t i)
__flatbuffers_offset_vec_at(org_apache_arrow_flatbuf_Tensor_table_t, vec, i, 0)
__flatbuffers_table_as_root(org_apache_arrow_flatbuf_Tensor)

/**  The type of data contained in a value cell. Currently only fixed-width
 *  value types are supported, no strings or nested types */
__flatbuffers_define_union_field(flatbuffers_, 1, org_apache_arrow_flatbuf_Tensor, type, org_apache_arrow_flatbuf_Type, 1)
/**  The dimensions of the tensor, optionally named */
__flatbuffers_define_vector_field(2, org_apache_arrow_flatbuf_Tensor, shape, org_apache_arrow_flatbuf_TensorDim_vec_t, 1)
/**  Non-negative byte offsets to advance one value cell along each dimension
 *  If omitted, default to row-major order (C-like). */
__flatbuffers_define_vector_field(3, org_apache_arrow_flatbuf_Tensor, strides, flatbuffers_int64_vec_t, 0)
/**  The location and size of the tensor's data */
__flatbuffers_define_struct_field(4, org_apache_arrow_flatbuf_Tensor, data, org_apache_arrow_flatbuf_Buffer_struct_t, 1)


#include "flatcc/flatcc_epilogue.h"
#endif /* TENSOR_READER_H */
#ifndef TENSOR_BUILDER_H
#define TENSOR_BUILDER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef TENSOR_READER_H
#include "Tensor_reader.h"
#endif
#ifndef FLATBUFFERS_COMMON_BUILDER_H
#include "flatbuffers_common_builder.h"
#endif
#ifndef SCHEMA_BUILDER_H
#include "Schema_builder.h"
#endif
#include "flatcc/flatcc_prologue.h"
#ifndef flatbuffers_identifier
#define flatbuffers_identifier 0
#endif
#ifndef flatbuffers_extension
#define flatbuffers_extension "bin"
#endif

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_TensorDim_required[] = { 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_TensorDim_ref_t;
static org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_TensorDim_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_TensorDim, 2)

static const flatbuffers_voffset_t __org_apache_arrow_flatbuf_Tensor_required[] = { 1, 2, 4, 0 };
typedef flatbuffers_ref_t org_apache_arrow_flatbuf_Tensor_ref_t;
static org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Tensor_table_t t);
__flatbuffers_build_table(flatbuffers_, org_apache_arrow_flatbuf_Tensor, 5)

#define __org_apache_arrow_flatbuf_TensorDim_formal_args , int64_t v0, flatbuffers_string_ref_t v1
#define __org_apache_arrow_flatbuf_TensorDim_call_args , v0, v1
static inline org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_TensorDim_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_TensorDim, org_apache_arrow_flatbuf_TensorDim_file_identifier, org_apache_arrow_flatbuf_TensorDim_type_identifier)

#define __org_apache_arrow_flatbuf_Tensor_formal_args , org_apache_arrow_flatbuf_Type_union_ref_t v1, org_apache_arrow_flatbuf_TensorDim_vec_ref_t v2, flatbuffers_int64_vec_ref_t v3, org_apache_arrow_flatbuf_Buffer_t *v4
#define __org_apache_arrow_flatbuf_Tensor_call_args , v1, v2, v3, v4
static inline org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Tensor_formal_args);
__flatbuffers_build_table_prolog(flatbuffers_, org_apache_arrow_flatbuf_Tensor, org_apache_arrow_flatbuf_Tensor_file_identifier, org_apache_arrow_flatbuf_Tensor_type_identifier)

__flatbuffers_build_scalar_field(0, flatbuffers_, org_apache_arrow_flatbuf_TensorDim_size, flatbuffers_int64, int64_t, 8, 8, INT64_C(0), org_apache_arrow_flatbuf_TensorDim)
__flatbuffers_build_string_field(1, flatbuffers_, org_apache_arrow_flatbuf_TensorDim_name, org_apache_arrow_flatbuf_TensorDim)

static inline org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_TensorDim_formal_args)
{
    if (org_apache_arrow_flatbuf_TensorDim_start(B)
        || org_apache_arrow_flatbuf_TensorDim_size_add(B, v0)
        || org_apache_arrow_flatbuf_TensorDim_name_add(B, v1)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_TensorDim_end(B);
}

static org_apache_arrow_flatbuf_TensorDim_ref_t org_apache_arrow_flatbuf_TensorDim_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_TensorDim_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_TensorDim_start(B)
        || org_apache_arrow_flatbuf_TensorDim_size_pick(B, t)
        || org_apache_arrow_flatbuf_TensorDim_name_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_TensorDim_end(B));
}

__flatbuffers_build_union_field(1, flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Null, org_apache_arrow_flatbuf_Null)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Int, org_apache_arrow_flatbuf_Int)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, FloatingPoint, org_apache_arrow_flatbuf_FloatingPoint)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Binary, org_apache_arrow_flatbuf_Binary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Utf8, org_apache_arrow_flatbuf_Utf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Bool, org_apache_arrow_flatbuf_Bool)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Decimal, org_apache_arrow_flatbuf_Decimal)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Date, org_apache_arrow_flatbuf_Date)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Time, org_apache_arrow_flatbuf_Time)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Timestamp, org_apache_arrow_flatbuf_Timestamp)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Interval, org_apache_arrow_flatbuf_Interval)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, List, org_apache_arrow_flatbuf_List)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Struct_, org_apache_arrow_flatbuf_Struct_)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Union, org_apache_arrow_flatbuf_Union)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, FixedSizeBinary, org_apache_arrow_flatbuf_FixedSizeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, FixedSizeList, org_apache_arrow_flatbuf_FixedSizeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Map, org_apache_arrow_flatbuf_Map)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Duration, org_apache_arrow_flatbuf_Duration)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeBinary, org_apache_arrow_flatbuf_LargeBinary)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeUtf8, org_apache_arrow_flatbuf_LargeUtf8)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeList, org_apache_arrow_flatbuf_LargeList)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, RunEndEncoded, org_apache_arrow_flatbuf_RunEndEncoded)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, BinaryView, org_apache_arrow_flatbuf_BinaryView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, Utf8View, org_apache_arrow_flatbuf_Utf8View)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, ListView, org_apache_arrow_flatbuf_ListView)
__flatbuffers_build_union_table_value_field(flatbuffers_, org_apache_arrow_flatbuf_Tensor_type, org_apache_arrow_flatbuf_Type, LargeListView, org_apache_arrow_flatbuf_LargeListView)
__flatbuffers_build_table_vector_field(2, flatbuffers_, org_apache_arrow_flatbuf_Tensor_shape, org_apache_arrow_flatbuf_TensorDim, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_vector_field(3, flatbuffers_, org_apache_arrow_flatbuf_Tensor_strides, flatbuffers_int64, int64_t, org_apache_arrow_flatbuf_Tensor)
__flatbuffers_build_struct_field(4, flatbuffers_, org_apache_arrow_flatbuf_Tensor_data, org_apache_arrow_flatbuf_Buffer, 16, 8, org_apache_arrow_flatbuf_Tensor)

static inline org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_create(flatbuffers_builder_t *B __org_apache_arrow_flatbuf_Tensor_formal_args)
{
    if (org_apache_arrow_flatbuf_Tensor_start(B)
        || org_apache_arrow_flatbuf_Tensor_data_add(B, v4)
        || org_apache_arrow_flatbuf_Tensor_type_add_value(B, v1)
        || org_apache_arrow_flatbuf_Tensor_shape_add(B, v2)
        || org_apache_arrow_flatbuf_Tensor_strides_add(B, v3)
        || org_apache_arrow_flatbuf_Tensor_type_add_type(B, v1.type)) {
        return 0;
    }
    return org_apache_arrow_flatbuf_Tensor_end(B);
}

static org_apache_arrow_flatbuf_Tensor_ref_t org_apache_arrow_flatbuf_Tensor_clone(flatbuffers_builder_t *B, org_apache_arrow_flatbuf_Tensor_table_t t)
{
    __flatbuffers_memoize_begin(B, t);
    if (org_apache_arrow_flatbuf_Tensor_start(B)
        || org_apache_arrow_flatbuf_Tensor_data_pick(B, t)
        || org_apache_arrow_flatbuf_Tensor_type_pick(B, t)
        || org_apache_arrow_flatbuf_Tensor_shape_pick(B, t)
        || org_apache_arrow_flatbuf_Tensor_strides_pick(B, t)) {
        return 0;
    }
    __flatbuffers_memoize_end(B, t, org_apache_arrow_flatbuf_Tensor_end(B));
}

#include "flatcc/flatcc_epilogue.h"
#endif /* TENSOR_BUILDER_H */
#ifndef TENSOR_VERIFIER_H
#define TENSOR_VERIFIER_H

/* Generated by flatcc 0.6.2 FlatBuffers schema compiler for C by dvide.com */

#ifndef TENSOR_READER_H
#include "Tensor_reader.h"
#endif
#include "flatcc/flatcc_verifier.h"
#ifndef SCHEMA_VERIFIER_H
#include "Schema_verifier.h"
#endif
#include "flatcc/flatcc_prologue.h"

static int org_apache_arrow_flatbuf_TensorDim_verify_table(flatcc_table_verifier_descriptor_t *td);
static int org_apache_arrow_flatbuf_Tensor_verify_table(flatcc_table_verifier_descriptor_t *td);

static int org_apache_arrow_flatbuf_TensorDim_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_field(td, 0, 8, 8) /* size */)) return ret;
    if ((ret = flatcc_verify_string_field(td, 1, 0) /* name */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_type_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_TensorDim_type_identifier, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static inline int org_apache_arrow_flatbuf_TensorDim_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_TensorDim_verify_table);
}

static int org_apache_arrow_flatbuf_Tensor_verify_table(flatcc_table_verifier_descriptor_t *td)
{
    int ret;
    if ((ret = flatcc_verify_union_field(td, 1, 1, &org_apache_arrow_flatbuf_Type_union_verifier) /* type */)) return ret;
    if ((ret = flatcc_verify_table_vector_field(td, 2, 1, &org_apache_arrow_flatbuf_TensorDim_verify_table) /* shape */)) return ret;
    if ((ret = flatcc_verify_vector_field(td, 3, 0, 8, 8, INT64_C(536870911)) /* strides */)) return ret;
    if ((ret = flatcc_verify_field(td, 4, 16, 8) /* data */)) return ret;
    return flatcc_verify_ok;
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_typed_root(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_type_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_typed_root_with_size(const void *buf, size_t bufsiz)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, org_apache_arrow_flatbuf_Tensor_type_identifier, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_identifier(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_identifier_and_size(const void *buf, size_t bufsiz, const char *fid)
{
    return flatcc_verify_table_as_root_with_size(buf, bufsiz, fid, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_type_hash(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

static inline int org_apache_arrow_flatbuf_Tensor_verify_as_root_with_type_hash_and_size(const void *buf, size_t bufsiz, flatbuffers_thash_t thash)
{
    return flatcc_verify_table_as_typed_root_with_size(buf, bufsiz, thash, &org_apache_arrow_flatbuf_Tensor_verify_table);
}

#include "flatcc/flatcc_epilogue.h"
#endif /* TENSOR_VERIFIER_H */
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

#include <inttypes.h>

#include "nanoarrow_ipc.h"

#if defined(NANOARROW_IPC_WITH_ZSTD)
#include <zstd.h>

static ArrowErrorCode ArrowIpcDecompressZstd(struct ArrowBufferView src, uint8_t* dst,
                                             int64_t dst_size, struct ArrowError* error) {
  size_t code =
      ZSTD_decompress((void*)dst, (size_t)dst_size, src.data.data, src.size_bytes);
  if (ZSTD_isError(code)) {
    ArrowErrorSet(error,
                  "ZSTD_decompress([buffer with %" PRId64
                  " bytes] -> [buffer with %" PRId64 " bytes]) failed with error '%s'",
                  src.size_bytes, dst_size, ZSTD_getErrorName(code));
    return EIO;
  }

  if (dst_size != (int64_t)code) {
    ArrowErrorSet(error,
                  "Expected decompressed size of %" PRId64 " bytes but got %" PRId64
                  " bytes",
                  dst_size, (int64_t)code);
    return EIO;
  }

  return NANOARROW_OK;
}
#endif

ArrowIpcDecompressFunction ArrowIpcGetZstdDecompressionFunction(void) {
#if defined(NANOARROW_IPC_WITH_ZSTD)
  return &ArrowIpcDecompressZstd;
#else
  return NULL;
#endif
}

#if defined(NANOARROW_IPC_WITH_LZ4)
#include <lz4.h>
#include <lz4frame.h>

static ArrowErrorCode ArrowIpcDecompressLZ4(struct ArrowBufferView src, uint8_t* dst,
                                            int64_t dst_size, struct ArrowError* error) {
  LZ4F_errorCode_t ret;
  LZ4F_decompressionContext_t ctx = NULL;

  ret = LZ4F_createDecompressionContext(&ctx, LZ4F_VERSION);
  if (LZ4F_isError(ret)) {
    ArrowErrorSet(error, "LZ4 init failed");
    return EIO;
  }

  size_t dst_capacity = dst_size;
  size_t src_size = src.size_bytes;
  ret = LZ4F_decompress(ctx, dst, &dst_capacity, src.data.data, &src_size,
                        NULL /* options */);
  if (LZ4F_isError(ret)) {
    NANOARROW_UNUSED(LZ4F_freeDecompressionContext(ctx));
    ArrowErrorSet(error,
                  "LZ4F_decompress([buffer with %" PRId64
                  " bytes] -> [buffer with %" PRId64 " bytes]) failed",
                  src.size_bytes, dst_size);
    return EIO;
  }

  if ((int64_t)dst_capacity != dst_size) {
    NANOARROW_UNUSED(LZ4F_freeDecompressionContext(ctx));
    ArrowErrorSet(error,
                  "Expected decompressed size of %" PRId64 " bytes but got %" PRId64
                  " bytes",
                  dst_size, (int64_t)dst_capacity);
    return EIO;
  }

  if (ret != 0) {
    NANOARROW_UNUSED(LZ4F_freeDecompressionContext(ctx));
    ArrowErrorSet(error,
                  "Expected complete LZ4 frame but found frame with %" PRId64
                  " bytes remaining",
                  (int64_t)ret);
    return EIO;
  }

  NANOARROW_UNUSED(LZ4F_freeDecompressionContext(ctx));
  return NANOARROW_OK;
}
#endif

ArrowIpcDecompressFunction ArrowIpcGetLZ4DecompressionFunction(void) {
#if defined(NANOARROW_IPC_WITH_LZ4)
  return &ArrowIpcDecompressLZ4;
#else
  return NULL;
#endif
}

struct ArrowIpcSerialDecompressorPrivate {
  ArrowIpcDecompressFunction decompress_functions[3];
};

static ArrowErrorCode ArrowIpcSerialDecompressorAdd(
    struct ArrowIpcDecompressor* decompressor,
    enum ArrowIpcCompressionType compression_type, struct ArrowBufferView src,
    uint8_t* dst, int64_t dst_size, struct ArrowError* error) {
  struct ArrowIpcSerialDecompressorPrivate* private_data =
      (struct ArrowIpcSerialDecompressorPrivate*)decompressor->private_data;

  ArrowIpcDecompressFunction fn = NULL;
  switch (compression_type) {
    case NANOARROW_IPC_COMPRESSION_TYPE_ZSTD:
    case NANOARROW_IPC_COMPRESSION_TYPE_LZ4_FRAME:
      fn = private_data->decompress_functions[compression_type];
      break;
    default:
      ArrowErrorSet(error, "Unknown decompression type with value %d",
                    (int)compression_type);
      return EINVAL;
  }

  if (fn == NULL) {
    ArrowErrorSet(
        error, "Compression type with value %d not supported by this build of nanoarrow",
        (int)compression_type);
    return ENOTSUP;
  }

  NANOARROW_RETURN_NOT_OK(fn(src, dst, dst_size, error));
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcSerialDecompressorWait(
    struct ArrowIpcDecompressor* decompressor, int64_t timeout_ms,
    struct ArrowError* error) {
  NANOARROW_UNUSED(decompressor);
  NANOARROW_UNUSED(timeout_ms);
  NANOARROW_UNUSED(error);
  return NANOARROW_OK;
}

static void ArrowIpcSerialDecompressorRelease(struct ArrowIpcDecompressor* decompressor) {
  ArrowFree(decompressor->private_data);
  decompressor->release = NULL;
}

ArrowErrorCode ArrowIpcSerialDecompressor(struct ArrowIpcDecompressor* decompressor) {
  decompressor->decompress_add = &ArrowIpcSerialDecompressorAdd;
  decompressor->decompress_wait = &ArrowIpcSerialDecompressorWait;
  decompressor->release = &ArrowIpcSerialDecompressorRelease;
  decompressor->private_data =
      ArrowMalloc(sizeof(struct ArrowIpcSerialDecompressorPrivate));
  if (decompressor->private_data == NULL) {
    return ENOMEM;
  }

  memset(decompressor->private_data, 0, sizeof(struct ArrowIpcSerialDecompressorPrivate));
  ArrowIpcSerialDecompressorSetFunction(decompressor, NANOARROW_IPC_COMPRESSION_TYPE_ZSTD,
                                        ArrowIpcGetZstdDecompressionFunction());
  ArrowIpcSerialDecompressorSetFunction(decompressor,
                                        NANOARROW_IPC_COMPRESSION_TYPE_LZ4_FRAME,
                                        ArrowIpcGetLZ4DecompressionFunction());
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcSerialDecompressorSetFunction(
    struct ArrowIpcDecompressor* decompressor,
    enum ArrowIpcCompressionType compression_type,
    ArrowIpcDecompressFunction decompress_function) {
  struct ArrowIpcSerialDecompressorPrivate* private_data =
      (struct ArrowIpcSerialDecompressorPrivate*)decompressor->private_data;

  switch (compression_type) {
    case NANOARROW_IPC_COMPRESSION_TYPE_ZSTD:
    case NANOARROW_IPC_COMPRESSION_TYPE_LZ4_FRAME:
      break;
    default:
      return EINVAL;
  }

  private_data->decompress_functions[compression_type] = decompress_function;
  return NANOARROW_OK;
}
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

#include <errno.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>


#include "nanoarrow.h"
#include "nanoarrow_ipc.h"

// ENODATA is an XSI extension and is not defined by all libcs (e.g., older
// Windows/MinGW toolchains used by R 3.6, FreeBSD, and OpenBSD).
#if !defined(ENODATA)
#define ENODATA 120
#endif

#define NANOARROW_IPC_MAGIC "ARROW1"

#define NANOARROW_IPC_NO_DICTIONARY_ID INT64_MIN

#define ns(x) FLATBUFFERS_WRAP_NAMESPACE(org_apache_arrow_flatbuf, x)

// Internal representation of a parsed "Field" from flatbuffers. This
// represents a field in a depth-first walk of column arrays and their
// children.
struct ArrowIpcField {
  // Pointer to the ArrowIpcDecoderPrivate::array_view or child for this node
  struct ArrowArrayView* array_view;
  // Pointer to the ArrowIpcDecoderPrivate::array or child for this node. This
  // array is scratch space for any intermediary allocations (i.e., it is never moved
  // to the user).
  struct ArrowArray* array;
  // The cumulative number of buffers preceding this node.
  int64_t buffer_offset;
  // Dictionary identifier (or NANOARROW_IPC_NO_DICTIONARY_ID if this is not a
  // dictionary-encoded field)
  int64_t dictionary_id;
};

// Internal data specific to the read/decode process
struct ArrowIpcDecoderPrivate {
  // The endianness that will be assumed for decoding future RecordBatch messages
  enum ArrowIpcEndianness endianness;
  // A cached system endianness value
  enum ArrowIpcEndianness system_endianness;
  // An ArrowArrayView whose length/null_count/buffers are set directly from the
  // deserialized flatbuffer message (i.e., no fully underlying ArrowArray exists,
  // although some buffers may be temporarily owned by ArrowIpcDecoderPrivate::array).
  struct ArrowArrayView array_view;
  // An ArrowArray with the same structure as the ArrowArrayView whose ArrowArrayBuffer()
  // values are used to allocate or store memory when this is required. This ArrowArray
  // is never moved to the caller; however, its buffers may be moved to the final output
  // ArrowArray if the caller requests one.
  struct ArrowArray array;
  // The number of fields in the flattened depth-first walk of columns and their children
  int64_t n_fields;
  // Array of cached information such that given a field index it is possible to locate
  // the ArrowArrayView/ArrowArray where the depth-first buffer/field walk should start.
  struct ArrowIpcField* fields;
  // The number of buffers that future RecordBatch messages must have to match the schema
  // that has been set.
  int64_t n_buffers;
  // The number of union fields in the Schema.
  int64_t n_union_fields;
  // A pointer to the last flatbuffers message.
  const void* last_message;
  // Storage for a DictionaryBatch
  struct ArrowIpcDictionaryBatch dictionary;
  // Storage for a Footer
  struct ArrowIpcFooter footer;
  // Decompressor for compression support
  struct ArrowIpcDecompressor decompressor;
};

ArrowErrorCode ArrowIpcCheckRuntime(struct ArrowError* error) {
  // Avoids unused warnings when bundling the header into nanoarrow_ipc.c
  NANOARROW_UNUSED(flatbuffers_end);
  NANOARROW_UNUSED(flatcc_builder_is_nested);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Null_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Struct__required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_List_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_LargeList_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_ListView_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_LargeListView_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_FixedSizeList_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Map_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Union_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Int_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_FloatingPoint_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Utf8_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Binary_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_LargeUtf8_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_LargeBinary_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Utf8View_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_BinaryView_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_FixedSizeBinary_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Bool_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_RunEndEncoded_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Decimal_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Date_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Time_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Timestamp_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Interval_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Duration_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_KeyValue_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_DictionaryEncoding_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Field_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Schema_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Footer_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_TensorDim_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Tensor_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_SparseTensorIndexCOO_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_SparseMatrixIndexCSX_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_SparseTensorIndexCSF_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_SparseTensor_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_BodyCompression_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_RecordBatch_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_DictionaryBatch_required);
  NANOARROW_UNUSED(__org_apache_arrow_flatbuf_Message_required);

  const char* nanoarrow_runtime_version = ArrowNanoarrowVersion();
  const char* nanoarrow_ipc_build_time_version = NANOARROW_VERSION;

  if (strcmp(nanoarrow_runtime_version, nanoarrow_ipc_build_time_version) != 0) {
    ArrowErrorSet(error, "Expected nanoarrow runtime version '%s' but found version '%s'",
                  nanoarrow_ipc_build_time_version, nanoarrow_runtime_version);
    return EINVAL;
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderNeedsSwapEndian(struct ArrowIpcDecoder* decoder) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;
  switch (private_data->endianness) {
    case NANOARROW_IPC_ENDIANNESS_LITTLE:
    case NANOARROW_IPC_ENDIANNESS_BIG:
      return private_data->endianness != NANOARROW_IPC_ENDIANNESS_UNINITIALIZED &&
             private_data->endianness != private_data->system_endianness;
    default:
      return 0;
  }
}

void ArrowIpcDictionaryEncodingsInit(
    struct ArrowIpcDictionaryEncodings* dictionary_encodings) {
  NANOARROW_DCHECK(dictionary_encodings != NULL);
  ArrowBufferInit(&dictionary_encodings->encodings);
}

ArrowErrorCode ArrowIpcDictionaryEncodingsAppend(
    struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    struct ArrowIpcDictionaryEncoding encoding) {
  NANOARROW_DCHECK(dictionary_encodings != NULL);
  NANOARROW_RETURN_NOT_OK(ArrowBufferAppend(&dictionary_encodings->encodings, &encoding,
                                            sizeof(struct ArrowIpcDictionaryEncoding)));
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcDictionaryEncodingsAppendSchemaInternal(
    struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    const struct ArrowSchema* schema, int64_t* next_id) {
  if (schema->dictionary != NULL) {
    struct ArrowIpcDictionaryEncoding encoding;
    encoding.schema = schema;
    encoding.id = (*next_id)++;
    encoding.kind = NANOARROW_IPC_DICTIONARY_KIND_DENSE_ARRAY;
    NANOARROW_RETURN_NOT_OK(
        ArrowIpcDictionaryEncodingsAppend(dictionary_encodings, encoding));
  }

  for (int64_t i = 0; i < schema->n_children; i++) {
    NANOARROW_DCHECK(schema->children != NULL && schema->children[i] != NULL);
    NANOARROW_RETURN_NOT_OK(ArrowIpcDictionaryEncodingsAppendSchemaInternal(
        dictionary_encodings, schema->children[i], next_id));
  }

  if (schema->dictionary != NULL) {
    NANOARROW_RETURN_NOT_OK(ArrowIpcDictionaryEncodingsAppendSchemaInternal(
        dictionary_encodings, schema->dictionary, next_id));
  }

  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDictionaryEncodingsAppendSchema(
    struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    const struct ArrowSchema* schema) {
  NANOARROW_DCHECK(dictionary_encodings != NULL);

  int64_t next_id = 0;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDictionaryEncodingsAppendSchemaInternal(
      dictionary_encodings, schema, &next_id));

  return NANOARROW_OK;
}

const struct ArrowIpcDictionaryEncoding* ArrowIpcDictionaryEncodingsFind(
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    const struct ArrowSchema* schema) {
  NANOARROW_DCHECK(dictionary_encodings != NULL);
  int64_t length = dictionary_encodings->encodings.size_bytes /
                   sizeof(struct ArrowIpcDictionaryEncoding);
  const struct ArrowIpcDictionaryEncoding* data =
      (const struct ArrowIpcDictionaryEncoding*)dictionary_encodings->encodings.data;

  for (int64_t i = 0; i < length; i++) {
    const struct ArrowIpcDictionaryEncoding* encoding = data + i;
    if (encoding->schema == schema) {
      return encoding;
    }
  }

  return NULL;
}

const struct ArrowIpcDictionaryEncoding* ArrowIpcDictionaryEncodingsFindById(
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings, int64_t id) {
  NANOARROW_DCHECK(dictionary_encodings != NULL);
  int64_t length = dictionary_encodings->encodings.size_bytes /
                   sizeof(struct ArrowIpcDictionaryEncoding);
  const struct ArrowIpcDictionaryEncoding* data =
      (const struct ArrowIpcDictionaryEncoding*)dictionary_encodings->encodings.data;

  for (int64_t i = 0; i < length; i++) {
    const struct ArrowIpcDictionaryEncoding* encoding = data + i;
    if (encoding->id == id) {
      return encoding;
    }
  }

  return NULL;
}

static int ArrowIpcIdsListContains(const struct ArrowBuffer* ids_buffer, int64_t num_ids,
                                   int64_t id) {
  const int64_t* ids = (const int64_t*)ids_buffer->data;
  for (int64_t i = 0; i < num_ids; i++) {
    if (ids[i] == id) {
      return 1;
    }
  }

  return 0;
}

ArrowErrorCode ArrowIpcDictionaryEncodingsUniqueIds(
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    struct ArrowBuffer* out) {
  NANOARROW_DCHECK(dictionary_encodings != NULL);
  int64_t length = dictionary_encodings->encodings.size_bytes /
                   sizeof(struct ArrowIpcDictionaryEncoding);
  const struct ArrowIpcDictionaryEncoding* data =
      (const struct ArrowIpcDictionaryEncoding*)dictionary_encodings->encodings.data;

  struct ArrowBuffer tmp;
  ArrowBufferInit(&tmp);

  ArrowErrorCode result;
  int64_t num_ids = 0;
  for (int64_t i = 0; i < length; i++) {
    const struct ArrowIpcDictionaryEncoding* encoding = data + i;
    if (!ArrowIpcIdsListContains(&tmp, num_ids, encoding->id)) {
      result = ArrowBufferAppendInt64(&tmp, encoding->id);
      if (result != NANOARROW_OK) {
        ArrowBufferReset(&tmp);
        return result;
      }

      ++num_ids;
    }
  }

  ArrowBufferMove(&tmp, out);
  return NANOARROW_OK;
}

void ArrowIpcDictionaryEncodingsReset(
    struct ArrowIpcDictionaryEncodings* dictionary_encodings) {
  NANOARROW_DCHECK(dictionary_encodings != NULL);
  ArrowBufferReset(&dictionary_encodings->encodings);
}

/// \brief Internal member of an ArrowIpcDictionaries
///
/// This structure stores a dictionary-specific decoder and the current value
/// of the dictionary (if one exists).
struct ArrowIpcDictionary {
  int64_t id;
  struct ArrowIpcDecoder decoder;
  struct ArrowArray current_value;
};

static ArrowErrorCode ArrowIpcDictionaryInit(struct ArrowIpcDictionary* dictionary) {
  dictionary->id = NANOARROW_IPC_NO_DICTIONARY_ID;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderInit(&dictionary->decoder));
  memset(&dictionary->current_value, 0, sizeof(struct ArrowArray));
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcDictionaryReplace(struct ArrowIpcDictionary* dictionary,
                                                struct ArrowArray* value,
                                                struct ArrowError* error) {
  NANOARROW_UNUSED(error);

  if (dictionary->current_value.release != NULL) {
    ArrowArrayRelease(&dictionary->current_value);
  }

  // Convert to a shared array so that clones can reference the same data
  // without copying
  struct ArrowArray shared;
  NANOARROW_RETURN_NOT_OK(ArrowArrayMoveShared(value, &shared));
  ArrowArrayMove(&shared, &dictionary->current_value);
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcDictionaryAppend(struct ArrowIpcDictionary* dictionary,
                                               struct ArrowArray* value,
                                               struct ArrowError* error) {
  if (dictionary->current_value.release != NULL &&
      dictionary->current_value.length != 0) {
    ArrowErrorSet(error, "Dictionary concatenation is not yet supported");
    return ENOTSUP;
  }

  NANOARROW_RETURN_NOT_OK(ArrowIpcDictionaryReplace(dictionary, value, error));
  return NANOARROW_OK;
}

static void ArrowIpcDictionaryReset(struct ArrowIpcDictionary* dictionary) {
  ArrowIpcDecoderReset(&dictionary->decoder);
  if (dictionary->current_value.release) {
    ArrowArrayRelease(&dictionary->current_value);
  }
}

struct ArrowIpcDictionariesPrivate {
  struct ArrowIpcDictionary* dictionaries;
  int64_t num_dictionaries;
};

static void ArrowIpcDictionariesNoOpSchemaRelease(struct ArrowSchema* schema) {
  NANOARROW_UNUSED(schema);
}

static ArrowErrorCode ArrowIpcDictionariesInitDictionaries(
    struct ArrowIpcDictionariesPrivate* private_data,
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    const struct ArrowBuffer* unique_ids_buffer, int64_t* num_initialized_decoders_out,
    struct ArrowError* error) {
  ArrowErrorCode result;
  const int64_t* unique_ids = (const int64_t*)unique_ids_buffer->data;

  // To set the schema of each ArrowIpcDictionary's encoder, we need to construct a
  // const ArrowSchema* that points to a struct with exactly one child that is the
  // value type. To support nested dictionaries that may exist within
  // ArrowIpcDictionaryEncodings, we can't deep copy the value type because it would
  // invalidate pointer references within dictionary_encodings (i.e., nested dictionaries
  // would fail to resolve when we call ArrowIpcDecoderSetSchemaWithDictionaries()).
  // To make this work, we create an ArrowSchema with a noop release to pass to
  // ArrowIpcDecoderSetSchemaWithDictionaries(). This works because that function
  // accepts a const value (i.e., never releases the schema argument).
  struct ArrowSchema decoder_schema;
  memset(&decoder_schema, 0, sizeof(struct ArrowSchema));
  decoder_schema.name = "";
  decoder_schema.format = "+s";
  decoder_schema.n_children = 1;
  decoder_schema.release = &ArrowIpcDictionariesNoOpSchemaRelease;

  for (int64_t i = 0; i < private_data->num_dictionaries; i++) {
    struct ArrowIpcDictionary* dictionary = private_data->dictionaries + i;
    result = ArrowIpcDictionaryInit(dictionary);
    if (result != NANOARROW_OK) {
      ArrowErrorSet(error, "Internal error (failed to initialize dictionary)");
      *num_initialized_decoders_out = i;
      return result;
    }

    const struct ArrowIpcDictionaryEncoding* encoding =
        ArrowIpcDictionaryEncodingsFindById(dictionary_encodings, unique_ids[i]);
    if (encoding == NULL) {
      ArrowErrorSet(error,
                    "Internal error (dictionary with id not present in encodings list)");
      *num_initialized_decoders_out = i + 1;
      return EINVAL;
    }

    // The decoder's schema will be a struct with one column (the value type of
    // the dictionary-encoded field)
    decoder_schema.children = (struct ArrowSchema**)&encoding->schema->dictionary;

    result = ArrowIpcDecoderSetSchemaWithDictionaries(
        &dictionary->decoder, &decoder_schema, dictionary_encodings, error);
    if (result != NANOARROW_OK) {
      *num_initialized_decoders_out = i + 1;
      return result;
    }

    // Set the ID
    dictionary->id = unique_ids[i];

    // Set the initial array value to a valid array with zero length. This is
    // needed because empty and/or all null columns may not have a dictionary
    // message emitted before a record batch arrives.
    struct ArrowArray initial_value;
    result =
        ArrowArrayInitFromSchema(&initial_value, encoding->schema->dictionary, error);
    if (result != NANOARROW_OK) {
      *num_initialized_decoders_out = i + 1;
      return result;
    }

    result = ArrowArrayFinishBuildingDefault(&initial_value, error);
    if (result != NANOARROW_OK) {
      ArrowArrayRelease(&initial_value);
      *num_initialized_decoders_out = i + 1;
      return result;
    }

    // Convert to a shared array so that clones can reference the same data
    // without copying
    result = ArrowArrayMoveShared(&initial_value, &dictionary->current_value);
    if (result != NANOARROW_OK) {
      ArrowArrayRelease(&initial_value);
      *num_initialized_decoders_out = i + 1;
      return result;
    }
  }

  *num_initialized_decoders_out = private_data->num_dictionaries;
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDictionariesInit(
    struct ArrowIpcDictionaries* dictionaries,
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    struct ArrowError* error) {
  NANOARROW_DCHECK(dictionaries != NULL);
  NANOARROW_DCHECK(dictionary_encodings != NULL);

  memset(dictionaries, 0, sizeof(struct ArrowIpcDictionaries));
  struct ArrowIpcDictionariesPrivate* private_data =
      (struct ArrowIpcDictionariesPrivate*)ArrowMalloc(
          sizeof(struct ArrowIpcDictionariesPrivate));
  if (private_data == NULL) {
    ArrowErrorSet(error, "Failed to allocate ArrowIpcDictionariesPrivate");
    return ENOMEM;
  }

  // Count the number of unique IDs. This will usually be the number of dictionary
  // encodings but may be much smaller if there are a lot of dictionary encoded fields
  // that use the same dictionary.
  struct ArrowBuffer unique_ids;
  ArrowErrorCode result =
      ArrowIpcDictionaryEncodingsUniqueIds(dictionary_encodings, &unique_ids);
  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "Failed to extract unique identifiers");
    ArrowFree(private_data);
    return result;
  }

  // unique_ids is a buffer of int64_t
  private_data->num_dictionaries = unique_ids.size_bytes / sizeof(int64_t);

  // Allocate the array of ArrowIpcDictionary
  if (private_data->num_dictionaries > 0) {
    private_data->dictionaries =
        ArrowMalloc(private_data->num_dictionaries * sizeof(struct ArrowIpcDictionary));
    if (private_data->dictionaries == NULL) {
      ArrowErrorSet(error, "Failed to allocate ArrowIpcDictionary array");
      ArrowBufferReset(&unique_ids);
      ArrowFree(private_data);
      return ENOMEM;
    }
  } else {
    private_data->dictionaries = NULL;
  }

  int64_t num_initialized_dictionaries = 0;
  result = ArrowIpcDictionariesInitDictionaries(private_data, dictionary_encodings,
                                                &unique_ids,
                                                &num_initialized_dictionaries, error);
  ArrowBufferReset(&unique_ids);
  if (result != NANOARROW_OK) {
    for (int64_t i = 0; i < num_initialized_dictionaries; i++) {
      ArrowIpcDictionaryReset(private_data->dictionaries + i);
    }

    ArrowFree(private_data->dictionaries);
    ArrowFree(private_data);
    return result;
  }

  dictionaries->private_data = private_data;
  return NANOARROW_OK;
}

static struct ArrowIpcDictionary* ArrowIpcDictionariesFindById(
    struct ArrowIpcDictionaries* dictionaries, int64_t id) {
  NANOARROW_DCHECK(dictionaries != NULL);

  struct ArrowIpcDictionariesPrivate* private_data =
      (struct ArrowIpcDictionariesPrivate*)dictionaries->private_data;
  for (int64_t i = 0; i < private_data->num_dictionaries; i++) {
    struct ArrowIpcDictionary* dictionary = private_data->dictionaries + i;
    if (dictionary->id == id) {
      return dictionary;
    }
  }

  return NULL;
}

ArrowErrorCode ArrowIpcDictionariesFindCurrentValue(
    struct ArrowIpcDictionaries* dictionaries, int64_t id, const struct ArrowArray** out,
    struct ArrowError* error) {
  struct ArrowIpcDictionary* dictionary = ArrowIpcDictionariesFindById(dictionaries, id);
  if (dictionary == NULL) {
    ArrowErrorSet(error,
                  "Can't find value for dictionary with ID %" PRId64
                  " (dictionary definition not found)",
                  id);
    return EINVAL;
  }

  *out = &dictionary->current_value;
  return NANOARROW_OK;
}

void ArrowIpcDictionariesReset(struct ArrowIpcDictionaries* dictionaries) {
  NANOARROW_DCHECK(dictionaries != NULL);
  struct ArrowIpcDictionariesPrivate* private_data =
      (struct ArrowIpcDictionariesPrivate*)dictionaries->private_data;

  for (int64_t i = 0; i < private_data->num_dictionaries; i++) {
    struct ArrowIpcDictionary* dictionary = private_data->dictionaries + i;
    ArrowIpcDictionaryReset(dictionary);
  }

  ArrowFree(private_data->dictionaries);
  ArrowFree(private_data);
  dictionaries->private_data = NULL;
}

ArrowErrorCode ArrowIpcDecoderInit(struct ArrowIpcDecoder* decoder) {
  memset(decoder, 0, sizeof(struct ArrowIpcDecoder));
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)ArrowMalloc(sizeof(struct ArrowIpcDecoderPrivate));
  if (private_data == NULL) {
    return ENOMEM;
  }

  memset(private_data, 0, sizeof(struct ArrowIpcDecoderPrivate));
  private_data->system_endianness = ArrowIpcSystemEndianness();
  ArrowIpcFooterInit(&private_data->footer);
  decoder->private_data = private_data;
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcDecoderInitDecompressor(
    struct ArrowIpcDecoderPrivate* private_data) {
  if (private_data->decompressor.release == NULL) {
    NANOARROW_RETURN_NOT_OK(ArrowIpcSerialDecompressor(&private_data->decompressor));
  }

  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderSetDecompressor(struct ArrowIpcDecoder* decoder,
                                              struct ArrowIpcDecompressor* decompressor) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  if (private_data->decompressor.release != NULL) {
    private_data->decompressor.release(&private_data->decompressor);
  }

  memcpy(&private_data->decompressor, decompressor, sizeof(struct ArrowIpcDecompressor));
  decompressor->release = NULL;
  return NANOARROW_OK;
}

void ArrowIpcDecoderReset(struct ArrowIpcDecoder* decoder) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  if (private_data != NULL) {
    ArrowArrayViewReset(&private_data->array_view);

    if (private_data->array.release != NULL) {
      ArrowArrayRelease(&private_data->array);
    }

    if (private_data->fields != NULL) {
      ArrowFree(private_data->fields);
      private_data->n_fields = 0;
    }

    private_data->n_union_fields = 0;

    ArrowIpcFooterReset(&private_data->footer);

    if (private_data->decompressor.release != NULL) {
      private_data->decompressor.release(&private_data->decompressor);
    }

    ArrowFree(private_data);
    memset(decoder, 0, sizeof(struct ArrowIpcDecoder));
  }
}

static inline int32_t ArrowIpcReadInt32LE(struct ArrowBufferView* data, int swap_endian) {
  int32_t value;
  memcpy(&value, data->data.as_uint8, sizeof(int32_t));
  if (swap_endian) {
    value = bswap32(value);
  }

  data->data.as_uint8 += sizeof(int32_t);
  data->size_bytes -= sizeof(int32_t);
  return value;
}

static int ArrowIpcDecoderSetMetadata(struct ArrowSchema* schema,
                                      ns(KeyValue_vec_t) kv_vec,
                                      struct ArrowError* error) {
  int64_t n_pairs = ns(KeyValue_vec_len(kv_vec));
  if (n_pairs == 0) {
    return NANOARROW_OK;
  }

  if (n_pairs > 2147483647) {
    ArrowErrorSet(error,
                  "Expected between 0 and 2147483647 key/value pairs but found %" PRId64,
                  n_pairs);
    return EINVAL;
  }

  struct ArrowBuffer buf;
  struct ArrowStringView key;
  struct ArrowStringView value;
  ns(KeyValue_table_t) kv;

  int result = ArrowMetadataBuilderInit(&buf, NULL);
  if (result != NANOARROW_OK) {
    ArrowBufferReset(&buf);
    ArrowErrorSet(error, "ArrowMetadataBuilderInit() failed");
    return result;
  }

  for (int64_t i = 0; i < n_pairs; i++) {
    kv = ns(KeyValue_vec_at(kv_vec, i));

    key.data = ns(KeyValue_key(kv));
    key.size_bytes = strlen(key.data);
    value.data = ns(KeyValue_value(kv));
    value.size_bytes = strlen(value.data);

    result = ArrowMetadataBuilderAppend(&buf, key, value);
    if (result != NANOARROW_OK) {
      ArrowBufferReset(&buf);
      ArrowErrorSet(error, "ArrowMetadataBuilderAppend() failed");
      return result;
    }
  }

  result = ArrowSchemaSetMetadata(schema, (const char*)buf.data);
  ArrowBufferReset(&buf);
  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "ArrowSchemaSetMetadata() failed");
    return result;
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetTypeSimple(struct ArrowSchema* schema, int nanoarrow_type,
                                        struct ArrowError* error) {
  int result = ArrowSchemaSetType(schema, nanoarrow_type);
  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "ArrowSchemaSetType() failed for type %s",
                  ArrowTypeString(nanoarrow_type));
    return result;
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetTypeInt(struct ArrowSchema* schema,
                                     flatbuffers_generic_t type_generic,
                                     struct ArrowError* error) {
  ns(Int_table_t) type = (ns(Int_table_t))type_generic;

  int is_signed = ns(Int_is_signed_get(type));
  int bitwidth = ns(Int_bitWidth_get(type));
  int nanoarrow_type = NANOARROW_TYPE_UNINITIALIZED;

  if (is_signed) {
    switch (bitwidth) {
      case 8:
        nanoarrow_type = NANOARROW_TYPE_INT8;
        break;
      case 16:
        nanoarrow_type = NANOARROW_TYPE_INT16;
        break;
      case 32:
        nanoarrow_type = NANOARROW_TYPE_INT32;
        break;
      case 64:
        nanoarrow_type = NANOARROW_TYPE_INT64;
        break;
      default:
        ArrowErrorSet(error,
                      "Expected signed int bitwidth of 8, 16, 32, or 64 but got %d",
                      bitwidth);
        return EINVAL;
    }
  } else {
    switch (bitwidth) {
      case 8:
        nanoarrow_type = NANOARROW_TYPE_UINT8;
        break;
      case 16:
        nanoarrow_type = NANOARROW_TYPE_UINT16;
        break;
      case 32:
        nanoarrow_type = NANOARROW_TYPE_UINT32;
        break;
      case 64:
        nanoarrow_type = NANOARROW_TYPE_UINT64;
        break;
      default:
        ArrowErrorSet(error,
                      "Expected unsigned int bitwidth of 8, 16, 32, or 64 but got %d",
                      bitwidth);
        return EINVAL;
    }
  }

  return ArrowIpcDecoderSetTypeSimple(schema, nanoarrow_type, error);
}

static int ArrowIpcDecoderSetTypeFloatingPoint(struct ArrowSchema* schema,
                                               flatbuffers_generic_t type_generic,
                                               struct ArrowError* error) {
  ns(FloatingPoint_table_t) type = (ns(FloatingPoint_table_t))type_generic;
  int precision = ns(FloatingPoint_precision(type));
  switch (precision) {
    case ns(Precision_HALF):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_HALF_FLOAT, error);
    case ns(Precision_SINGLE):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_FLOAT, error);
    case ns(Precision_DOUBLE):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_DOUBLE, error);
    default:
      ArrowErrorSet(error, "Unexpected FloatingPoint Precision value: %d", precision);
      return EINVAL;
  }
}

static int ArrowIpcDecoderSetTypeDecimal(struct ArrowSchema* schema,
                                         flatbuffers_generic_t type_generic,
                                         struct ArrowError* error) {
  ns(Decimal_table_t) type = (ns(Decimal_table_t))type_generic;
  int scale = ns(Decimal_scale(type));
  int precision = ns(Decimal_precision(type));
  int bitwidth = ns(Decimal_bitWidth(type));

  int result;
  switch (bitwidth) {
    case 32:
      result =
          ArrowSchemaSetTypeDecimal(schema, NANOARROW_TYPE_DECIMAL32, precision, scale);
      break;
    case 64:
      result =
          ArrowSchemaSetTypeDecimal(schema, NANOARROW_TYPE_DECIMAL64, precision, scale);
      break;
    case 128:
      result =
          ArrowSchemaSetTypeDecimal(schema, NANOARROW_TYPE_DECIMAL128, precision, scale);
      break;
    case 256:
      result =
          ArrowSchemaSetTypeDecimal(schema, NANOARROW_TYPE_DECIMAL256, precision, scale);
      break;
    default:
      ArrowErrorSet(error, "Unexpected Decimal bitwidth value: %d", bitwidth);
      return EINVAL;
  }

  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "ArrowSchemaSetTypeDecimal() failed");
    return result;
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetTypeFixedSizeBinary(struct ArrowSchema* schema,
                                                 flatbuffers_generic_t type_generic,
                                                 struct ArrowError* error) {
  ns(FixedSizeBinary_table_t) type = (ns(FixedSizeBinary_table_t))type_generic;
  int fixed_size = ns(FixedSizeBinary_byteWidth(type));
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowSchemaSetTypeFixedSize(schema, NANOARROW_TYPE_FIXED_SIZE_BINARY, fixed_size),
      error);
  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetTypeDate(struct ArrowSchema* schema,
                                      flatbuffers_generic_t type_generic,
                                      struct ArrowError* error) {
  ns(Date_table_t) type = (ns(Date_table_t))type_generic;
  int date_unit = ns(Date_unit(type));
  switch (date_unit) {
    case ns(DateUnit_DAY):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_DATE32, error);
    case ns(DateUnit_MILLISECOND):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_DATE64, error);
    default:
      ArrowErrorSet(error, "Unexpected Date DateUnit value: %d", (int)date_unit);
      return EINVAL;
  }
}

static int ArrowIpcDecoderSetTypeTime(struct ArrowSchema* schema,
                                      flatbuffers_generic_t type_generic,
                                      struct ArrowError* error) {
  ns(Time_table_t) type = (ns(Time_table_t))type_generic;
  int time_unit = ns(Time_unit(type));
  int bitwidth = ns(Time_bitWidth(type));
  int nanoarrow_type;

  switch (time_unit) {
    case ns(TimeUnit_SECOND):
    case ns(TimeUnit_MILLISECOND):
      if (bitwidth != 32) {
        ArrowErrorSet(error, "Expected bitwidth of 32 for Time TimeUnit %s but found %d",
                      ns(TimeUnit_name(ns(Time_unit(type)))), bitwidth);
        return EINVAL;
      }

      nanoarrow_type = NANOARROW_TYPE_TIME32;
      break;

    case ns(TimeUnit_MICROSECOND):
    case ns(TimeUnit_NANOSECOND):
      if (bitwidth != 64) {
        ArrowErrorSet(error, "Expected bitwidth of 64 for Time TimeUnit %s but found %d",
                      ns(TimeUnit_name(ns(Time_unit(type)))), bitwidth);
        return EINVAL;
      }

      nanoarrow_type = NANOARROW_TYPE_TIME64;
      break;

    default:
      ArrowErrorSet(error, "Unexpected Time TimeUnit value: %d", time_unit);
      return EINVAL;
  }

  int result = ArrowSchemaSetTypeDateTime(schema, nanoarrow_type, time_unit, NULL);
  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "ArrowSchemaSetTypeDateTime() failed");
    return result;
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetTypeTimestamp(struct ArrowSchema* schema,
                                           flatbuffers_generic_t type_generic,
                                           struct ArrowError* error) {
  ns(Timestamp_table_t) type = (ns(Timestamp_table_t))type_generic;
  int time_unit = ns(Timestamp_unit(type));

  const char* timezone = "";
  if (ns(Timestamp_timezone_is_present(type))) {
    timezone = ns(Timestamp_timezone_get(type));
  }

  int result =
      ArrowSchemaSetTypeDateTime(schema, NANOARROW_TYPE_TIMESTAMP, time_unit, timezone);
  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "ArrowSchemaSetTypeDateTime() failed");
    return result;
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetTypeDuration(struct ArrowSchema* schema,
                                          flatbuffers_generic_t type_generic,
                                          struct ArrowError* error) {
  ns(Duration_table_t) type = (ns(Duration_table_t))type_generic;
  int time_unit = ns(Duration_unit(type));

  int result =
      ArrowSchemaSetTypeDateTime(schema, NANOARROW_TYPE_DURATION, time_unit, NULL);
  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "ArrowSchemaSetTypeDateTime() failed");
    return result;
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetTypeInterval(struct ArrowSchema* schema,
                                          flatbuffers_generic_t type_generic,
                                          struct ArrowError* error) {
  ns(Interval_table_t) type = (ns(Interval_table_t))type_generic;
  int interval_unit = ns(Interval_unit(type));

  switch (interval_unit) {
    case ns(IntervalUnit_YEAR_MONTH):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_INTERVAL_MONTHS, error);
    case ns(IntervalUnit_DAY_TIME):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_INTERVAL_DAY_TIME,
                                          error);
    case ns(IntervalUnit_MONTH_DAY_NANO):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_INTERVAL_MONTH_DAY_NANO,
                                          error);
    default:
      ArrowErrorSet(error, "Unexpected Interval unit value: %d", interval_unit);
      return EINVAL;
  }
}

// We can't quite use nanoarrow's built-in SchemaSet functions for nested types
// because the IPC format allows modifying some of the defaults those functions assume.
// In particular, the allocate + initialize children step is handled outside these
// setters.
static int ArrowIpcDecoderSetTypeSimpleNested(struct ArrowSchema* schema,
                                              const char* format,
                                              struct ArrowError* error) {
  int result = ArrowSchemaSetFormat(schema, format);
  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "ArrowSchemaSetFormat('%s') failed", format);
    return result;
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetTypeFixedSizeList(struct ArrowSchema* schema,
                                               flatbuffers_generic_t type_generic,
                                               struct ArrowError* error) {
  ns(FixedSizeList_table_t) type = (ns(FixedSizeList_table_t))type_generic;
  int32_t fixed_size = ns(FixedSizeList_listSize(type));

  char fixed_size_str[128];
  int n_chars = snprintf(fixed_size_str, 128, "+w:%d", fixed_size);
  if (n_chars < 0) {
    ArrowErrorSet(error, "snprintf() encoding error");
    return ERANGE;
  }

  fixed_size_str[n_chars] = '\0';
  return ArrowIpcDecoderSetTypeSimpleNested(schema, fixed_size_str, error);
}

static int ArrowIpcDecoderSetTypeMap(struct ArrowSchema* schema,
                                     flatbuffers_generic_t type_generic,
                                     struct ArrowError* error) {
  ns(Map_table_t) type = (ns(Map_table_t))type_generic;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderSetTypeSimpleNested(schema, "+m", error));

  if (ns(Map_keysSorted(type))) {
    schema->flags |= ARROW_FLAG_MAP_KEYS_SORTED;
  } else {
    schema->flags &= ~ARROW_FLAG_MAP_KEYS_SORTED;
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetTypeUnion(struct ArrowSchema* schema,
                                       flatbuffers_generic_t type_generic,
                                       int64_t n_children, struct ArrowError* error) {
  ns(Union_table_t) type = (ns(Union_table_t))type_generic;
  int union_mode = ns(Union_mode(type));

  if (n_children < 0 || n_children > 127) {
    ArrowErrorSet(error,
                  "Expected between 0 and 127 children for Union type but found %" PRId64,
                  n_children);
    return EINVAL;
  }

  // Max valid typeIds size is 127; the longest single ID that could be present here
  // is -INT_MIN (11 chars). With commas and the prefix the max size would be
  // 1527 characters. (Any ids outside the range 0...127 are unlikely to be valid
  // elsewhere but they could in theory be present here).
  char union_types_str[2048];
  memset(union_types_str, 0, sizeof(union_types_str));
  char* format_cursor = union_types_str;
  int format_out_size = sizeof(union_types_str);
  int n_chars = 0;

  switch (union_mode) {
    case ns(UnionMode_Sparse):
      n_chars = snprintf(format_cursor, format_out_size, "+us:");
      format_cursor += n_chars;
      format_out_size -= n_chars;
      break;
    case ns(UnionMode_Dense):
      n_chars = snprintf(format_cursor, format_out_size, "+ud:");
      format_cursor += n_chars;
      format_out_size -= n_chars;
      break;
    default:
      ArrowErrorSet(error, "Unexpected Union UnionMode value: %d", union_mode);
      return EINVAL;
  }

  if (n_chars < 0) {
    ArrowErrorSet(error, "snprintf() encoding error");
    return ERANGE;
  }

  if (ns(Union_typeIds_is_present(type))) {
    flatbuffers_int32_vec_t type_ids = ns(Union_typeIds(type));
    int64_t n_type_ids = flatbuffers_int32_vec_len(type_ids);

    if (n_type_ids != n_children) {
      ArrowErrorSet(error,
                    "Expected between %" PRId64 " children for Union type with %" PRId64
                    " typeIds but found %" PRId64,
                    n_type_ids, n_type_ids, n_children);
      return EINVAL;
    }

    if (n_type_ids > 0) {
      n_chars = snprintf(format_cursor, format_out_size, "%d",
                         flatbuffers_int32_vec_at(type_ids, 0));
      format_cursor += n_chars;
      format_out_size -= n_chars;

      if (n_chars < 0) {
        ArrowErrorSet(error, "snprintf() encoding error");
        return ERANGE;
      }

      for (int64_t i = 1; i < n_type_ids; i++) {
        n_chars = snprintf(format_cursor, format_out_size, ",%" PRId32,
                           flatbuffers_int32_vec_at(type_ids, i));
        format_cursor += n_chars;
        format_out_size -= n_chars;

        if (n_chars < 0) {
          ArrowErrorSet(error, "snprintf() encoding error");
          return ERANGE;
        }
      }
    }
  } else if (n_children > 0) {
    n_chars = snprintf(format_cursor, format_out_size, "0");
    format_cursor += n_chars;
    format_out_size -= n_chars;

    if (n_chars < 0) {
      ArrowErrorSet(error, "snprintf() encoding error");
      return ERANGE;
    }

    for (int64_t i = 1; i < n_children; i++) {
      n_chars = snprintf(format_cursor, format_out_size, ",%" PRId64, i);
      format_cursor += n_chars;
      format_out_size -= n_chars;

      if (n_chars < 0) {
        ArrowErrorSet(error, "snprintf() encoding error");
        return ERANGE;
      }
    }
  }

  return ArrowIpcDecoderSetTypeSimpleNested(schema, union_types_str, error);
}

static int ArrowIpcDecoderSetType(struct ArrowSchema* schema, ns(Field_table_t) field,
                                  int64_t n_children, struct ArrowError* error) {
  int type_type = ns(Field_type_type(field));
  switch (type_type) {
    case ns(Type_Null):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_NA, error);
    case ns(Type_Bool):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_BOOL, error);
    case ns(Type_Int):
      return ArrowIpcDecoderSetTypeInt(schema, ns(Field_type_get(field)), error);
    case ns(Type_FloatingPoint):
      return ArrowIpcDecoderSetTypeFloatingPoint(schema, ns(Field_type_get(field)),
                                                 error);
    case ns(Type_Decimal):
      return ArrowIpcDecoderSetTypeDecimal(schema, ns(Field_type_get(field)), error);
    case ns(Type_Binary):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_BINARY, error);
    case ns(Type_LargeBinary):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_LARGE_BINARY, error);
    case ns(Type_FixedSizeBinary):
      return ArrowIpcDecoderSetTypeFixedSizeBinary(schema, ns(Field_type_get(field)),
                                                   error);
    case ns(Type_BinaryView):
      ArrowErrorSet(error, "BinaryView not yet supported in IPC reader");
      return ENOTSUP;
    case ns(Type_Utf8):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_STRING, error);
    case ns(Type_LargeUtf8):
      return ArrowIpcDecoderSetTypeSimple(schema, NANOARROW_TYPE_LARGE_STRING, error);
    case ns(Type_Utf8View):
      ArrowErrorSet(error, "Utf8View not yet supported in IPC reader");
      return ENOTSUP;
    case ns(Type_Date):
      return ArrowIpcDecoderSetTypeDate(schema, ns(Field_type_get(field)), error);
    case ns(Type_Time):
      return ArrowIpcDecoderSetTypeTime(schema, ns(Field_type_get(field)), error);
    case ns(Type_Timestamp):
      return ArrowIpcDecoderSetTypeTimestamp(schema, ns(Field_type_get(field)), error);
    case ns(Type_Duration):
      return ArrowIpcDecoderSetTypeDuration(schema, ns(Field_type_get(field)), error);
    case ns(Type_Interval):
      return ArrowIpcDecoderSetTypeInterval(schema, ns(Field_type_get(field)), error);
    case ns(Type_Struct_):
      return ArrowIpcDecoderSetTypeSimpleNested(schema, "+s", error);
    case ns(Type_List):
      return ArrowIpcDecoderSetTypeSimpleNested(schema, "+l", error);
    case ns(Type_LargeList):
      return ArrowIpcDecoderSetTypeSimpleNested(schema, "+L", error);
    case ns(Type_FixedSizeList):
      return ArrowIpcDecoderSetTypeFixedSizeList(schema, ns(Field_type_get(field)),
                                                 error);
    case ns(Type_ListView):
    case ns(Type_LargeListView):
      ArrowErrorSet(error, "ListView/LargeListView not yet supported in IPC reader");
      return ENOTSUP;
    case ns(Type_Map):
      return ArrowIpcDecoderSetTypeMap(schema, ns(Field_type_get(field)), error);
    case ns(Type_Union):
      return ArrowIpcDecoderSetTypeUnion(schema, ns(Field_type_get(field)), n_children,
                                         error);
    case ns(Type_RunEndEncoded):
      ArrowErrorSet(error, "RunEndEncoded not yet supported in IPC reader");
      return ENOTSUP;
    default:
      ArrowErrorSet(error, "Unrecognized Field type with value %d", type_type);
      return EINVAL;
  }
}

// When decoding dictionaries, we move the value type to the schema->dictionary
// member, but we need to move the field metadata back because in IPC there
// is no such thing as dictionary metadata (even extension metadata)
// https://github.com/apache/arrow/issues/49704
static int ArrowIpcMoveDictionaryMetadataBackToField(struct ArrowSchema* schema) {
  NANOARROW_DCHECK(schema->dictionary != NULL);
  NANOARROW_RETURN_NOT_OK(ArrowSchemaSetMetadata(schema, schema->dictionary->metadata));
  NANOARROW_RETURN_NOT_OK(ArrowSchemaSetMetadata(schema->dictionary, NULL));
  return NANOARROW_OK;
}

static int ArrowIpcSetDictionaryEncoding(
    struct ArrowSchema* schema, ns(DictionaryEncoding_table_t dictionary_encoding),
    struct ArrowIpcDictionaryEncodings* dictionaries, struct ArrowError* error) {
  switch (
      org_apache_arrow_flatbuf_DictionaryEncoding_dictionaryKind(dictionary_encoding)) {
    case ns(DictionaryKind_DenseArray):
      break;
    default:
      ArrowErrorSet(error, "Unexpected value for DictionaryKind");
      return EINVAL;
  }

  struct ArrowSchema tmp;
  ArrowSchemaMove(schema, &tmp);

  ArrowSchemaInit(schema);
  int result = ArrowSchemaAllocateDictionary(schema);
  if (result != NANOARROW_OK) {
    ArrowSchemaRelease(&tmp);
    ArrowErrorSet(error, "ArrowSchemaAllocateDictionary() failed");
    return result;
  }

  ArrowSchemaMove(&tmp, schema->dictionary);

  NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowSchemaSetName(schema, schema->dictionary->name),
                                     error);
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowSchemaSetName(schema->dictionary, ""), error);

  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderSetTypeInt(
      schema, ns(DictionaryEncoding_indexType_get(dictionary_encoding)), error));

  if (ns(DictionaryEncoding_isOrdered_get(dictionary_encoding))) {
    schema->flags |= ARROW_FLAG_DICTIONARY_ORDERED;
  }

  // Sort out field metadata between the schema and the dictionary member
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowIpcMoveDictionaryMetadataBackToField(schema),
                                     error);

  // Track the identifier if we have a dictionaries object in which to track it
  if (dictionaries != NULL) {
    int64_t id = ns(DictionaryEncoding_id(dictionary_encoding));
    struct ArrowIpcDictionaryEncoding encoding = {
        schema, id, NANOARROW_IPC_DICTIONARY_KIND_DENSE_ARRAY};

    NANOARROW_RETURN_NOT_OK_WITH_ERROR(
        ArrowIpcDictionaryEncodingsAppend(dictionaries, encoding), error);
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetChildren(struct ArrowSchema* schema, ns(Field_vec_t) fields,
                                      struct ArrowIpcDictionaryEncodings* dictionaries,
                                      struct ArrowError* error);

static int ArrowIpcDecoderSetField(struct ArrowSchema* schema, ns(Field_table_t) field,
                                   struct ArrowIpcDictionaryEncodings* dictionaries,
                                   struct ArrowError* error) {
  int result;
  if (ns(Field_name_is_present(field))) {
    result = ArrowSchemaSetName(schema, ns(Field_name_get(field)));
  } else {
    result = ArrowSchemaSetName(schema, "");
  }

  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "ArrowSchemaSetName() failed");
    return result;
  }

  // Sets the schema->format and validates type-related inconsistencies
  // that might exist in the flatbuffer
  ns(Field_vec_t) children = ns(Field_children(field));
  int64_t n_children = ns(Field_vec_len(children));

  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderSetType(schema, field, n_children, error));

  // nanoarrow's type setters set the nullable flag by default, so we might
  // have to unset it here.
  if (ns(Field_nullable_get(field))) {
    schema->flags |= ARROW_FLAG_NULLABLE;
  } else {
    schema->flags &= ~ARROW_FLAG_NULLABLE;
  }

  // Children are defined separately in the flatbuffer, so we allocate, initialize
  // and set them separately as well.
  result = ArrowSchemaAllocateChildren(schema, n_children);
  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "ArrowSchemaAllocateChildren() failed");
    return result;
  }

  for (int64_t i = 0; i < n_children; i++) {
    ArrowSchemaInit(schema->children[i]);
  }

  NANOARROW_RETURN_NOT_OK(
      ArrowIpcDecoderSetChildren(schema, children, dictionaries, error));
  NANOARROW_RETURN_NOT_OK(
      ArrowIpcDecoderSetMetadata(schema, ns(Field_custom_metadata(field)), error));

  // If this is a dictionary encoded field, set the dictionary encoding
  if (ns(Field_dictionary_is_present(field))) {
    NANOARROW_RETURN_NOT_OK(ArrowIpcSetDictionaryEncoding(
        schema, ns(Field_dictionary(field)), dictionaries, error));
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderSetChildren(struct ArrowSchema* schema, ns(Field_vec_t) fields,
                                      struct ArrowIpcDictionaryEncodings* dictionaries,
                                      struct ArrowError* error) {
  int64_t n_fields = ns(Schema_vec_len(fields));

  for (int64_t i = 0; i < n_fields; i++) {
    ns(Field_table_t) field = ns(Field_vec_at(fields, i));
    NANOARROW_RETURN_NOT_OK(
        ArrowIpcDecoderSetField(schema->children[i], field, dictionaries, error));
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderDecodeSchemaHeader(struct ArrowIpcDecoder* decoder,
                                             flatbuffers_generic_t message_header,
                                             struct ArrowError* error) {
  ns(Schema_table_t) schema = (ns(Schema_table_t))message_header;
  int endianness = ns(Schema_endianness(schema));
  switch (endianness) {
    case ns(Endianness_Little):
      decoder->endianness = NANOARROW_IPC_ENDIANNESS_LITTLE;
      break;
    case ns(Endianness_Big):
      decoder->endianness = NANOARROW_IPC_ENDIANNESS_BIG;
      break;
    default:
      ArrowErrorSet(error,
                    "Expected Schema endianness of 0 (little) or 1 (big) but got %d",
                    endianness);
      return EINVAL;
  }

  ns(Feature_vec_t) features = ns(Schema_features(schema));
  int64_t n_features = ns(Feature_vec_len(features));
  decoder->feature_flags = 0;

  for (int64_t i = 0; i < n_features; i++) {
    ns(Feature_enum_t) feature = ns(Feature_vec_at(features, i));
    switch (feature) {
      case ns(Feature_COMPRESSED_BODY):
        decoder->feature_flags |= NANOARROW_IPC_FEATURE_COMPRESSED_BODY;
        break;
      case ns(Feature_DICTIONARY_REPLACEMENT):
        decoder->feature_flags |= NANOARROW_IPC_FEATURE_DICTIONARY_REPLACEMENT;
        break;
      default:
        ArrowErrorSet(error, "Unrecognized Schema feature with value %d", (int)feature);
        return EINVAL;
    }
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderDecodeDictionaryBatchHeader(
    struct ArrowIpcDecoder* decoder, flatbuffers_generic_t message_header) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  ns(DictionaryBatch_table_t) dictionary = (ns(DictionaryBatch_table_t))message_header;
  private_data->dictionary.id = ns(DictionaryBatch_id(dictionary));
  private_data->dictionary.is_delta = ns(DictionaryBatch_isDelta(dictionary));

  decoder->dictionary = &private_data->dictionary;
  return NANOARROW_OK;
}

static int ArrowIpcDecoderDecodeRecordBatchHeader(struct ArrowIpcDecoder* decoder,
                                                  flatbuffers_generic_t message_header,
                                                  struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  ns(RecordBatch_table_t) batch = (ns(RecordBatch_table_t))message_header;

  ns(FieldNode_vec_t) fields = ns(RecordBatch_nodes(batch));
  ns(Buffer_vec_t) buffers = ns(RecordBatch_buffers(batch));
  int64_t n_fields = ns(FieldNode_vec_len(fields));
  int64_t n_buffers = ns(Buffer_vec_len(buffers));

  // Check field node and buffer count. We have one more field and buffer
  // because we count the root struct and the flatbuffer message does not.
  if ((n_fields + 1) != private_data->n_fields) {
    ArrowErrorSet(error, "Expected %" PRId64 " field nodes in message but found %" PRId64,
                  private_data->n_fields - 1, n_fields);
    return EINVAL;
  }

  int64_t n_expected_buffers = private_data->n_buffers;
  if (decoder->metadata_version < NANOARROW_IPC_METADATA_VERSION_V5) {
    // Unions had null buffers before arrow 1.0, so expect one extra buffer per union
    // field
    n_expected_buffers += private_data->n_union_fields;
  }

  if ((n_buffers + 1) != n_expected_buffers) {
    ArrowErrorSet(error, "Expected %" PRId64 " buffers in message but found %" PRId64,
                  n_expected_buffers - 1, n_buffers);
    return EINVAL;
  }

  if (ns(RecordBatch_compression_is_present(batch))) {
    ns(BodyCompression_table_t) compression = ns(RecordBatch_compression(batch));
    ns(CompressionType_enum_t) codec = ns(BodyCompression_codec(compression));
    switch (codec) {
      case ns(CompressionType_LZ4_FRAME):
        decoder->codec = NANOARROW_IPC_COMPRESSION_TYPE_LZ4_FRAME;
        break;
      case ns(CompressionType_ZSTD):
        decoder->codec = NANOARROW_IPC_COMPRESSION_TYPE_ZSTD;
        break;
      default:
        ArrowErrorSet(error, "Unrecognized RecordBatch BodyCompression codec value: %d",
                      (int)codec);
        return EINVAL;
    }
  } else {
    decoder->codec = NANOARROW_IPC_COMPRESSION_TYPE_NONE;
  }

  // Copying field node and buffer information is separate so as only to pay for the
  // nodes that are actually accessed.
  return NANOARROW_OK;
}

// Wipes any "current message" fields before moving on to a new message
static inline void ArrowIpcDecoderResetHeaderInfo(struct ArrowIpcDecoder* decoder) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  decoder->message_type = 0;
  decoder->metadata_version = 0;
  decoder->endianness = 0;
  decoder->feature_flags = 0;
  decoder->codec = 0;
  decoder->header_size_bytes = 0;
  decoder->body_size_bytes = 0;
  decoder->dictionary = NULL;
  memset(&private_data->dictionary, 0, sizeof(struct ArrowIpcDictionaryBatch));
  decoder->footer = NULL;
  ArrowIpcFooterReset(&private_data->footer);
  private_data->last_message = NULL;
}

// Returns NANOARROW_OK if data is large enough to read the first 8 bytes
// of the message header, ESPIPE if reading more data might help, or EINVAL if the content
// is not valid. Advances the input ArrowBufferView by prefix_size (8 bytes or 4 bytes if
// the message is pre-0.15 and has no continuation). Sets decoder->header_size_bytes
// to the flatbuffers length plus the prefix_size.
static inline int ArrowIpcDecoderReadHeaderPrefix(struct ArrowIpcDecoder* decoder,
                                                  struct ArrowBufferView* data_mut,
                                                  int32_t* prefix_size_bytes,
                                                  struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  if (data_mut->size_bytes < 8) {
    ArrowErrorSet(error,
                  "Expected data of at least 8 bytes but only %" PRId64 " bytes remain",
                  data_mut->size_bytes);
    return ESPIPE;
  }

  int swap_endian = private_data->system_endianness == NANOARROW_IPC_ENDIANNESS_BIG;
  int32_t continuation = ArrowIpcReadInt32LE(data_mut, swap_endian);
  int32_t length;
  if ((uint32_t)continuation != 0xFFFFFFFF) {
    if (continuation < 0) {
      ArrowErrorSet(error, "Expected 0xFFFFFFFF at start of message but found 0x%08X",
                    (unsigned int)continuation);
      return EINVAL;
    }
    // Tolerate pre-0.15 encapsulated messages which only had the length prefix
    length = continuation;
    *prefix_size_bytes = sizeof(length);
  } else {
    length = ArrowIpcReadInt32LE(data_mut, swap_endian);
    *prefix_size_bytes = sizeof(continuation) + sizeof(length);
  }
  decoder->header_size_bytes = *prefix_size_bytes + length;

  if (length < 0) {
    ArrowErrorSet(error,
                  "Expected message size > 0 but found message size of %" PRId32 " bytes",
                  length);
    return EINVAL;
  }

  if (length == 0) {
    ArrowErrorSet(error, "End of Arrow stream");
    return ENODATA;
  }

  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderPeekHeader(struct ArrowIpcDecoder* decoder,
                                         struct ArrowBufferView data,
                                         int32_t* prefix_size_bytes,
                                         struct ArrowError* error) {
  ArrowIpcDecoderResetHeaderInfo(decoder);
  NANOARROW_RETURN_NOT_OK(
      ArrowIpcDecoderReadHeaderPrefix(decoder, &data, prefix_size_bytes, error));
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderVerifyHeader(struct ArrowIpcDecoder* decoder,
                                           struct ArrowBufferView data,
                                           struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  ArrowIpcDecoderResetHeaderInfo(decoder);
  int32_t prefix_size_bytes;
  NANOARROW_RETURN_NOT_OK(
      ArrowIpcDecoderReadHeaderPrefix(decoder, &data, &prefix_size_bytes, error));

  // Check that data contains at least the entire header (return ESPIPE to signal
  // that reading more data may help).
  if (data.size_bytes < (int64_t)decoder->header_size_bytes - prefix_size_bytes) {
    ArrowErrorSet(error,
                  "Expected >= %d bytes of remaining data but found %" PRId64
                  " bytes in buffer",
                  decoder->header_size_bytes, data.size_bytes + prefix_size_bytes);
    return ESPIPE;
  }

  // Run flatbuffers verification
  enum flatcc_verify_error_no verify_error =
      ns(Message_verify_as_root(data.data.as_uint8,
                                decoder->header_size_bytes - prefix_size_bytes);
         if (verify_error != flatcc_verify_ok)) {
    ArrowErrorSet(error, "Message flatbuffer verification failed (%d) %s",
                  (int)verify_error, flatcc_verify_error_string(verify_error));
    return EINVAL;
  }

  // Read some basic information from the message
  ns(Message_table_t) message = ns(Message_as_root(data.data.as_uint8));
  decoder->metadata_version = ns(Message_version(message));
  decoder->message_type = ns(Message_header_type(message));
  decoder->body_size_bytes = ns(Message_bodyLength(message));

  private_data->last_message = ns(Message_header_get(message));
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderPeekFooter(struct ArrowIpcDecoder* decoder,
                                         struct ArrowBufferView data,
                                         struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  ArrowIpcDecoderResetHeaderInfo(decoder);
  if (data.size_bytes < (int)strlen(NANOARROW_IPC_MAGIC) + (int)sizeof(int32_t)) {
    ArrowErrorSet(error,
                  "Expected data of at least 10 bytes but only %" PRId64
                  " bytes are available",
                  data.size_bytes);
    return ESPIPE;
  }

  const char* data_end = data.data.as_char + data.size_bytes;
  const char* magic = data_end - strlen(NANOARROW_IPC_MAGIC);
  const char* footer_size_data = magic - sizeof(int32_t);

  if (memcmp(magic, NANOARROW_IPC_MAGIC, strlen(NANOARROW_IPC_MAGIC)) != 0) {
    ArrowErrorSet(error, "Expected file to end with ARROW1 but got %s", data_end);
    return EINVAL;
  }

  int32_t footer_size;
  memcpy(&footer_size, footer_size_data, sizeof(footer_size));
  if (private_data->system_endianness == NANOARROW_IPC_ENDIANNESS_BIG) {
    footer_size = bswap32(footer_size);
  }

  if (footer_size < 0) {
    ArrowErrorSet(error, "Expected footer size > 0 but found footer size of %d bytes",
                  footer_size);
    return EINVAL;
  }

  decoder->header_size_bytes = footer_size;
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderVerifyFooter(struct ArrowIpcDecoder* decoder,
                                           struct ArrowBufferView data,
                                           struct ArrowError* error) {
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderPeekFooter(decoder, data, error));

  // Check that data contains at least the entire footer (return ESPIPE to signal
  // that reading more data may help).
  int32_t footer_and_size_and_magic_size =
      decoder->header_size_bytes + sizeof(int32_t) + (int)strlen(NANOARROW_IPC_MAGIC);
  if (data.size_bytes < footer_and_size_and_magic_size) {
    ArrowErrorSet(error,
                  "Expected >= %d bytes of data but only %" PRId64
                  " bytes are in the buffer",
                  footer_and_size_and_magic_size, data.size_bytes);
    return ESPIPE;
  }

  const uint8_t* footer_data =
      data.data.as_uint8 + data.size_bytes - footer_and_size_and_magic_size;

  // Run flatbuffers verification
  enum flatcc_verify_error_no verify_error =
      ns(Footer_verify_as_root(footer_data, decoder->header_size_bytes));
  if (verify_error != flatcc_verify_ok) {
    ArrowErrorSet(error, "Footer flatbuffer verification failed (%d) %s",
                  (int)verify_error, flatcc_verify_error_string(verify_error));
    return EINVAL;
  }

  // Read some basic information from the message
  ns(Footer_table_t) footer = ns(Footer_as_root(footer_data));
  if (ns(Footer_schema(footer)) == NULL) {
    ArrowErrorSet(error, "Footer has no schema");
    return EINVAL;
  }

  decoder->metadata_version = ns(Footer_version(footer));
  decoder->body_size_bytes = 0;
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderDecodeHeader(struct ArrowIpcDecoder* decoder,
                                           struct ArrowBufferView data,
                                           struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  ArrowIpcDecoderResetHeaderInfo(decoder);
  int32_t prefix_size_bytes;
  NANOARROW_RETURN_NOT_OK(
      ArrowIpcDecoderReadHeaderPrefix(decoder, &data, &prefix_size_bytes, error));

  // Check that data contains at least the entire header (return ESPIPE to signal
  // that reading more data may help).
  if (data.size_bytes < (int64_t)decoder->header_size_bytes - prefix_size_bytes) {
    ArrowErrorSet(error,
                  "Expected >= %d bytes of remaining data but found %" PRId64
                  " bytes in buffer",
                  decoder->header_size_bytes, data.size_bytes + prefix_size_bytes);
    return ESPIPE;
  }

  ns(Message_table_t) message = ns(Message_as_root(data.data.as_uint8));
  if (!message) {
    return EINVAL;
  }

  // Read some basic information from the message
  decoder->metadata_version = ns(Message_version(message));
  decoder->message_type = ns(Message_header_type(message));
  decoder->body_size_bytes = ns(Message_bodyLength(message));

  switch (decoder->metadata_version) {
    case ns(MetadataVersion_V4):
    case ns(MetadataVersion_V5):
      break;
      ArrowErrorSet(error, "Expected metadata version V4 or V5 but found %s",
                    ns(MetadataVersion_name(ns(Message_version(message)))));
      return EINVAL;
    case ns(MetadataVersion_V1):
    case ns(MetadataVersion_V2):
    case ns(MetadataVersion_V3):
    default:
      ArrowErrorSet(error, "Unexpected value for Message metadata version (%d)",
                    decoder->metadata_version);
      return EINVAL;
  }

  flatbuffers_generic_t message_header = ns(Message_header_get(message));
  switch (decoder->message_type) {
    case ns(MessageHeader_Schema):
      NANOARROW_RETURN_NOT_OK(
          ArrowIpcDecoderDecodeSchemaHeader(decoder, message_header, error));
      break;
    case ns(MessageHeader_DictionaryBatch):
      NANOARROW_RETURN_NOT_OK(
          ArrowIpcDecoderDecodeDictionaryBatchHeader(decoder, message_header));
      break;
    case ns(MessageHeader_RecordBatch):
      NANOARROW_RETURN_NOT_OK(
          ArrowIpcDecoderDecodeRecordBatchHeader(decoder, message_header, error));
      break;
    case ns(MessageHeader_Tensor):
    case ns(MessageHeader_SparseTensor):
      ArrowErrorSet(error, "Unsupported message type: '%s'",
                    ns(MessageHeader_type_name(ns(Message_header_type(message)))));
      return ENOTSUP;
    default:
      ArrowErrorSet(error, "Unknown message type: %d", (int)(decoder->message_type));
      return EINVAL;
  }

  private_data->last_message = message_header;
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcDecoderDecodeSchemaImpl(
    ns(Schema_table_t) schema, struct ArrowSchema* out,
    struct ArrowIpcDictionaryEncodings* dictionary_encodings_out,
    struct ArrowError* error) {
  ArrowSchemaInit(out);
  // Top-level batch schema is typically non-nullable
  out->flags = 0;

  ns(Field_vec_t) fields = ns(Schema_fields(schema));
  int64_t n_fields = ns(Schema_vec_len(fields));

  ArrowErrorCode result = ArrowSchemaSetTypeStruct(out, n_fields);
  if (result != NANOARROW_OK) {
    ArrowErrorSet(error, "Failed to allocate struct schema with %" PRId64 " children",
                  n_fields);
    return result;
  }

  NANOARROW_RETURN_NOT_OK(
      ArrowIpcDecoderSetChildren(out, fields, dictionary_encodings_out, error));
  NANOARROW_RETURN_NOT_OK(
      ArrowIpcDecoderSetMetadata(out, ns(Schema_custom_metadata(schema)), error));
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderDecodeSchemaWithDictionaries(
    struct ArrowIpcDecoder* decoder, struct ArrowSchema* out,
    struct ArrowIpcDictionaryEncodings* dictionary_encodings_out,
    struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  if (private_data->last_message == NULL ||
      decoder->message_type != NANOARROW_IPC_MESSAGE_TYPE_SCHEMA) {
    ArrowErrorSet(error, "decoder did not just decode a Schema message");
    return EINVAL;
  }

  if (dictionary_encodings_out != NULL) {
    ArrowIpcDictionaryEncodingsInit(dictionary_encodings_out);
  }

  struct ArrowSchema tmp;
  ArrowErrorCode result =
      ArrowIpcDecoderDecodeSchemaImpl((ns(Schema_table_t))private_data->last_message,
                                      &tmp, dictionary_encodings_out, error);

  if (result != NANOARROW_OK) {
    ArrowSchemaRelease(&tmp);

    if (dictionary_encodings_out != NULL) {
      ArrowIpcDictionaryEncodingsReset(dictionary_encodings_out);
    }

    return result;
  }
  ArrowSchemaMove(&tmp, out);
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderDecodeSchema(struct ArrowIpcDecoder* decoder,
                                           struct ArrowSchema* out,
                                           struct ArrowError* error) {
  return ArrowIpcDecoderDecodeSchemaWithDictionaries(decoder, out, NULL, error);
}

ArrowErrorCode ArrowIpcDecoderDecodeFooter(struct ArrowIpcDecoder* decoder,
                                           struct ArrowBufferView data,
                                           struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  int32_t footer_and_size_and_magic_size =
      decoder->header_size_bytes + sizeof(int32_t) + (int)strlen(NANOARROW_IPC_MAGIC);
  const uint8_t* footer_data =
      data.data.as_uint8 + data.size_bytes - footer_and_size_and_magic_size;
  ns(Footer_table_t) footer = ns(Footer_as_root(footer_data));

  NANOARROW_RETURN_NOT_OK(
      ArrowIpcDecoderDecodeSchemaHeader(decoder, ns(Footer_schema(footer)), error));

  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderDecodeSchemaImpl(
      ns(Footer_schema(footer)), &private_data->footer.schema,
      &private_data->footer.dictionaries, error));

  ns(Block_vec_t) blocks = ns(Footer_recordBatches(footer));
  int64_t n = ns(Block_vec_len(blocks));
  NANOARROW_RETURN_NOT_OK(ArrowBufferResize(&private_data->footer.record_batch_blocks,
                                            sizeof(struct ArrowIpcFileBlock) * n,
                                            /*shrink_to_fit=*/0));
  struct ArrowIpcFileBlock* record_batches =
      (struct ArrowIpcFileBlock*)private_data->footer.record_batch_blocks.data;
  for (int64_t i = 0; i < n; i++) {
    record_batches[i].offset = ns(Block_offset(blocks + i));
    record_batches[i].metadata_length = ns(Block_metaDataLength(blocks + i));
    record_batches[i].body_length = ns(Block_bodyLength(blocks + i));
  }

  blocks = ns(Footer_dictionaries(footer));
  n = ns(Block_vec_len(blocks));
  NANOARROW_RETURN_NOT_OK(ArrowBufferResize(&private_data->footer.dictionary_blocks,
                                            sizeof(struct ArrowIpcFileBlock) * n,
                                            /*shrink_to_fit=*/0));
  struct ArrowIpcFileBlock* dictionaries =
      (struct ArrowIpcFileBlock*)private_data->footer.dictionary_blocks.data;
  for (int64_t i = 0; i < n; i++) {
    dictionaries[i].offset = ns(Block_offset(blocks + i));
    dictionaries[i].metadata_length = ns(Block_metaDataLength(blocks + i));
    dictionaries[i].body_length = ns(Block_bodyLength(blocks + i));
  }

  decoder->footer = &private_data->footer;
  return NANOARROW_OK;
}

static void ArrowIpcDecoderCountFields(const struct ArrowSchema* schema,
                                       int64_t* n_fields) {
  *n_fields += 1;
  for (int64_t i = 0; i < schema->n_children; i++) {
    ArrowIpcDecoderCountFields(schema->children[i], n_fields);
  }
}

static ArrowErrorCode ArrowIpcDecoderInitFields(
    struct ArrowIpcField* fields, const struct ArrowSchema* schema,
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    struct ArrowArrayView* array_view, struct ArrowArray* array, int64_t* n_fields,
    int64_t* n_buffers, int64_t* n_union_fields, struct ArrowError* error) {
  struct ArrowIpcField* field = fields + (*n_fields);
  field->array_view = array_view;
  field->array = array;
  field->buffer_offset = *n_buffers;
  field->dictionary_id = NANOARROW_IPC_NO_DICTIONARY_ID;

  if (schema->dictionary != NULL) {
    if (dictionary_encodings == NULL) {
      const char* name = schema->name;
      if (name == NULL) {
        name = "<unnamed field>";
      }

      ArrowErrorSet(error,
                    "Can't resolve dictionary ID for field '%s' (dictionary encodings "
                    "not provided)",
                    name);
      return EINVAL;
    }

    const struct ArrowIpcDictionaryEncoding* dictionary_encoding =
        ArrowIpcDictionaryEncodingsFind(dictionary_encodings, schema);
    if (dictionary_encoding == NULL) {
      const char* name = schema->name;
      if (name == NULL) {
        name = "<unnamed field>";
      }

      ArrowErrorSet(error, "Can't resolve dictionary ID for field '%s'", name);
      return EINVAL;
    }

    field->dictionary_id = dictionary_encoding->id;
  }

  for (int i = 0; i < NANOARROW_MAX_FIXED_BUFFERS; i++) {
    *n_buffers += array_view->layout.buffer_type[i] != NANOARROW_BUFFER_TYPE_NONE;
  }
  *n_union_fields += array_view->storage_type == NANOARROW_TYPE_SPARSE_UNION ||
                     array_view->storage_type == NANOARROW_TYPE_DENSE_UNION;

  *n_fields += 1;

  for (int64_t i = 0; i < array_view->n_children; i++) {
    NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderInitFields(
        fields, schema->children[i], dictionary_encodings, array_view->children[i],
        array->children[i], n_fields, n_buffers, n_union_fields, error));
  }

  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderSetSchemaWithDictionaries(
    struct ArrowIpcDecoder* decoder, const struct ArrowSchema* schema,
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  // Reset previously allocated schema-specific resources
  private_data->n_buffers = 0;
  private_data->n_fields = 0;
  private_data->n_union_fields = 0;
  ArrowArrayViewReset(&private_data->array_view);
  if (private_data->array.release != NULL) {
    ArrowArrayRelease(&private_data->array);
  }
  if (private_data->fields != NULL) {
    ArrowFree(private_data->fields);
  }

  // Allocate Array and ArrayView based on schema without moving the schema.
  // This will fail if the schema is not valid.
  NANOARROW_RETURN_NOT_OK(
      ArrowArrayViewInitFromSchema(&private_data->array_view, schema, error));
  NANOARROW_RETURN_NOT_OK(ArrowArrayInitFromArrayView(&private_data->array,
                                                      &private_data->array_view, error));

  // Root must be a struct
  if (private_data->array_view.storage_type != NANOARROW_TYPE_STRUCT) {
    ArrowErrorSet(error, "schema must be a struct type");
    return EINVAL;
  }

  // Walk tree and calculate how many fields we need to allocate
  ArrowIpcDecoderCountFields(schema, &private_data->n_fields);
  private_data->fields = (struct ArrowIpcField*)ArrowMalloc(private_data->n_fields *
                                                            sizeof(struct ArrowIpcField));
  if (private_data->fields == NULL) {
    ArrowErrorSet(error, "Failed to allocate decoder->fields");
    return ENOMEM;
  }
  memset(private_data->fields, 0, private_data->n_fields * sizeof(struct ArrowIpcField));

  // Init field information and calculate starting buffer offset for each
  int64_t field_i = 0;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderInitFields(
      private_data->fields, schema, dictionary_encodings, &private_data->array_view,
      &private_data->array, &field_i, &private_data->n_buffers,
      &private_data->n_union_fields, error));

  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderSetSchema(struct ArrowIpcDecoder* decoder,
                                        const struct ArrowSchema* schema,
                                        struct ArrowError* error) {
  return ArrowIpcDecoderSetSchemaWithDictionaries(decoder, schema, NULL, error);
}

ArrowErrorCode ArrowIpcDecoderSetEndianness(struct ArrowIpcDecoder* decoder,
                                            enum ArrowIpcEndianness endianness) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  switch (endianness) {
    case NANOARROW_IPC_ENDIANNESS_UNINITIALIZED:
    case NANOARROW_IPC_ENDIANNESS_LITTLE:
    case NANOARROW_IPC_ENDIANNESS_BIG:
      private_data->endianness = endianness;
      return NANOARROW_OK;
    default:
      return EINVAL;
  }
}

/// \brief Information required to read and/or decompress a single buffer
///
/// The RecordBatch message header contains a description of each buffer
/// in the message body. The ArrowIpcBufferSource is the parsed result of
/// a single buffer with compression and endian information such that the
/// original buffer can be reconstructed.
struct ArrowIpcBufferSource {
  int64_t body_offset_bytes;
  int64_t buffer_length_bytes;
  enum ArrowIpcCompressionType codec;
  enum ArrowType data_type;
  int64_t element_size_bits;
  int swap_endian;
};

/// \brief Materializing ArrowBuffer objects
///
/// Given a description of where a buffer is located inside the message body, make
/// the ArrowBuffer that will be placed into the correct ArrowArray. The decoder
/// does not do any IO and does not make any assumptions about how or if the body
/// has been read into memory. This abstraction is currently internal and exists
/// to support the two obvious ways a user might go about this: (1) using a
/// non-owned view of memory that must be copied slice-wise or (2) adding a reference
/// to an ArrowBuffer (shared buffer) and returning a slice of that memory.
struct ArrowIpcBufferFactory {
  /// \brief User-defined callback to populate a buffer view
  ///
  /// At the time that this callback is called, the ArrowIpcBufferSource has been checked
  /// to ensure that it is within the body size declared by the message header. A
  /// possibly preallocated ArrowBuffer (dst) is provided, which implementations must use
  /// if an allocation is required (in which case the view must be populated pointing to
  /// the contents of the ArrowBuffer) If NANOARROW_OK is not returned, error must contain
  /// a null-terminated message.
  ArrowErrorCode (*make_buffer)(struct ArrowIpcBufferFactory* factory,
                                struct ArrowIpcBufferSource* src,
                                struct ArrowBufferView* dst_view, struct ArrowBuffer* dst,
                                struct ArrowError* error);

  /// \brief Caller provided decompressor instance to which any decompression requests
  /// should be made.
  struct ArrowIpcDecompressor* decompressor;

  /// \brief Buffer factory provided buffer length
  ///
  /// Rather than use the body length declared by the flatbuffer message, this is the
  /// length that should be used to check the bounds of a buffer source (i.e., this is
  /// the actual available length as opposed to the theoretical length).
  int64_t buffer_length;

  /// \brief User-defined private data to be used in the callback.
  ///
  /// Usually this would be a description of where the body has been read into memory or
  /// information required to do so.
  void* private_data;
};

static ArrowErrorCode ArrowIpcDecompressBufferFromView(
    struct ArrowIpcDecompressor* decompressor,
    enum ArrowIpcCompressionType compression_type, struct ArrowBufferView src,
    struct ArrowBuffer* dst, int* needs_decompression, struct ArrowError* error) {
  if (src.size_bytes < (int64_t)sizeof(int64_t)) {
    ArrowErrorSet(
        error,
        "Buffer size must be >= sizeof(int64_t) when buffer compression is enabled");
    return EINVAL;
  }

  // When body compression is enabled, buffers are prefixed with a little endian
  // signed 64-bit integer that is the uncompressed body length.
  int64_t uncompressed_size;
  memcpy(&uncompressed_size, src.data.data, sizeof(int64_t));
  if (ArrowIpcSystemEndianness() != NANOARROW_IPC_ENDIANNESS_LITTLE) {
    uncompressed_size = (int64_t)bswap64(uncompressed_size);
  }

  // Sentinel for "body compression was enabled but this buffer is not compressed" is -1
  if (uncompressed_size == -1) {
    *needs_decompression = 0;
    return NANOARROW_OK;
  }

  if (uncompressed_size < 0) {
    ArrowErrorSet(error,
                  "Decompressed buffer size must be -1 or >= 0 bytes but was %" PRId64,
                  uncompressed_size);
    return EINVAL;
  }

  // Prepare the source and destination
  src.data.as_uint8 += sizeof(int64_t);
  src.size_bytes -= sizeof(int64_t);
  NANOARROW_RETURN_NOT_OK(ArrowBufferResize(dst, uncompressed_size, 0));

  // Add the task to the decompressor (this may execute synchronously for some
  // decompressors)
  NANOARROW_RETURN_NOT_OK(decompressor->decompress_add(
      decompressor, compression_type, src, dst->data, uncompressed_size, error));

  // Pass on that we handled the decompression
  *needs_decompression = 1;
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcMakeBufferFromView(struct ArrowIpcBufferFactory* factory,
                                                 struct ArrowIpcBufferSource* src,
                                                 struct ArrowBufferView* dst_view,
                                                 struct ArrowBuffer* dst,
                                                 struct ArrowError* error) {
  struct ArrowBufferView* body = (struct ArrowBufferView*)factory->private_data;

  struct ArrowBufferView src_view;
  src_view.data.as_uint8 = body->data.as_uint8 + src->body_offset_bytes;
  src_view.size_bytes = src->buffer_length_bytes;

  int needs_decompression = 0;
  int uncompressed_data_offset = 0;
  if (src->codec != NANOARROW_IPC_COMPRESSION_TYPE_NONE) {
    NANOARROW_RETURN_NOT_OK(ArrowIpcDecompressBufferFromView(
        factory->decompressor, src->codec, src_view, dst, &needs_decompression, error));
    uncompressed_data_offset += sizeof(int64_t);
  }

  if (!needs_decompression) {
    *dst_view = src_view;
    dst_view->data.as_uint8 += uncompressed_data_offset;
    dst_view->size_bytes -= uncompressed_data_offset;
  } else {
    dst_view->data.data = dst->data;
    dst_view->size_bytes = dst->size_bytes;
  }

  return NANOARROW_OK;
}

static struct ArrowIpcBufferFactory ArrowIpcBufferFactoryFromView(
    struct ArrowBufferView* buffer_view) {
  struct ArrowIpcBufferFactory out;
  out.make_buffer = &ArrowIpcMakeBufferFromView;
  out.decompressor = NULL;
  out.buffer_length = buffer_view->size_bytes;
  out.private_data = buffer_view;
  return out;
}

static ArrowErrorCode ArrowIpcMakeBufferFromShared(struct ArrowIpcBufferFactory* factory,
                                                   struct ArrowIpcBufferSource* src,
                                                   struct ArrowBufferView* dst_view,
                                                   struct ArrowBuffer* dst,
                                                   struct ArrowError* error) {
  struct ArrowBuffer* shared = (struct ArrowBuffer*)factory->private_data;

  int needs_decompression = 0;
  int uncompressed_data_offset = 0;
  if (src->codec != NANOARROW_IPC_COMPRESSION_TYPE_NONE) {
    struct ArrowBufferView src_view;
    src_view.data.as_uint8 = shared->data + src->body_offset_bytes;
    src_view.size_bytes = src->buffer_length_bytes;
    NANOARROW_RETURN_NOT_OK(ArrowIpcDecompressBufferFromView(
        factory->decompressor, src->codec, src_view, dst, &needs_decompression, error));
    uncompressed_data_offset += sizeof(int64_t);
  }

  if (!needs_decompression) {
    ArrowBufferReset(dst);
    NANOARROW_RETURN_NOT_OK(ArrowSharedBufferClone(shared, dst));
    dst->data += src->body_offset_bytes + uncompressed_data_offset;
    dst->size_bytes = src->buffer_length_bytes - uncompressed_data_offset;
  }

  dst_view->data.data = dst->data;
  dst_view->size_bytes = dst->size_bytes;
  return NANOARROW_OK;
}

static struct ArrowIpcBufferFactory ArrowIpcBufferFactoryFromShared(
    struct ArrowBuffer* shared) {
  struct ArrowIpcBufferFactory out;
  out.make_buffer = &ArrowIpcMakeBufferFromShared;
  out.decompressor = NULL;
  out.buffer_length = shared->size_bytes;
  out.private_data = shared;
  return out;
}

// Just for the purposes of endian-swapping
struct ArrowIpcIntervalMonthDayNano {
  uint32_t months;
  uint32_t days;
  uint64_t ns;
};

static int ArrowIpcDecoderSwapEndian(struct ArrowIpcBufferSource* src,
                                     struct ArrowBufferView* out_view,
                                     struct ArrowBuffer* dst, struct ArrowError* error) {
  NANOARROW_DCHECK(out_view->size_bytes > 0);
  NANOARROW_DCHECK(out_view->data.data != NULL);

  // Some buffer data types don't need any endian swapping
  switch (src->data_type) {
    case NANOARROW_TYPE_BOOL:
    case NANOARROW_TYPE_INT8:
    case NANOARROW_TYPE_UINT8:
    case NANOARROW_TYPE_STRING:
    case NANOARROW_TYPE_BINARY:
      return NANOARROW_OK;
    default:
      break;
  }

  // Make sure dst is not a shared buffer that we can't modify
  struct ArrowBuffer tmp;
  ArrowBufferInit(&tmp);

  if (dst->allocator.private_data != NULL) {
    ArrowBufferMove(dst, &tmp);
    ArrowBufferInit(dst);
  }

  if (dst->size_bytes == 0) {
    NANOARROW_RETURN_NOT_OK(ArrowBufferReserve(dst, out_view->size_bytes));
    dst->size_bytes = out_view->size_bytes;
  }

  switch (src->data_type) {
    case NANOARROW_TYPE_DECIMAL32: {
      uint32_t* ptr = (uint32_t*)dst->data;
      for (int64_t i = 0; i < (dst->size_bytes / 4); i++) {
        ptr[i] = bswap32(out_view->data.as_uint32[i]);
      }
      break;
    }
    case NANOARROW_TYPE_DECIMAL64:
    case NANOARROW_TYPE_DECIMAL128:
    case NANOARROW_TYPE_DECIMAL256: {
      const uint64_t* ptr_src = out_view->data.as_uint64;
      uint64_t* ptr_dst = (uint64_t*)dst->data;
      uint64_t words[4];
      int n_words = (int)(src->element_size_bits / 64);
      NANOARROW_DCHECK(n_words == 1 || n_words == 2 || n_words == 4);

      for (int64_t i = 0; i < (dst->size_bytes / n_words / 8); i++) {
        for (int j = 0; j < n_words; j++) {
          words[j] = bswap64(ptr_src[i * n_words + j]);
        }

        for (int j = 0; j < n_words; j++) {
          ptr_dst[i * n_words + j] = words[n_words - j - 1];
        }
      }
      break;
    }
    case NANOARROW_TYPE_INTERVAL_DAY_TIME: {
      uint32_t* ptr = (uint32_t*)dst->data;
      for (int64_t i = 0; i < (dst->size_bytes / 4); i++) {
        ptr[i] = bswap32(out_view->data.as_uint32[i]);
      }
      break;
    }
    case NANOARROW_TYPE_INTERVAL_MONTH_DAY_NANO: {
      const uint8_t* ptr_src = out_view->data.as_uint8;
      uint8_t* ptr_dst = dst->data;
      int item_size_bytes = 16;
      struct ArrowIpcIntervalMonthDayNano item;
      for (int64_t i = 0; i < (dst->size_bytes / item_size_bytes); i++) {
        memcpy(&item, ptr_src + i * item_size_bytes, item_size_bytes);
        item.months = bswap32(item.months);
        item.days = bswap32(item.days);
        item.ns = bswap64(item.ns);
        memcpy(ptr_dst + i * item_size_bytes, &item, item_size_bytes);
      }
      break;
    }
    default:
      switch (src->element_size_bits) {
        case 16: {
          uint16_t* ptr = (uint16_t*)dst->data;
          for (int64_t i = 0; i < (dst->size_bytes / 2); i++) {
            ptr[i] = bswap16(out_view->data.as_uint16[i]);
          }
          break;
        }
        case 32: {
          uint32_t* ptr = (uint32_t*)dst->data;
          for (int64_t i = 0; i < (dst->size_bytes / 4); i++) {
            ptr[i] = bswap32(out_view->data.as_uint32[i]);
          }
          break;
        }
        case 64: {
          uint64_t* ptr = (uint64_t*)dst->data;
          for (int64_t i = 0; i < (dst->size_bytes / 8); i++) {
            ptr[i] = bswap64(out_view->data.as_uint64[i]);
          }
          break;
        }
        default:
          ArrowErrorSet(
              error, "Endian swapping for element bitwidth %" PRId64 " is not supported",
              src->element_size_bits);
          return ENOTSUP;
      }
      break;
  }

  ArrowBufferReset(&tmp);
  out_view->data.data = dst->data;
  return NANOARROW_OK;
}

struct ArrowIpcArraySetter {
  ns(FieldNode_vec_t) fields;
  int64_t field_i;
  ns(Buffer_vec_t) buffers;
  int64_t buffer_i;
  struct ArrowIpcBufferSource src;
  struct ArrowIpcBufferFactory factory;
  enum ArrowIpcMetadataVersion version;
  struct ArrowIpcDictionaries* dictionaries;
};

static int ArrowIpcDecoderMakeBuffer(struct ArrowIpcArraySetter* setter, int64_t offset,
                                     int64_t length, struct ArrowBufferView* out_view,
                                     struct ArrowBuffer* out, struct ArrowError* error) {
  out_view->data.data = NULL;
  out_view->size_bytes = 0;

  if (length == 0) {
    return NANOARROW_OK;
  }

  // Check that this buffer fits within the body
  int64_t buffer_start = offset;
  int64_t buffer_end = buffer_start + length;
  if (buffer_start < 0 || buffer_end > setter->factory.buffer_length) {
    ArrowErrorSet(error,
                  "Buffer requires body offsets [%" PRId64 "..%" PRId64
                  ") but body has size %" PRId64,
                  buffer_start, buffer_end, setter->factory.buffer_length);
    return EINVAL;
  }

  setter->src.body_offset_bytes = offset;
  setter->src.buffer_length_bytes = length;
  NANOARROW_RETURN_NOT_OK(
      setter->factory.make_buffer(&setter->factory, &setter->src, out_view, out, error));

  if (setter->src.swap_endian) {
    NANOARROW_RETURN_NOT_OK(
        ArrowIpcDecoderSwapEndian(&setter->src, out_view, out, error));
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderWalkGetArray(struct ArrowArrayView* array_view,
                                       struct ArrowArray* array, struct ArrowArray* out,
                                       struct ArrowError* error) {
  out->length = array_view->length;
  out->null_count = array_view->null_count;

  for (int64_t i = 0; i < array->n_buffers; i++) {
    struct ArrowBufferView view = array_view->buffer_views[i];
    struct ArrowBuffer* scratch_buffer = ArrowArrayBuffer(array, i);
    struct ArrowBuffer* buffer_out = ArrowArrayBuffer(out, i);

    // If the scratch buffer was used, move it to the final array. Otherwise,
    // copy the view.
    if (scratch_buffer->size_bytes == 0) {
      NANOARROW_RETURN_NOT_OK(ArrowBufferAppendBufferView(buffer_out, view));
    } else if (scratch_buffer->data == view.data.as_uint8) {
      ArrowBufferMove(scratch_buffer, buffer_out);
    } else {
      ArrowErrorSet(
          error,
          "Internal: scratch buffer was used but doesn't point to the same data as view");
      return EINVAL;
    }
  }

  for (int64_t i = 0; i < array->n_children; i++) {
    NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderWalkGetArray(
        array_view->children[i], array->children[i], out->children[i], error));
  }

  if (array_view->dictionary != NULL) {
    // Release the dictionary that was pre-initialized by ArrowArrayInitFromArrayView
    if (out->dictionary->release != NULL) {
      ArrowArrayRelease(out->dictionary);
    }
    // Move the pre-cloned shared dictionary to output (avoids copying)
    ArrowArrayMove(array->dictionary, out->dictionary);
  }

  return NANOARROW_OK;
}

static int ArrowIpcDecoderWalkSetArrayView(struct ArrowIpcDecoder* decoder,
                                           struct ArrowIpcArraySetter* setter,
                                           struct ArrowArrayView* array_view,
                                           struct ArrowArray* array,
                                           struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  // setter->field_i indexes the flatbuffer FieldNode vector (which excludes the root
  // struct), but private_data->fields includes the root at index 0, so add 1.
  struct ArrowIpcField* ipc_field = private_data->fields + setter->field_i + 1;
  if (ipc_field->dictionary_id != NANOARROW_IPC_NO_DICTIONARY_ID) {
    if (setter->dictionaries == NULL) {
      ArrowErrorSet(
          error, "Can't decode a dictionary-encoded field without ArrowIpcDictionaries");
      return ENOTSUP;
    }

    const struct ArrowArray* dictionary;
    NANOARROW_RETURN_NOT_OK(ArrowIpcDictionariesFindCurrentValue(
        setter->dictionaries, ipc_field->dictionary_id, &dictionary, error));

    if (dictionary->release == NULL) {
      ArrowErrorSet(error, "Dictionary with ID %" PRId64 " is marked as released",
                    ipc_field->dictionary_id);
      return EINVAL;
    }

    // Set the dictionary array view from the value. We may be able to skip this
    // if we can somehow detect that the dictionary hasn't changed since the last
    // decode.
    NANOARROW_RETURN_NOT_OK(
        ArrowArrayViewSetArray(array_view->dictionary, dictionary, error));

    // Clone the shared dictionary for output (avoids copying dictionary data)
    if (array->dictionary != NULL) {
      if (array->dictionary->release != NULL) {
        ArrowArrayRelease(array->dictionary);
      }
      int clone_result =
          ArrowArrayCloneShared((struct ArrowArray*)dictionary, array->dictionary);
      if (clone_result != NANOARROW_OK) {
        ArrowErrorSet(error,
                      "Failed to clone shared dictionary with ID %" PRId64
                      " (dictionary may not be shared)",
                      ipc_field->dictionary_id);
        return clone_result;
      }
    }
  }

  ns(FieldNode_struct_t) field =
      ns(FieldNode_vec_at(setter->fields, (size_t)setter->field_i));
  array_view->length = ns(FieldNode_length(field));
  array_view->null_count = ns(FieldNode_null_count(field));
  setter->field_i += 1;

  if (array_view->storage_type == NANOARROW_TYPE_SPARSE_UNION ||
      array_view->storage_type == NANOARROW_TYPE_DENSE_UNION) {
    if (setter->version < NANOARROW_IPC_METADATA_VERSION_V5) {
      ns(Buffer_struct_t) buffer =
          ns(Buffer_vec_at(setter->buffers, (size_t)setter->buffer_i));
      if (ns(Buffer_length(buffer)) != 0) {
        ArrowErrorSet(error,
                      "Cannot read pre-1.0.0 Union array with top-level validity bitmap");
        return EINVAL;
      }
      // skip the empty validity bitmap
      setter->buffer_i += 1;
    }
  }

  for (int i = 0; i < NANOARROW_MAX_FIXED_BUFFERS; i++) {
    if (array_view->layout.buffer_type[i] == NANOARROW_BUFFER_TYPE_NONE) {
      break;
    }

    ns(Buffer_struct_t) buffer =
        ns(Buffer_vec_at(setter->buffers, (size_t)setter->buffer_i));
    int64_t buffer_offset = ns(Buffer_offset(buffer));
    int64_t buffer_length = ns(Buffer_length(buffer));
    setter->buffer_i += 1;

    // Provide a buffer that will be used if any allocation has to occur
    struct ArrowBuffer* buffer_dst = ArrowArrayBuffer(array, i);

    // Attempt to re-use any previous allocation unless this buffer is
    // wrapping a custom allocator.
    if (buffer_dst->allocator.private_data != NULL) {
      ArrowBufferReset(buffer_dst);
    } else {
      buffer_dst->size_bytes = 0;
    }

    setter->src.data_type = array_view->layout.buffer_data_type[i];
    setter->src.element_size_bits = array_view->layout.element_size_bits[i];

    NANOARROW_RETURN_NOT_OK(
        ArrowIpcDecoderMakeBuffer(setter, buffer_offset, buffer_length,
                                  &array_view->buffer_views[i], buffer_dst, error));
  }

  for (int64_t i = 0; i < array_view->n_children; i++) {
    NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderWalkSetArrayView(
        decoder, setter, array_view->children[i], array->children[i], error));
  }

  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcDecoderDecodeArrayInternal(
    struct ArrowIpcDecoder* decoder, int64_t field_i, struct ArrowArray* out,
    enum ArrowValidationLevel validation_level, struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  struct ArrowIpcField* root = private_data->fields + field_i + 1;

  if (field_i == -1) {
    NANOARROW_RETURN_NOT_OK(
        ArrowArrayInitFromArrayView(out, &private_data->array_view, error));
    out->length = private_data->array_view.length;
    out->null_count = private_data->array_view.null_count;

    for (int64_t i = 0; i < private_data->array_view.n_children; i++) {
      NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderWalkGetArray(
          private_data->array_view.children[i], private_data->array.children[i],
          out->children[i], error));
    }

  } else {
    NANOARROW_RETURN_NOT_OK(ArrowArrayInitFromArrayView(out, root->array_view, error));
    NANOARROW_RETURN_NOT_OK(
        ArrowIpcDecoderWalkGetArray(root->array_view, root->array, out, error));
  }

  // If validation is going to happen it has already occurred; however, the part of
  // ArrowArrayFinishBuilding() that allocates a data buffer if the data buffer is
  // NULL (required for compatibility with Arrow <= 9.0.0) assumes CPU data access
  // and thus needs a validation level >= default.
  if (validation_level >= NANOARROW_VALIDATION_LEVEL_DEFAULT) {
    NANOARROW_RETURN_NOT_OK(
        ArrowArrayFinishBuilding(out, NANOARROW_VALIDATION_LEVEL_DEFAULT, error));
  } else {
    NANOARROW_RETURN_NOT_OK(
        ArrowArrayFinishBuilding(out, NANOARROW_VALIDATION_LEVEL_NONE, error));
  }

  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcDecoderDecodeArrayViewInternal(
    struct ArrowIpcDecoder* decoder, struct ArrowIpcBufferFactory factory,
    int64_t field_i, struct ArrowIpcDictionaries* dictionaries,
    struct ArrowArrayView** out_view, struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  // RecordBatch messages don't count the root node but decoder->fields does
  // (decoder->fields[0] is the root field)
  if (field_i + 1 >= private_data->n_fields) {
    ArrowErrorSet(error, "cannot decode column %" PRId64 "; there are only %" PRId64,
                  field_i, private_data->n_fields - 1);
    return EINVAL;
  }

  ns(RecordBatch_table_t) batch = (ns(RecordBatch_table_t))private_data->last_message;

  struct ArrowIpcField* root = private_data->fields + field_i + 1;

  struct ArrowIpcArraySetter setter;
  setter.fields = ns(RecordBatch_nodes(batch));
  setter.field_i = field_i;
  setter.buffers = ns(RecordBatch_buffers(batch));
  setter.buffer_i = root->buffer_offset - 1;
  setter.factory = factory;
  setter.src.codec = decoder->codec;
  setter.src.swap_endian = ArrowIpcDecoderNeedsSwapEndian(decoder);
  setter.version = decoder->metadata_version;
  setter.dictionaries = dictionaries;

  // If we are going to need a decompressor here, ensure the default one is
  // initialized.
  if (setter.src.codec != NANOARROW_IPC_COMPRESSION_TYPE_NONE) {
    NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderInitDecompressor(private_data));
    setter.factory.decompressor = &private_data->decompressor;
  }

  // The flatbuffers FieldNode doesn't count the root struct so we have to loop over the
  // children ourselves
  if (field_i == -1) {
    root->array_view->length = ns(RecordBatch_length(batch));
    root->array_view->null_count = 0;
    setter.field_i++;
    setter.buffer_i++;

    for (int64_t i = 0; i < root->array_view->n_children; i++) {
      NANOARROW_RETURN_NOT_OK(
          ArrowIpcDecoderWalkSetArrayView(decoder, &setter, root->array_view->children[i],
                                          root->array->children[i], error));
    }
  } else {
    NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderWalkSetArrayView(
        decoder, &setter, root->array_view, root->array, error));
  }

  // If we decoded a compressed message, wait for any pending decompression tasks to
  // complete. The default compressor already performed the decompression
  if (setter.factory.decompressor != NULL) {
    NANOARROW_RETURN_NOT_OK(setter.factory.decompressor->decompress_wait(
        setter.factory.decompressor, -1, error));
  }

  *out_view = root->array_view;
  return NANOARROW_OK;
}

NANOARROW_DLL ArrowErrorCode ArrowIpcDecoderDecodeArrayViewWithDictionaries(
    struct ArrowIpcDecoder* decoder, struct ArrowBufferView body, int64_t i,
    struct ArrowIpcDictionaries* dictionaries, struct ArrowArrayView** out,
    struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;
  if (private_data->last_message == NULL ||
      decoder->message_type != NANOARROW_IPC_MESSAGE_TYPE_RECORD_BATCH) {
    ArrowErrorSet(error, "decoder did not just decode a RecordBatch message");
    return EINVAL;
  }

  return ArrowIpcDecoderDecodeArrayViewInternal(
      decoder, ArrowIpcBufferFactoryFromView(&body), i, dictionaries, out, error);
}

ArrowErrorCode ArrowIpcDecoderDecodeArrayView(struct ArrowIpcDecoder* decoder,
                                              struct ArrowBufferView body, int64_t i,
                                              struct ArrowArrayView** out,
                                              struct ArrowError* error) {
  return ArrowIpcDecoderDecodeArrayViewWithDictionaries(decoder, body, i, NULL, out,
                                                        error);
}

NANOARROW_DLL ArrowErrorCode ArrowIpcDecoderDecodeArrayWithDictionaries(
    struct ArrowIpcDecoder* decoder, struct ArrowBufferView body, int64_t i,
    struct ArrowIpcDictionaries* dictionaries, struct ArrowArray* out,
    enum ArrowValidationLevel validation_level, struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;
  if (private_data->last_message == NULL ||
      decoder->message_type != NANOARROW_IPC_MESSAGE_TYPE_RECORD_BATCH) {
    ArrowErrorSet(error, "decoder did not just decode a RecordBatch message");
    return EINVAL;
  }

  struct ArrowArrayView* array_view;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderDecodeArrayViewInternal(
      decoder, ArrowIpcBufferFactoryFromView(&body), i, dictionaries, &array_view,
      error));

  NANOARROW_RETURN_NOT_OK(ArrowArrayViewValidate(array_view, validation_level, error));

  struct ArrowArray temp;
  temp.release = NULL;
  int result =
      ArrowIpcDecoderDecodeArrayInternal(decoder, i, &temp, validation_level, error);
  if (result != NANOARROW_OK && temp.release != NULL) {
    ArrowArrayRelease(&temp);
  } else if (result != NANOARROW_OK) {
    return result;
  }

  ArrowArrayMove(&temp, out);
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderDecodeArray(struct ArrowIpcDecoder* decoder,
                                          struct ArrowBufferView body, int64_t i,
                                          struct ArrowArray* out,
                                          enum ArrowValidationLevel validation_level,
                                          struct ArrowError* error) {
  return ArrowIpcDecoderDecodeArrayWithDictionaries(decoder, body, i, NULL, out,
                                                    validation_level, error);
}

ArrowErrorCode ArrowIpcDecoderDecodeArrayFromSharedWithDictionaries(
    struct ArrowIpcDecoder* decoder, struct ArrowBuffer* body, int64_t i,
    struct ArrowIpcDictionaries* dictionaries, struct ArrowArray* out,
    enum ArrowValidationLevel validation_level, struct ArrowError* error) {
  struct ArrowArrayView* array_view;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderDecodeArrayViewInternal(
      decoder, ArrowIpcBufferFactoryFromShared(body), i, dictionaries, &array_view,
      error));

  NANOARROW_RETURN_NOT_OK(ArrowArrayViewValidate(array_view, validation_level, error));

  struct ArrowArray temp;
  temp.release = NULL;
  int result =
      ArrowIpcDecoderDecodeArrayInternal(decoder, i, &temp, validation_level, error);
  if (result != NANOARROW_OK && temp.release != NULL) {
    ArrowArrayRelease(&temp);
  } else if (result != NANOARROW_OK) {
    return result;
  }

  ArrowArrayMove(&temp, out);
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcDecoderDecodeArrayFromShared(
    struct ArrowIpcDecoder* decoder, struct ArrowBuffer* body, int64_t i,
    struct ArrowArray* out, enum ArrowValidationLevel validation_level,
    struct ArrowError* error) {
  return ArrowIpcDecoderDecodeArrayFromSharedWithDictionaries(decoder, body, i, NULL, out,
                                                              validation_level, error);
}

static ArrowErrorCode ArrowIpcDecoderDecodeDictionaryInternal(
    struct ArrowIpcDecoder* decoder, struct ArrowIpcBufferFactory factory,
    enum ArrowValidationLevel validation_level, struct ArrowIpcDictionaries* dictionaries,
    struct ArrowError* error) {
  struct ArrowIpcDecoderPrivate* private_data =
      (struct ArrowIpcDecoderPrivate*)decoder->private_data;

  if (decoder->message_type != NANOARROW_IPC_MESSAGE_TYPE_DICTIONARY_BATCH) {
    ArrowErrorSet(error, "decoder did not just decode a DictionaryBatch message");
    return EINVAL;
  }

  struct ArrowIpcDictionary* dictionary =
      ArrowIpcDictionariesFindById(dictionaries, decoder->dictionary->id);
  if (dictionary == NULL) {
    ArrowErrorSet(error,
                  "Can't decode DictionaryBatch with ID %" PRId64
                  " (dictionary definition not found)",
                  decoder->dictionary->id);
    return EINVAL;
  }

  // Set the dictionary->decoder's last message type and last message so that we can
  // decode the value.
  ns(DictionaryBatch_table_t) dictionary_batch =
      (ns(DictionaryBatch_table_t))private_data->last_message;
  ns(RecordBatch_table_t) record_batch = ns(DictionaryBatch_data(dictionary_batch));

  struct ArrowIpcDecoderPrivate* dictionary_decoder_private_data =
      (struct ArrowIpcDecoderPrivate*)dictionary->decoder.private_data;
  dictionary->decoder.message_type = NANOARROW_IPC_MESSAGE_TYPE_RECORD_BATCH;
  dictionary_decoder_private_data->last_message = record_batch;
  // Transfer the endianness setting so that buffers are byte-swapped if needed
  dictionary_decoder_private_data->endianness = private_data->endianness;

  struct ArrowArrayView* array_view;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderDecodeArrayViewInternal(
      &dictionary->decoder, factory, 0, dictionaries, &array_view, error));

  NANOARROW_RETURN_NOT_OK(ArrowArrayViewValidate(array_view, validation_level, error));

  struct ArrowArray tmp;
  tmp.release = NULL;
  int result = ArrowIpcDecoderDecodeArrayInternal(&dictionary->decoder, 0, &tmp,
                                                  validation_level, error);
  if (result != NANOARROW_OK && tmp.release != NULL) {
    ArrowArrayRelease(&tmp);
    return result;
  } else if (result != NANOARROW_OK) {
    return result;
  }

  if (decoder->dictionary->is_delta) {
    result = ArrowIpcDictionaryAppend(dictionary, &tmp, error);
  } else {
    result = ArrowIpcDictionaryReplace(dictionary, &tmp, error);
  }

  if (result != NANOARROW_OK) {
    ArrowArrayRelease(&tmp);
    return result;
  }

  return NANOARROW_OK;
}

NANOARROW_DLL ArrowErrorCode ArrowIpcDecoderDecodeDictionary(
    struct ArrowIpcDecoder* decoder, struct ArrowBufferView body,
    enum ArrowValidationLevel validation_level, struct ArrowIpcDictionaries* dictionaries,
    struct ArrowError* error) {
  NANOARROW_DCHECK(decoder != NULL);
  NANOARROW_DCHECK(dictionaries != NULL);

  return ArrowIpcDecoderDecodeDictionaryInternal(decoder,
                                                 ArrowIpcBufferFactoryFromView(&body),
                                                 validation_level, dictionaries, error);
}

NANOARROW_DLL ArrowErrorCode ArrowIpcDecoderDecodeDictionaryFromShared(
    struct ArrowIpcDecoder* decoder, struct ArrowBuffer* shared,
    enum ArrowValidationLevel validation_level, struct ArrowIpcDictionaries* dictionaries,
    struct ArrowError* error) {
  NANOARROW_DCHECK(decoder != NULL);
  NANOARROW_DCHECK(shared != NULL);
  NANOARROW_DCHECK(dictionaries != NULL);

  return ArrowIpcDecoderDecodeDictionaryInternal(decoder,
                                                 ArrowIpcBufferFactoryFromShared(shared),
                                                 validation_level, dictionaries, error);
}
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

#include <errno.h>
#include <stdio.h>
#include <string.h>

#include "flatcc/flatcc_builder.h"

#include "nanoarrow.h"
#include "nanoarrow_ipc.h"

#define ns(x) FLATBUFFERS_WRAP_NAMESPACE(org_apache_arrow_flatbuf, x)

#define FLATCC_RETURN_UNLESS_0_NO_NS(x, error)                        \
  if ((x) != 0) {                                                     \
    ArrowErrorSet(error, "%s:%d: %s failed", __FILE__, __LINE__, #x); \
    return ENOMEM;                                                    \
  }

#define FLATCC_RETURN_UNLESS_0(x, error) FLATCC_RETURN_UNLESS_0_NO_NS(ns(x), error)

#define FLATCC_RETURN_IF_NULL(x, error)                                 \
  if (!(x)) {                                                           \
    ArrowErrorSet(error, "%s:%d: %s was null", __FILE__, __LINE__, #x); \
    return ENOMEM;                                                      \
  }

struct ArrowIpcEncoderPrivate {
  flatcc_builder_t builder;
  struct ArrowBuffer buffers;
  struct ArrowBuffer nodes;
  int encoding_footer;
  struct ArrowIpcDictionaryEncodings dictionary_encodings;
};

ArrowErrorCode ArrowIpcEncoderInit(struct ArrowIpcEncoder* encoder) {
  NANOARROW_DCHECK(encoder != NULL);
  memset(encoder, 0, sizeof(struct ArrowIpcEncoder));
  encoder->private_data = ArrowMalloc(sizeof(struct ArrowIpcEncoderPrivate));
  struct ArrowIpcEncoderPrivate* private =
      (struct ArrowIpcEncoderPrivate*)encoder->private_data;
  if (private == NULL) {
    return ENOMEM;
  }
  if (flatcc_builder_init(&private->builder) == -1) {
    ArrowFree(private);
    return ESPIPE;
  }
  private->encoding_footer = 0;
  ArrowBufferInit(&private->buffers);
  ArrowBufferInit(&private->nodes);
  ArrowIpcDictionaryEncodingsInit(&private->dictionary_encodings);
  return NANOARROW_OK;
}

void ArrowIpcEncoderReset(struct ArrowIpcEncoder* encoder) {
  NANOARROW_DCHECK(encoder != NULL);
  struct ArrowIpcEncoderPrivate* private =
      (struct ArrowIpcEncoderPrivate*)encoder->private_data;
  if (private != NULL) {
    flatcc_builder_clear(&private->builder);
    ArrowBufferReset(&private->nodes);
    ArrowBufferReset(&private->buffers);
    ArrowIpcDictionaryEncodingsReset(&private->dictionary_encodings);
    ArrowFree(private);
  }
  memset(encoder, 0, sizeof(struct ArrowIpcEncoder));
}

static ArrowErrorCode ArrowIpcEncoderWriteContinuationAndSize(struct ArrowBuffer* out,
                                                              size_t size) {
  _NANOARROW_CHECK_UPPER_LIMIT(size, INT32_MAX);
  NANOARROW_RETURN_NOT_OK(ArrowBufferAppendInt32(out, -1));

  if (ArrowIpcSystemEndianness() == NANOARROW_IPC_ENDIANNESS_BIG) {
    return ArrowBufferAppendInt32(out, (int32_t)bswap32((uint32_t)size));
  } else {
    return ArrowBufferAppendInt32(out, (int32_t)size);
  }
}

ArrowErrorCode ArrowIpcEncoderFinalizeBuffer(struct ArrowIpcEncoder* encoder,
                                             char encapsulate, struct ArrowBuffer* out) {
  NANOARROW_DCHECK(encoder != NULL && encoder->private_data != NULL && out != NULL);
  struct ArrowIpcEncoderPrivate* private =
      (struct ArrowIpcEncoderPrivate*)encoder->private_data;

  size_t size = flatcc_builder_get_buffer_size(&private->builder);

  if (encapsulate) {
    int64_t padded_size = _ArrowRoundUpToMultipleOf8(size);
    NANOARROW_RETURN_NOT_OK(
        ArrowBufferReserve(out, sizeof(int32_t) + sizeof(int32_t) + padded_size));
    NANOARROW_ASSERT_OK(ArrowIpcEncoderWriteContinuationAndSize(out, padded_size));
  } else {
    NANOARROW_RETURN_NOT_OK(ArrowBufferReserve(out, size));
  }

  if (size == 0) {
    // Finalizing an empty flatcc_builder_t triggers an assertion
    return NANOARROW_OK;
  }

  void* data =
      flatcc_builder_copy_buffer(&private->builder, out->data + out->size_bytes, size);
  NANOARROW_DCHECK(data != NULL);
  NANOARROW_UNUSED(data);
  out->size_bytes += size;

  while (encapsulate && out->size_bytes % 8 != 0) {
    // zero padding bytes, if any
    out->data[out->size_bytes++] = 0;
  }

  // don't deallocate yet, just wipe the builder's current Message
  flatcc_builder_reset(&private->builder);
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcEncodeFieldType(flatcc_builder_t* builder,
                                              const struct ArrowSchemaView* schema_view,
                                              struct ArrowError* error) {
  switch (schema_view->type) {
    case NANOARROW_TYPE_NA:
      FLATCC_RETURN_UNLESS_0(Field_type_Null_create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_BOOL:
      FLATCC_RETURN_UNLESS_0(Field_type_Bool_create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_UINT8:
    case NANOARROW_TYPE_INT8:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Int_create(builder, 8, schema_view->type == NANOARROW_TYPE_INT8),
          error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_UINT16:
    case NANOARROW_TYPE_INT16:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Int_create(builder, 16, schema_view->type == NANOARROW_TYPE_INT16),
          error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_UINT32:
    case NANOARROW_TYPE_INT32:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Int_create(builder, 32, schema_view->type == NANOARROW_TYPE_INT32),
          error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_UINT64:
    case NANOARROW_TYPE_INT64:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Int_create(builder, 64, schema_view->type == NANOARROW_TYPE_INT64),
          error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_HALF_FLOAT:
      FLATCC_RETURN_UNLESS_0(Field_type_FloatingPoint_create(builder, ns(Precision_HALF)),
                             error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_FLOAT:
      FLATCC_RETURN_UNLESS_0(
          Field_type_FloatingPoint_create(builder, ns(Precision_SINGLE)), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_DOUBLE:
      FLATCC_RETURN_UNLESS_0(
          Field_type_FloatingPoint_create(builder, ns(Precision_DOUBLE)), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_DECIMAL32:
    case NANOARROW_TYPE_DECIMAL64:
    case NANOARROW_TYPE_DECIMAL128:
    case NANOARROW_TYPE_DECIMAL256:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Decimal_create(builder, schema_view->decimal_precision,
                                    schema_view->decimal_scale,
                                    schema_view->decimal_bitwidth),
          error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_STRING:
      FLATCC_RETURN_UNLESS_0(Field_type_Utf8_create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_LARGE_STRING:
      FLATCC_RETURN_UNLESS_0(Field_type_LargeUtf8_create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_BINARY:
      FLATCC_RETURN_UNLESS_0(Field_type_Binary_create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_LARGE_BINARY:
      FLATCC_RETURN_UNLESS_0(Field_type_LargeBinary_create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_DATE32:
      FLATCC_RETURN_UNLESS_0(Field_type_Date_create(builder, ns(DateUnit_DAY)), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_DATE64:
      FLATCC_RETURN_UNLESS_0(Field_type_Date_create(builder, ns(DateUnit_MILLISECOND)),
                             error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_INTERVAL_MONTHS:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Interval_create(builder, ns(IntervalUnit_YEAR_MONTH)), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_INTERVAL_DAY_TIME:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Interval_create(builder, ns(IntervalUnit_DAY_TIME)), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_INTERVAL_MONTH_DAY_NANO:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Interval_create(builder, ns(IntervalUnit_MONTH_DAY_NANO)), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_TIMESTAMP:
      FLATCC_RETURN_UNLESS_0(Field_type_Timestamp_start(builder), error);
      FLATCC_RETURN_UNLESS_0(
          Timestamp_unit_add(builder, (ns(TimeUnit_enum_t))schema_view->time_unit),
          error);
      if (schema_view->timezone && schema_view->timezone[0] != 0) {
        FLATCC_RETURN_UNLESS_0(
            Timestamp_timezone_create_str(builder, schema_view->timezone), error);
      }
      FLATCC_RETURN_UNLESS_0(Field_type_Timestamp_end(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_TIME32:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Time_create(builder, (ns(TimeUnit_enum_t))schema_view->time_unit,
                                 32),
          error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_TIME64:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Time_create(builder, (ns(TimeUnit_enum_t))schema_view->time_unit,
                                 64),
          error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_DURATION:
      FLATCC_RETURN_UNLESS_0(Field_type_Duration_create(
                                 builder, (ns(TimeUnit_enum_t))schema_view->time_unit),
                             error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_FIXED_SIZE_BINARY:
      FLATCC_RETURN_UNLESS_0(
          Field_type_FixedSizeBinary_create(builder, schema_view->fixed_size), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_LIST:
      FLATCC_RETURN_UNLESS_0(Field_type_List_create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_LARGE_LIST:
      FLATCC_RETURN_UNLESS_0(Field_type_LargeList_create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_FIXED_SIZE_LIST:
      FLATCC_RETURN_UNLESS_0(
          Field_type_FixedSizeList_create(builder, schema_view->fixed_size), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_RUN_END_ENCODED:
      FLATCC_RETURN_UNLESS_0(Field_type_RunEndEncoded_create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_STRUCT:
      FLATCC_RETURN_UNLESS_0(Field_type_Struct__create(builder), error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_SPARSE_UNION:
    case NANOARROW_TYPE_DENSE_UNION: {
      FLATCC_RETURN_UNLESS_0(Field_type_Union_start(builder), error);

      FLATCC_RETURN_UNLESS_0(
          Union_mode_add(builder, schema_view->type == NANOARROW_TYPE_DENSE_UNION),
          error);
      if (schema_view->union_type_ids) {
        int8_t type_ids[128];
        int n = _ArrowParseUnionTypeIds(schema_view->union_type_ids, type_ids);
        if (n != 0) {
          FLATCC_RETURN_UNLESS_0(Union_typeIds_start(builder), error);
          int32_t* type_ids_32 = (int32_t*)ns(Union_typeIds_extend(builder, n));
          FLATCC_RETURN_IF_NULL(type_ids_32, error);

          for (int i = 0; i < n; i++) {
            type_ids_32[i] = type_ids[i];
          }
          FLATCC_RETURN_UNLESS_0(Union_typeIds_end(builder), error);
        }
      }

      FLATCC_RETURN_UNLESS_0(Field_type_Union_end(builder), error);
      return NANOARROW_OK;
    }

    case NANOARROW_TYPE_MAP:
      FLATCC_RETURN_UNLESS_0(
          Field_type_Map_create(builder,
                                schema_view->schema->flags & ARROW_FLAG_MAP_KEYS_SORTED),
          error);
      return NANOARROW_OK;

    case NANOARROW_TYPE_DICTIONARY:
      ArrowErrorSet(error, "IPC encoding of dictionary types unsupported");
      return ENOTSUP;

    default:
      ArrowErrorSet(error, "Expected a valid enum ArrowType value but found %d",
                    schema_view->type);
      return EINVAL;
  }
}

static ArrowErrorCode ArrowIpcEncodeField(
    flatcc_builder_t* builder, const struct ArrowSchema* schema,
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    struct ArrowError* error);

static ArrowErrorCode ArrowIpcEncodeMetadata(flatcc_builder_t* builder,
                                             const struct ArrowSchema* schema,
                                             int (*push_start)(flatcc_builder_t*),
                                             ns(KeyValue_ref_t) *
                                                 (*push_end)(flatcc_builder_t*),
                                             struct ArrowError* error) {
  struct ArrowMetadataReader metadata;
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowMetadataReaderInit(&metadata, schema->metadata),
                                     error);
  while (metadata.remaining_keys > 0) {
    struct ArrowStringView key, value;
    NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowMetadataReaderRead(&metadata, &key, &value),
                                       error);
    FLATCC_RETURN_UNLESS_0_NO_NS(push_start(builder), error);
    FLATCC_RETURN_UNLESS_0(KeyValue_key_create_strn(builder, key.data, key.size_bytes),
                           error);
    FLATCC_RETURN_UNLESS_0(
        KeyValue_value_create_strn(builder, value.data, value.size_bytes), error);
    FLATCC_RETURN_IF_NULL(push_end(builder), error);
  }
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcEncodeFields(
    flatcc_builder_t* builder, const struct ArrowSchema* schema,
    int (*push_start)(flatcc_builder_t*),
    ns(Field_ref_t) * (*push_end)(flatcc_builder_t*),
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    struct ArrowError* error) {
  for (int i = 0; i < schema->n_children; i++) {
    FLATCC_RETURN_UNLESS_0_NO_NS(push_start(builder), error);
    NANOARROW_RETURN_NOT_OK(
        ArrowIpcEncodeField(builder, schema->children[i], dictionary_encodings, error));
    FLATCC_RETURN_IF_NULL(push_end(builder), error);
  }
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcEncodeField(
    flatcc_builder_t* builder, const struct ArrowSchema* schema,
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    struct ArrowError* error) {
  FLATCC_RETURN_UNLESS_0(Field_name_create_str(builder, schema->name), error);
  FLATCC_RETURN_UNLESS_0(
      Field_nullable_add(builder, (schema->flags & ARROW_FLAG_NULLABLE) != 0), error);

  struct ArrowSchemaView schema_view;
  NANOARROW_RETURN_NOT_OK(ArrowSchemaViewInit(&schema_view, schema, error));

  if (schema_view.type == NANOARROW_TYPE_DICTIONARY) {
    const struct ArrowIpcDictionaryEncoding* encoding =
        ArrowIpcDictionaryEncodingsFind(dictionary_encodings, schema);

    // We just computed these dictionary ids, so we should be able to resolve them
    if (encoding == NULL) {
      ArrowErrorSet(error, "Unexpected missing dictionary encoding for field");
      return EINVAL;
    }

    // Determine the index type's bitWidth and is_signed from the storage_type
    int32_t index_bitwidth;
    flatbuffers_bool_t index_is_signed;
    switch (schema_view.storage_type) {
      case NANOARROW_TYPE_INT8:
        index_bitwidth = 8;
        index_is_signed = 1;
        break;
      case NANOARROW_TYPE_UINT8:
        index_bitwidth = 8;
        index_is_signed = 0;
        break;
      case NANOARROW_TYPE_INT16:
        index_bitwidth = 16;
        index_is_signed = 1;
        break;
      case NANOARROW_TYPE_UINT16:
        index_bitwidth = 16;
        index_is_signed = 0;
        break;
      case NANOARROW_TYPE_INT32:
        index_bitwidth = 32;
        index_is_signed = 1;
        break;
      case NANOARROW_TYPE_UINT32:
        index_bitwidth = 32;
        index_is_signed = 0;
        break;
      case NANOARROW_TYPE_INT64:
        index_bitwidth = 64;
        index_is_signed = 1;
        break;
      case NANOARROW_TYPE_UINT64:
        index_bitwidth = 64;
        index_is_signed = 0;
        break;
      default:
        ArrowErrorSet(error, "Invalid dictionary index type: %s",
                      ArrowTypeString(schema_view.storage_type));
        return EINVAL;
    }

    // Create the Int type for the index type
    ns(Int_ref_t) index_type_ref =
        ns(Int_create(builder, index_bitwidth, index_is_signed));
    FLATCC_RETURN_IF_NULL(index_type_ref, error);

    // Create the DictionaryEncoding with id, indexType, isOrdered, and dictionaryKind
    flatbuffers_bool_t is_ordered = (schema->flags & ARROW_FLAG_DICTIONARY_ORDERED) != 0;
    ns(DictionaryEncoding_ref_t) dict_encoding_ref =
        ns(DictionaryEncoding_create(builder, encoding->id, index_type_ref, is_ordered,
                                     ns(DictionaryKind_DenseArray)));
    FLATCC_RETURN_IF_NULL(dict_encoding_ref, error);

    // Add the dictionary encoding to the field
    FLATCC_RETURN_UNLESS_0(Field_dictionary_add(builder, dict_encoding_ref), error);

    NANOARROW_RETURN_NOT_OK(ArrowSchemaViewInit(&schema_view, schema->dictionary, error));
  }

  NANOARROW_RETURN_NOT_OK(ArrowIpcEncodeFieldType(builder, &schema_view, error));

  if (schema->n_children != 0) {
    FLATCC_RETURN_UNLESS_0(Field_children_start(builder), error);
    NANOARROW_RETURN_NOT_OK(
        ArrowIpcEncodeFields(builder, schema, &ns(Field_children_push_start),
                             &ns(Field_children_push_end), dictionary_encodings, error));
    FLATCC_RETURN_UNLESS_0(Field_children_end(builder), error);
  }

  if (schema->metadata) {
    FLATCC_RETURN_UNLESS_0(Field_custom_metadata_start(builder), error);
    NANOARROW_RETURN_NOT_OK(
        ArrowIpcEncodeMetadata(builder, schema, &ns(Field_custom_metadata_push_start),
                               &ns(Field_custom_metadata_push_end), error));
    FLATCC_RETURN_UNLESS_0(Field_custom_metadata_end(builder), error);
  }
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcEncodeSchema(
    flatcc_builder_t* builder, const struct ArrowSchema* schema,
    const struct ArrowIpcDictionaryEncodings* dictionary_encodings,
    struct ArrowError* error) {
  NANOARROW_DCHECK(schema->release != NULL);

  if (strcmp(schema->format, "+s") != 0) {
    ArrowErrorSet(
        error,
        "Cannot encode schema with format '%s'; top level schema must have struct type",
        schema->format);
    return EINVAL;
  }

  if (ArrowIpcSystemEndianness() == NANOARROW_IPC_ENDIANNESS_LITTLE) {
    FLATCC_RETURN_UNLESS_0(Schema_endianness_add(builder, ns(Endianness_Little)), error);
  } else {
    FLATCC_RETURN_UNLESS_0(Schema_endianness_add(builder, ns(Endianness_Big)), error);
  }

  FLATCC_RETURN_UNLESS_0(Schema_fields_start(builder), error);
  NANOARROW_RETURN_NOT_OK(
      ArrowIpcEncodeFields(builder, schema, &ns(Schema_fields_push_start),
                           &ns(Schema_fields_push_end), dictionary_encodings, error));
  FLATCC_RETURN_UNLESS_0(Schema_fields_end(builder), error);

  FLATCC_RETURN_UNLESS_0(Schema_custom_metadata_start(builder), error);
  if (schema->metadata) {
    NANOARROW_RETURN_NOT_OK(
        ArrowIpcEncodeMetadata(builder, schema, &ns(Schema_custom_metadata_push_start),
                               &ns(Schema_custom_metadata_push_end), error));
  }
  FLATCC_RETURN_UNLESS_0(Schema_custom_metadata_end(builder), error);

  FLATCC_RETURN_UNLESS_0(Schema_features_start(builder), error);
  FLATCC_RETURN_UNLESS_0(Schema_features_end(builder), error);

  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcEncoderEncodeSchema(struct ArrowIpcEncoder* encoder,
                                           const struct ArrowSchema* schema,
                                           struct ArrowError* error) {
  NANOARROW_DCHECK(encoder != NULL && encoder->private_data != NULL && schema != NULL);

  struct ArrowIpcEncoderPrivate* private =
      (struct ArrowIpcEncoderPrivate*)encoder->private_data;

  flatcc_builder_t* builder = &private->builder;

  FLATCC_RETURN_UNLESS_0(Message_start_as_root(builder), error);

  FLATCC_RETURN_UNLESS_0(Message_version_add(builder, ns(MetadataVersion_V5)), error);

  FLATCC_RETURN_UNLESS_0(Message_header_Schema_start(builder), error);

  // Look for any fields of the schema that should be dictionary encoded
  if (private->dictionary_encodings.encodings.size_bytes > 0) {
    ArrowIpcDictionaryEncodingsReset(&private->dictionary_encodings);
    ArrowIpcDictionaryEncodingsInit(&private->dictionary_encodings);
  }
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowIpcDictionaryEncodingsAppendSchema(&private->dictionary_encodings, schema),
      error);

  NANOARROW_RETURN_NOT_OK(
      ArrowIpcEncodeSchema(builder, schema, &private->dictionary_encodings, error));

  FLATCC_RETURN_UNLESS_0(Message_header_Schema_end(builder), error);

  FLATCC_RETURN_UNLESS_0(Message_bodyLength_add(builder, 0), error);

  FLATCC_RETURN_IF_NULL(ns(Message_end_as_root(builder)), error);
  return NANOARROW_OK;
}

struct ArrowIpcBufferEncoder {
  /// \brief Callback invoked against each buffer to be encoded
  ///
  /// Encoding of buffers is left as a callback to accommodate dissociated data storage.
  /// One implementation of this callback might copy all buffers into a contiguous body
  /// for use in an arrow IPC stream, another implementation might store offsets and
  /// lengths relative to a known arena.
  ArrowErrorCode (*encode_buffer)(struct ArrowBufferView buffer_view,
                                  struct ArrowIpcEncoder* encoder,
                                  struct ArrowIpcBufferEncoder* buffer_encoder,
                                  int64_t* offset, int64_t* length,
                                  struct ArrowError* error);

  /// \brief Pointer to arbitrary data used by encode_buffer()
  void* encode_buffer_state;

  /// \brief Finalized body length of the most recently encoded RecordBatch message
  ///
  /// encode_buffer() is expected to update this while encoding each buffer. After all
  /// buffers are encoded, this will be written to the RecordBatch's .bodyLength
  int64_t body_length;
};

static ArrowErrorCode ArrowIpcEncoderBuildContiguousBodyBufferCallback(
    struct ArrowBufferView buffer_view, struct ArrowIpcEncoder* encoder,
    struct ArrowIpcBufferEncoder* buffer_encoder, int64_t* offset, int64_t* length,
    struct ArrowError* error) {
  NANOARROW_UNUSED(encoder);

  struct ArrowBuffer* body_buffer =
      (struct ArrowBuffer*)buffer_encoder->encode_buffer_state;

  int64_t old_size = body_buffer->size_bytes;
  int64_t buffer_begin = _ArrowRoundUpToMultipleOf8(old_size);
  int64_t buffer_end = buffer_begin + buffer_view.size_bytes;
  int64_t new_size = _ArrowRoundUpToMultipleOf8(buffer_end);

  // reserve all the memory we'll need now
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowBufferReserve(body_buffer, new_size - old_size),
                                     error);

  // zero padding up to the start of the buffer
  NANOARROW_ASSERT_OK(ArrowBufferAppendFill(body_buffer, 0, buffer_begin - old_size));

  // store offset and length of the buffer
  *offset = buffer_begin;
  *length = buffer_view.size_bytes;

  NANOARROW_ASSERT_OK(
      ArrowBufferAppend(body_buffer, buffer_view.data.data, buffer_view.size_bytes));

  // zero padding after writing the buffer
  NANOARROW_DCHECK(body_buffer->size_bytes == buffer_end);
  NANOARROW_ASSERT_OK(ArrowBufferAppendFill(body_buffer, 0, new_size - buffer_end));

  buffer_encoder->body_length = body_buffer->size_bytes;
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcEncoderEncodeRecordBatchImpl(
    struct ArrowIpcEncoder* encoder, struct ArrowIpcBufferEncoder* buffer_encoder,
    const struct ArrowArrayView* array_view, struct ArrowBuffer* buffers,
    struct ArrowBuffer* nodes, struct ArrowError* error) {
  if (array_view->offset != 0) {
    ArrowErrorSet(error, "Cannot encode arrays with nonzero offset");
    return ENOTSUP;
  }

  if (array_view->dictionary != NULL) {
    ArrowErrorSet(error, "Cannot encode dictionary arrays");
    return ENOTSUP;
  }

  for (int64_t c = 0; c < array_view->n_children; ++c) {
    const struct ArrowArrayView* child = array_view->children[c];

    struct ns(FieldNode) node = {child->length, child->null_count};
    NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowBufferAppend(nodes, &node, sizeof(node)),
                                       error);

    for (int64_t b = 0; b < child->array->n_buffers; ++b) {
      struct ns(Buffer) buffer;
      NANOARROW_RETURN_NOT_OK(
          buffer_encoder->encode_buffer(child->buffer_views[b], encoder, buffer_encoder,
                                        &buffer.offset, &buffer.length, error));
      NANOARROW_RETURN_NOT_OK_WITH_ERROR(
          ArrowBufferAppend(buffers, &buffer, sizeof(buffer)), error);
    }

    NANOARROW_RETURN_NOT_OK(ArrowIpcEncoderEncodeRecordBatchImpl(
        encoder, buffer_encoder, child, buffers, nodes, error));
  }
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcEncoderEncodeRecordBatch(
    struct ArrowIpcEncoder* encoder, struct ArrowIpcBufferEncoder* buffer_encoder,
    const struct ArrowArrayView* array_view, struct ArrowError* error) {
  NANOARROW_DCHECK(encoder != NULL && encoder->private_data != NULL &&
                   buffer_encoder != NULL && buffer_encoder->encode_buffer != NULL);
  if (array_view->null_count != 0 && ArrowArrayViewComputeNullCount(array_view) != 0) {
    ArrowErrorSet(error,
                  "RecordBatches cannot be constructed from arrays with top level nulls");
    return EINVAL;
  }

  if (array_view->storage_type != NANOARROW_TYPE_STRUCT) {
    ArrowErrorSet(
        error,
        "RecordBatches cannot be constructed from arrays of type other than struct");
    return EINVAL;
  }

  struct ArrowIpcEncoderPrivate* private =
      (struct ArrowIpcEncoderPrivate*)encoder->private_data;

  flatcc_builder_t* builder = &private->builder;

  FLATCC_RETURN_UNLESS_0(Message_start_as_root(builder), error);
  FLATCC_RETURN_UNLESS_0(Message_version_add(builder, ns(MetadataVersion_V5)), error);

  FLATCC_RETURN_UNLESS_0(Message_header_RecordBatch_start(builder), error);
  FLATCC_RETURN_UNLESS_0(RecordBatch_length_add(builder, array_view->length), error);

  NANOARROW_ASSERT_OK(ArrowBufferResize(&private->buffers, 0, 0));
  NANOARROW_ASSERT_OK(ArrowBufferResize(&private->nodes, 0, 0));
  NANOARROW_RETURN_NOT_OK(ArrowIpcEncoderEncodeRecordBatchImpl(
      encoder, buffer_encoder, array_view, &private->buffers, &private->nodes, error));

  FLATCC_RETURN_UNLESS_0(RecordBatch_nodes_create(  //
                             builder, (struct ns(FieldNode)*)private->nodes.data,
                             private->nodes.size_bytes / sizeof(struct ns(FieldNode))),
                         error);
  FLATCC_RETURN_UNLESS_0(RecordBatch_buffers_create(  //
                             builder, (struct ns(Buffer)*)private->buffers.data,
                             private->buffers.size_bytes / sizeof(struct ns(Buffer))),
                         error);

  FLATCC_RETURN_UNLESS_0(Message_header_RecordBatch_end(builder), error);

  FLATCC_RETURN_UNLESS_0(Message_bodyLength_add(builder, buffer_encoder->body_length),
                         error);
  FLATCC_RETURN_IF_NULL(ns(Message_end_as_root(builder)), error);
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcEncoderEncodeSimpleRecordBatch(
    struct ArrowIpcEncoder* encoder, const struct ArrowArrayView* array_view,
    struct ArrowBuffer* body_buffer, struct ArrowError* error) {
  NANOARROW_DCHECK(encoder != NULL && encoder->private_data != NULL &&
                   body_buffer != NULL);

  struct ArrowIpcBufferEncoder buffer_encoder = {
      .encode_buffer = &ArrowIpcEncoderBuildContiguousBodyBufferCallback,
      .encode_buffer_state = body_buffer,
      .body_length = 0,
  };

  return ArrowIpcEncoderEncodeRecordBatch(encoder, &buffer_encoder, array_view, error);
}

void ArrowIpcFooterInit(struct ArrowIpcFooter* footer) {
  footer->schema.release = NULL;
  ArrowBufferInit(&footer->record_batch_blocks);
  ArrowBufferInit(&footer->dictionary_blocks);
  ArrowIpcDictionaryEncodingsInit(&footer->dictionaries);
}

void ArrowIpcFooterReset(struct ArrowIpcFooter* footer) {
  if (footer->schema.release != NULL) {
    ArrowSchemaRelease(&footer->schema);
  }
  ArrowBufferReset(&footer->record_batch_blocks);
  ArrowBufferReset(&footer->dictionary_blocks);
  ArrowIpcDictionaryEncodingsReset(&footer->dictionaries);
}

ArrowErrorCode ArrowIpcEncoderEncodeFooter(struct ArrowIpcEncoder* encoder,
                                           const struct ArrowIpcFooter* footer,
                                           struct ArrowError* error) {
  NANOARROW_DCHECK(encoder != NULL && encoder->private_data != NULL && footer != NULL);

  struct ArrowIpcEncoderPrivate* private =
      (struct ArrowIpcEncoderPrivate*)encoder->private_data;

  flatcc_builder_t* builder = &private->builder;

  FLATCC_RETURN_UNLESS_0(Footer_start_as_root(builder), error);

  FLATCC_RETURN_UNLESS_0(Footer_version_add(builder, ns(MetadataVersion_V5)), error);

  FLATCC_RETURN_UNLESS_0(Footer_schema_start(builder), error);
  NANOARROW_RETURN_NOT_OK(
      ArrowIpcEncodeSchema(builder, &footer->schema, &footer->dictionaries, error));
  FLATCC_RETURN_UNLESS_0(Footer_schema_end(builder), error);

  const struct ArrowIpcFileBlock* blocks =
      (struct ArrowIpcFileBlock*)footer->record_batch_blocks.data;
  int64_t n_blocks =
      footer->record_batch_blocks.size_bytes / sizeof(struct ArrowIpcFileBlock);

  FLATCC_RETURN_UNLESS_0(Footer_recordBatches_start(builder), error);
  struct ns(Block)* flatcc_RecordBatch_blocks =
      ns(Footer_recordBatches_extend(builder, n_blocks));
  FLATCC_RETURN_IF_NULL(flatcc_RecordBatch_blocks, error);
  for (int64_t i = 0; i < n_blocks; i++) {
    struct ns(Block) block = {
        blocks[i].offset,
        blocks[i].metadata_length,
        blocks[i].body_length,
    };
    flatcc_RecordBatch_blocks[i] = block;
  }
  FLATCC_RETURN_UNLESS_0(Footer_recordBatches_end(builder), error);

  FLATCC_RETURN_IF_NULL(ns(Footer_end_as_root(builder)), error);
  return NANOARROW_OK;
}
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

#include <errno.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>

#include "nanoarrow.h"
#include "nanoarrow_ipc.h"

// ENODATA is an XSI extension and is not defined by all libcs (e.g., older
// Windows/MinGW toolchains used by R 3.6, FreeBSD, and OpenBSD).
#if !defined(ENODATA)
#define ENODATA 120
#endif

// Sentinel value to indicate that we haven't read a message yet
// and don't know the number of header prefix bytes to expect.
static const int32_t kExpectedHeaderPrefixSizeNotSet = -1;

void ArrowIpcInputStreamMove(struct ArrowIpcInputStream* src,
                             struct ArrowIpcInputStream* dst) {
  memcpy(dst, src, sizeof(struct ArrowIpcInputStream));
  src->release = NULL;
}

struct ArrowIpcInputStreamBufferPrivate {
  struct ArrowBuffer input;
  int64_t cursor_bytes;
};

static ArrowErrorCode ArrowIpcInputStreamBufferRead(struct ArrowIpcInputStream* stream,
                                                    uint8_t* buf, int64_t buf_size_bytes,
                                                    int64_t* size_read_out,
                                                    struct ArrowError* error) {
  NANOARROW_UNUSED(error);

  if (buf_size_bytes == 0) {
    *size_read_out = 0;
    return NANOARROW_OK;
  }

  struct ArrowIpcInputStreamBufferPrivate* private_data =
      (struct ArrowIpcInputStreamBufferPrivate*)stream->private_data;
  int64_t bytes_remaining = private_data->input.size_bytes - private_data->cursor_bytes;
  int64_t bytes_to_read;
  if (bytes_remaining > buf_size_bytes) {
    bytes_to_read = buf_size_bytes;
  } else {
    bytes_to_read = bytes_remaining;
  }

  if (bytes_to_read > 0) {
    memcpy(buf, private_data->input.data + private_data->cursor_bytes, bytes_to_read);
  }

  *size_read_out = bytes_to_read;
  private_data->cursor_bytes += bytes_to_read;
  return NANOARROW_OK;
}

static void ArrowIpcInputStreamBufferRelease(struct ArrowIpcInputStream* stream) {
  struct ArrowIpcInputStreamBufferPrivate* private_data =
      (struct ArrowIpcInputStreamBufferPrivate*)stream->private_data;
  ArrowBufferReset(&private_data->input);
  ArrowFree(private_data);
  stream->release = NULL;
}

ArrowErrorCode ArrowIpcInputStreamInitBuffer(struct ArrowIpcInputStream* stream,
                                             struct ArrowBuffer* input) {
  NANOARROW_DCHECK(stream != NULL);

  struct ArrowIpcInputStreamBufferPrivate* private_data =
      (struct ArrowIpcInputStreamBufferPrivate*)ArrowMalloc(
          sizeof(struct ArrowIpcInputStreamBufferPrivate));
  if (private_data == NULL) {
    return ENOMEM;
  }

  ArrowBufferMove(input, &private_data->input);
  private_data->cursor_bytes = 0;
  stream->read = &ArrowIpcInputStreamBufferRead;
  stream->release = &ArrowIpcInputStreamBufferRelease;
  stream->private_data = private_data;

  return NANOARROW_OK;
}

struct ArrowIpcInputStreamFilePrivate {
  FILE* file_ptr;
  int stream_finished;
  int close_on_release;
};

static void ArrowIpcInputStreamFileRelease(struct ArrowIpcInputStream* stream) {
  struct ArrowIpcInputStreamFilePrivate* private_data =
      (struct ArrowIpcInputStreamFilePrivate*)stream->private_data;

  if (private_data->file_ptr != NULL && private_data->close_on_release) {
    fclose(private_data->file_ptr);
  }

  ArrowFree(private_data);
  stream->release = NULL;
}

static ArrowErrorCode ArrowIpcInputStreamFileRead(struct ArrowIpcInputStream* stream,
                                                  uint8_t* buf, int64_t buf_size_bytes,
                                                  int64_t* size_read_out,
                                                  struct ArrowError* error) {
  struct ArrowIpcInputStreamFilePrivate* private_data =
      (struct ArrowIpcInputStreamFilePrivate*)stream->private_data;

  if (private_data->stream_finished) {
    *size_read_out = 0;
    return NANOARROW_OK;
  }

  // Do the read
  int64_t bytes_read = (int64_t)fread(buf, 1, buf_size_bytes, private_data->file_ptr);
  *size_read_out = bytes_read;

  if (bytes_read != buf_size_bytes) {
    private_data->stream_finished = 1;

    // Inspect error
    int has_error = !feof(private_data->file_ptr) && ferror(private_data->file_ptr);

    // Try to close the file now
    if (private_data->close_on_release) {
      if (fclose(private_data->file_ptr) == 0) {
        private_data->file_ptr = NULL;
      }
    }

    // Maybe return error
    if (has_error) {
      ArrowErrorSet(error, "ArrowIpcInputStreamFile IO error");
      return EIO;
    }
  }

  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcInputStreamInitFile(struct ArrowIpcInputStream* stream,
                                           void* file_ptr, int close_on_release) {
  NANOARROW_DCHECK(stream != NULL);
  if (file_ptr == NULL) {
    return errno ? errno : EINVAL;
  }

  struct ArrowIpcInputStreamFilePrivate* private_data =
      (struct ArrowIpcInputStreamFilePrivate*)ArrowMalloc(
          sizeof(struct ArrowIpcInputStreamFilePrivate));
  if (private_data == NULL) {
    return ENOMEM;
  }

  private_data->file_ptr = (FILE*)file_ptr;
  private_data->close_on_release = close_on_release;
  private_data->stream_finished = 0;

  stream->read = &ArrowIpcInputStreamFileRead;
  stream->release = &ArrowIpcInputStreamFileRelease;
  stream->private_data = private_data;
  return NANOARROW_OK;
}

struct ArrowIpcArrayStreamReaderPrivate {
  struct ArrowIpcInputStream input;
  struct ArrowIpcDecoder decoder;
  int use_shared_buffers;
  struct ArrowSchema out_schema;
  int64_t field_index;
  struct ArrowBuffer header;
  struct ArrowBuffer body;
  int32_t expected_header_prefix_size;
  struct ArrowIpcDictionaries dictionaries;
  struct ArrowError error;
};

static void ArrowIpcArrayStreamReaderRelease(struct ArrowArrayStream* stream) {
  struct ArrowIpcArrayStreamReaderPrivate* private_data =
      (struct ArrowIpcArrayStreamReaderPrivate*)stream->private_data;

  if (private_data->input.release != NULL) {
    private_data->input.release(&private_data->input);
  }

  ArrowIpcDecoderReset(&private_data->decoder);

  if (private_data->out_schema.release != NULL) {
    ArrowSchemaRelease(&private_data->out_schema);
  }

  ArrowBufferReset(&private_data->header);
  ArrowBufferReset(&private_data->body);

  if (private_data->dictionaries.private_data != NULL) {
    ArrowIpcDictionariesReset(&private_data->dictionaries);
  }

  ArrowFree(private_data);
  stream->release = NULL;
}

static int ArrowIpcArrayStreamReaderNextHeader(
    struct ArrowIpcArrayStreamReaderPrivate* private_data, int schema_expected) {
  private_data->header.size_bytes = 0;
  int64_t bytes_read = 0;

  // Read 8 bytes (continuation + header size in bytes)
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowBufferReserve(&private_data->header, 8),
                                     &private_data->error);
  NANOARROW_RETURN_NOT_OK(private_data->input.read(&private_data->input,
                                                   private_data->header.data, 8,
                                                   &bytes_read, &private_data->error));
  private_data->header.size_bytes += bytes_read;

  if (bytes_read == 0) {
    // The caller might not use this error message (e.g., if the end of the stream
    // is one of the valid outcomes) but we set the error anyway in case it gets
    // propagated higher (e.g., if the stream is empty and there's no schema message)
    ArrowErrorSet(&private_data->error, "No data available on stream");
    return ENODATA;
  } else if (bytes_read == 4 && private_data->expected_header_prefix_size == 4) {
    // Special case very, very old IPC streams that used 0x00000000 as the
    // end-of-stream indicator. We may want to remove this case at some point:
    // https://github.com/apache/arrow-nanoarrow/issues/648
    uint32_t last_four_bytes = 0;
    memcpy(&last_four_bytes, private_data->header.data, sizeof(uint32_t));
    if (last_four_bytes == 0) {
      ArrowErrorSet(&private_data->error, "No data available on stream");
      return ENODATA;
    } else {
      ArrowErrorSet(&private_data->error,
                    "Expected 0x00000000 if exactly four bytes are available at the end "
                    "of a stream");
      return EINVAL;
    }
  } else if (bytes_read != 8) {
    ArrowErrorSet(&private_data->error,
                  "Expected at least 8 bytes in remainder of stream");
    return EINVAL;
  }

  struct ArrowBufferView input_view;
  input_view.data.data = private_data->header.data;
  input_view.size_bytes = private_data->header.size_bytes;

  // Use PeekHeader to fill in decoder.header_size_bytes
  int32_t prefix_size_bytes = 0;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderPeekHeader(
      &private_data->decoder, input_view, &prefix_size_bytes, &private_data->error));

  // Check for a consistent header prefix size
  if (private_data->expected_header_prefix_size != kExpectedHeaderPrefixSizeNotSet &&
      prefix_size_bytes != private_data->expected_header_prefix_size) {
    ArrowErrorSet(&private_data->error,
                  "Expected prefix %d prefix header bytes but found %d",
                  (int)private_data->expected_header_prefix_size, (int)prefix_size_bytes);
    return EINVAL;
  } else {
    private_data->expected_header_prefix_size = prefix_size_bytes;
  }

  // Legacy streams are missing the 0xFFFFFFFF at the start of the message. The
  // decoder can handle this; however, verification will fail because flatbuffers
  // must be 8-byte aligned. To handle this case, we prepend the continuation
  // token to the start of the stream and ensure that we read four fewer bytes
  // the next time we issue a read. We may be able to remove this case in the future:
  // https://github.com/apache/arrow-nanoarrow/issues/648
  int64_t extra_bytes_already_read = 0;
  if (prefix_size_bytes == 4) {
    NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowBufferReserve(&private_data->header, 4),
                                       &private_data->error);
    memmove(private_data->header.data + 4, private_data->header.data,
            private_data->header.size_bytes);
    uint32_t continuation = 0xFFFFFFFFU;
    memcpy(private_data->header.data, &continuation, sizeof(uint32_t));
    private_data->header.size_bytes += 4;
    extra_bytes_already_read = 4;

    input_view.data.data = private_data->header.data;
    input_view.size_bytes = private_data->header.size_bytes;

    int32_t new_prefix_size_bytes;
    NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderPeekHeader(&private_data->decoder, input_view,
                                                      &new_prefix_size_bytes,
                                                      &private_data->error));
    NANOARROW_DCHECK(new_prefix_size_bytes == 8);
  }

  // Read the header bytes
  int64_t expected_header_bytes = private_data->decoder.header_size_bytes - 8;
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowBufferReserve(&private_data->header,
                         expected_header_bytes - extra_bytes_already_read),
      &private_data->error);
  NANOARROW_RETURN_NOT_OK(private_data->input.read(
      &private_data->input, private_data->header.data + private_data->header.size_bytes,
      expected_header_bytes - extra_bytes_already_read, &bytes_read,
      &private_data->error));
  private_data->header.size_bytes += bytes_read;

  // Verify + decode the header
  input_view.data.data = private_data->header.data;
  input_view.size_bytes = private_data->header.size_bytes;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderVerifyHeader(&private_data->decoder, input_view,
                                                      &private_data->error));

  // If we have a 4-byte header prefix, make sure the metadata version is V4
  // (Note that some V4 IPC files have an 8 byte header prefix).
  if (prefix_size_bytes == 4 &&
      private_data->decoder.metadata_version != NANOARROW_IPC_METADATA_VERSION_V4) {
    ArrowErrorSet(&private_data->error,
                  "Header prefix size of four bytes is only allowed for V4 metadata");
    return EINVAL;
  }

  // Don't decode the message if it's of the wrong type (because the error message
  // is better communicated by the caller)
  if ((schema_expected &&
       private_data->decoder.message_type != NANOARROW_IPC_MESSAGE_TYPE_SCHEMA) ||
      (!schema_expected &&
       private_data->decoder.message_type == NANOARROW_IPC_MESSAGE_TYPE_SCHEMA)) {
    return NANOARROW_OK;
  }

  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderDecodeHeader(&private_data->decoder, input_view,
                                                      &private_data->error));
  return NANOARROW_OK;
}

static int ArrowIpcArrayStreamReaderNextBody(
    struct ArrowIpcArrayStreamReaderPrivate* private_data) {
  int64_t bytes_read;
  int64_t bytes_to_read = private_data->decoder.body_size_bytes;

  // Read the body bytes
  private_data->body.size_bytes = 0;
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowBufferReserve(&private_data->body, bytes_to_read), &private_data->error);
  NANOARROW_RETURN_NOT_OK(private_data->input.read(&private_data->input,
                                                   private_data->body.data, bytes_to_read,
                                                   &bytes_read, &private_data->error));
  private_data->body.size_bytes += bytes_read;

  if (bytes_read != bytes_to_read) {
    ArrowErrorSet(&private_data->error,
                  "Expected to be able to read %" PRId64
                  " bytes for message body but got %" PRId64,
                  bytes_to_read, bytes_read);
    return ESPIPE;
  } else {
    return NANOARROW_OK;
  }
}

static int ArrowIpcArrayStreamReaderReadSchemaIfNeeded(
    struct ArrowIpcArrayStreamReaderPrivate* private_data) {
  if (private_data->out_schema.release != NULL) {
    return NANOARROW_OK;
  }

  NANOARROW_RETURN_NOT_OK(ArrowIpcArrayStreamReaderNextHeader(private_data, 1));

  // Error if this isn't a schema message
  if (private_data->decoder.message_type != NANOARROW_IPC_MESSAGE_TYPE_SCHEMA) {
    ArrowErrorSet(&private_data->error,
                  "Unexpected message type at start of input (expected Schema)");
    return EINVAL;
  }

  // ...or if it uses features we don't support
  if (private_data->decoder.feature_flags & NANOARROW_IPC_FEATURE_COMPRESSED_BODY) {
    ArrowErrorSet(&private_data->error,
                  "This stream uses unsupported feature COMPRESSED_BODY");
    return EINVAL;
  }

  if (private_data->decoder.feature_flags &
      NANOARROW_IPC_FEATURE_DICTIONARY_REPLACEMENT) {
    ArrowErrorSet(&private_data->error,
                  "This stream uses unsupported feature DICTIONARY_REPLACEMENT");
    return EINVAL;
  }

  // Notify the decoder of buffer endianness
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowIpcDecoderSetEndianness(&private_data->decoder,
                                   private_data->decoder.endianness),
      &private_data->error);

  struct ArrowSchema tmp;
  struct ArrowIpcDictionaryEncodings dictionary_encodings;
  NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderDecodeSchemaWithDictionaries(
      &private_data->decoder, &tmp, &dictionary_encodings, &private_data->error));

  // Only support "read the whole thing" for now
  if (private_data->field_index != -1) {
    ArrowSchemaRelease(&tmp);
    ArrowIpcDictionaryEncodingsReset(&dictionary_encodings);
    ArrowErrorSet(&private_data->error, "Field index != -1 is not yet supported");
    return ENOTSUP;
  }

  // Initialize dictionary decoders
  int result = ArrowIpcDictionariesInit(&private_data->dictionaries,
                                        &dictionary_encodings, &private_data->error);
  if (result != NANOARROW_OK) {
    ArrowIpcDictionaryEncodingsReset(&dictionary_encodings);
    ArrowSchemaRelease(&tmp);
    return result;
  }

  // Notify the decoder of the schema for forthcoming messages
  result = ArrowIpcDecoderSetSchemaWithDictionaries(
      &private_data->decoder, &tmp, &dictionary_encodings, &private_data->error);
  ArrowIpcDictionaryEncodingsReset(&dictionary_encodings);
  if (result != NANOARROW_OK) {
    ArrowIpcDictionariesReset(&private_data->dictionaries);
    ArrowSchemaRelease(&tmp);
    return result;
  }

  ArrowSchemaMove(&tmp, &private_data->out_schema);
  return NANOARROW_OK;
}

static int ArrowIpcArrayStreamReaderGetSchema(struct ArrowArrayStream* stream,
                                              struct ArrowSchema* out) {
  struct ArrowIpcArrayStreamReaderPrivate* private_data =
      (struct ArrowIpcArrayStreamReaderPrivate*)stream->private_data;
  private_data->error.message[0] = '\0';
  NANOARROW_RETURN_NOT_OK(ArrowIpcArrayStreamReaderReadSchemaIfNeeded(private_data));
  return ArrowSchemaDeepCopy(&private_data->out_schema, out);
}

static int ArrowIpcArrayStreamReaderProcessRecordBatch(
    struct ArrowIpcArrayStreamReaderPrivate* private_data, struct ArrowArray* out) {
  // Read in the body
  NANOARROW_RETURN_NOT_OK(ArrowIpcArrayStreamReaderNextBody(private_data));

  if (private_data->use_shared_buffers) {
    struct ArrowBuffer shared;
    NANOARROW_RETURN_NOT_OK_WITH_ERROR(
        ArrowSharedBufferInit(&shared, &private_data->body), &private_data->error);
    ArrowErrorCode result = ArrowIpcDecoderDecodeArrayFromSharedWithDictionaries(
        &private_data->decoder, &shared, private_data->field_index,
        &private_data->dictionaries, out, NANOARROW_VALIDATION_LEVEL_FULL,
        &private_data->error);
    ArrowBufferReset(&shared);
    NANOARROW_RETURN_NOT_OK(result);
  } else {
    struct ArrowBufferView body_view;
    body_view.data.data = private_data->body.data;
    body_view.size_bytes = private_data->body.size_bytes;

    NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderDecodeArrayWithDictionaries(
        &private_data->decoder, body_view, private_data->field_index,
        &private_data->dictionaries, out, NANOARROW_VALIDATION_LEVEL_FULL,
        &private_data->error));
  }

  return NANOARROW_OK;
}

static int ArrowIpcArrayStreamReaderProcessDictionary(
    struct ArrowIpcArrayStreamReaderPrivate* private_data) {
  // Read in the body
  NANOARROW_RETURN_NOT_OK(ArrowIpcArrayStreamReaderNextBody(private_data));

  if (private_data->use_shared_buffers) {
    // Decode the dictionary
    struct ArrowBuffer shared;
    NANOARROW_RETURN_NOT_OK_WITH_ERROR(
        ArrowSharedBufferInit(&shared, &private_data->body), &private_data->error);
    int result = ArrowIpcDecoderDecodeDictionaryFromShared(
        &private_data->decoder, &shared, NANOARROW_VALIDATION_LEVEL_FULL,
        &private_data->dictionaries, &private_data->error);
    ArrowBufferReset(&shared);
    NANOARROW_RETURN_NOT_OK(result);
  } else {
    struct ArrowBufferView body_view;
    body_view.data.data = private_data->body.data;
    body_view.size_bytes = private_data->body.size_bytes;
    NANOARROW_RETURN_NOT_OK(ArrowIpcDecoderDecodeDictionary(
        &private_data->decoder, body_view, NANOARROW_VALIDATION_LEVEL_FULL,
        &private_data->dictionaries, &private_data->error));
  }

  return NANOARROW_OK;
}

static int ArrowIpcArrayStreamReaderProcessMessage(
    struct ArrowIpcArrayStreamReaderPrivate* private_data,
    enum ArrowIpcMessageType* message_type, struct ArrowArray* out) {
  // Read + decode the next header
  int result = ArrowIpcArrayStreamReaderNextHeader(private_data, 0);
  if (result == ENODATA) {
    // Stream is finished either because there is no input or because
    // end of stream bytes were read. Read this as a RecordBatch in the
    // sense that we populate out->release to NULL and return OK.
    *message_type = NANOARROW_IPC_MESSAGE_TYPE_RECORD_BATCH;
    out->release = NULL;
    return NANOARROW_OK;
  } else if (result != NANOARROW_OK) {
    // Other error
    return result;
  }

  // Make sure we have a RecordBatch message or DictionaryBatch message
  switch (private_data->decoder.message_type) {
    case NANOARROW_IPC_MESSAGE_TYPE_RECORD_BATCH:
      *message_type = NANOARROW_IPC_MESSAGE_TYPE_RECORD_BATCH;
      return ArrowIpcArrayStreamReaderProcessRecordBatch(private_data, out);
    case NANOARROW_IPC_MESSAGE_TYPE_DICTIONARY_BATCH:
      *message_type = NANOARROW_IPC_MESSAGE_TYPE_DICTIONARY_BATCH;
      return ArrowIpcArrayStreamReaderProcessDictionary(private_data);
    default:
      ArrowErrorSet(&private_data->error,
                    "Unexpected message type (expected RecordBatch or DictionaryBatch)");
      return EINVAL;
  }
}

static int ArrowIpcArrayStreamReaderGetNext(struct ArrowArrayStream* stream,
                                            struct ArrowArray* out) {
  struct ArrowIpcArrayStreamReaderPrivate* private_data =
      (struct ArrowIpcArrayStreamReaderPrivate*)stream->private_data;
  ArrowErrorInit(&private_data->error);
  NANOARROW_RETURN_NOT_OK(ArrowIpcArrayStreamReaderReadSchemaIfNeeded(private_data));

  enum ArrowIpcMessageType message_type;
  struct ArrowArray tmp;
  tmp.release = NULL;

  do {
    int result =
        ArrowIpcArrayStreamReaderProcessMessage(private_data, &message_type, &tmp);
    if (result != NANOARROW_OK) {
      if (tmp.release != NULL) {
        ArrowArrayRelease(&tmp);
      }

      return result;
    }
  } while (message_type != NANOARROW_IPC_MESSAGE_TYPE_RECORD_BATCH);

  ArrowArrayMove(&tmp, out);
  return NANOARROW_OK;
}

static const char* ArrowIpcArrayStreamReaderGetLastError(
    struct ArrowArrayStream* stream) {
  struct ArrowIpcArrayStreamReaderPrivate* private_data =
      (struct ArrowIpcArrayStreamReaderPrivate*)stream->private_data;
  return private_data->error.message;
}

ArrowErrorCode ArrowIpcArrayStreamReaderInit(
    struct ArrowArrayStream* out, struct ArrowIpcInputStream* input_stream,
    struct ArrowIpcArrayStreamReaderOptions* options) {
  struct ArrowIpcArrayStreamReaderPrivate* private_data =
      (struct ArrowIpcArrayStreamReaderPrivate*)ArrowMalloc(
          sizeof(struct ArrowIpcArrayStreamReaderPrivate));
  if (private_data == NULL) {
    return ENOMEM;
  }

  int result = ArrowIpcDecoderInit(&private_data->decoder);
  if (result != NANOARROW_OK) {
    ArrowFree(private_data);
    return result;
  }

  ArrowBufferInit(&private_data->header);
  ArrowBufferInit(&private_data->body);
  private_data->out_schema.release = NULL;
  ArrowIpcInputStreamMove(input_stream, &private_data->input);
  private_data->expected_header_prefix_size = kExpectedHeaderPrefixSizeNotSet;
  private_data->dictionaries.private_data = NULL;

  if (options != NULL) {
    private_data->field_index = options->field_index;
    private_data->use_shared_buffers = options->use_shared_buffers;
  } else {
    private_data->field_index = -1;
    private_data->use_shared_buffers = ArrowSharedBufferIsThreadSafe();
  }

  out->private_data = private_data;
  out->get_schema = &ArrowIpcArrayStreamReaderGetSchema;
  out->get_next = &ArrowIpcArrayStreamReaderGetNext;
  out->get_last_error = &ArrowIpcArrayStreamReaderGetLastError;
  out->release = &ArrowIpcArrayStreamReaderRelease;

  return NANOARROW_OK;
}
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

#include <errno.h>
#include <stdio.h>
#include <string.h>

#include "flatcc/flatcc_builder.h"

#include "nanoarrow.h"
#include "nanoarrow_ipc.h"

#define ns(x) FLATBUFFERS_WRAP_NAMESPACE(org_apache_arrow_flatbuf, x)

void ArrowIpcOutputStreamMove(struct ArrowIpcOutputStream* src,
                              struct ArrowIpcOutputStream* dst) {
  NANOARROW_DCHECK(src != NULL && dst != NULL);

  memcpy(dst, src, sizeof(struct ArrowIpcOutputStream));
  src->release = NULL;
}

ArrowErrorCode ArrowIpcOutputStreamWrite(struct ArrowIpcOutputStream* stream,
                                         struct ArrowBufferView data,
                                         struct ArrowError* error) {
  while (data.size_bytes != 0) {
    int64_t bytes_written = 0;
    NANOARROW_RETURN_NOT_OK(stream->write(stream, data.data.as_uint8, data.size_bytes,
                                          &bytes_written, error));
    data.size_bytes -= bytes_written;
    data.data.as_uint8 += bytes_written;
  }
  return NANOARROW_OK;
}

struct ArrowIpcOutputStreamBufferPrivate {
  struct ArrowBuffer* output;
};

static ArrowErrorCode ArrowIpcOutputStreamBufferWrite(struct ArrowIpcOutputStream* stream,
                                                      const void* buf,
                                                      int64_t buf_size_bytes,
                                                      int64_t* size_written_out,
                                                      struct ArrowError* error) {
  struct ArrowIpcOutputStreamBufferPrivate* private_data =
      (struct ArrowIpcOutputStreamBufferPrivate*)stream->private_data;
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowBufferAppend(private_data->output, buf, buf_size_bytes), error);
  *size_written_out = buf_size_bytes;
  return NANOARROW_OK;
}

static void ArrowIpcOutputStreamBufferRelease(struct ArrowIpcOutputStream* stream) {
  struct ArrowIpcOutputStreamBufferPrivate* private_data =
      (struct ArrowIpcOutputStreamBufferPrivate*)stream->private_data;
  ArrowFree(private_data);
  stream->release = NULL;
}

ArrowErrorCode ArrowIpcOutputStreamInitBuffer(struct ArrowIpcOutputStream* stream,
                                              struct ArrowBuffer* output) {
  NANOARROW_DCHECK(stream != NULL && output != NULL);

  struct ArrowIpcOutputStreamBufferPrivate* private_data =
      (struct ArrowIpcOutputStreamBufferPrivate*)ArrowMalloc(
          sizeof(struct ArrowIpcOutputStreamBufferPrivate));
  if (private_data == NULL) {
    return ENOMEM;
  }

  private_data->output = output;
  stream->write = &ArrowIpcOutputStreamBufferWrite;
  stream->release = &ArrowIpcOutputStreamBufferRelease;
  stream->private_data = private_data;

  return NANOARROW_OK;
}

struct ArrowIpcOutputStreamFilePrivate {
  FILE* file_ptr;
  int stream_finished;
  int close_on_release;
};

static void ArrowIpcOutputStreamFileRelease(struct ArrowIpcOutputStream* stream) {
  struct ArrowIpcOutputStreamFilePrivate* private_data =
      (struct ArrowIpcOutputStreamFilePrivate*)stream->private_data;

  if (private_data->file_ptr != NULL && private_data->close_on_release) {
    fclose(private_data->file_ptr);
  }

  ArrowFree(private_data);
  stream->release = NULL;
}

static ArrowErrorCode ArrowIpcOutputStreamFileWrite(struct ArrowIpcOutputStream* stream,
                                                    const void* buf,
                                                    int64_t buf_size_bytes,
                                                    int64_t* size_written_out,
                                                    struct ArrowError* error) {
  struct ArrowIpcOutputStreamFilePrivate* private_data =
      (struct ArrowIpcOutputStreamFilePrivate*)stream->private_data;

  if (private_data->stream_finished) {
    *size_written_out = 0;
    return NANOARROW_OK;
  }

  // Do the write
  int64_t bytes_written = (int64_t)fwrite(buf, 1, buf_size_bytes, private_data->file_ptr);
  *size_written_out = bytes_written;

  if (bytes_written != buf_size_bytes) {
    private_data->stream_finished = 1;

    // Inspect error
    int has_error = !feof(private_data->file_ptr) && ferror(private_data->file_ptr);

    // Try to close the file now
    if (private_data->close_on_release) {
      if (fclose(private_data->file_ptr) == 0) {
        private_data->file_ptr = NULL;
      }
    }

    // Maybe return error
    if (has_error) {
      ArrowErrorSet(error, "ArrowIpcOutputStreamFile IO error");
      return EIO;
    }
  }

  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcOutputStreamInitFile(struct ArrowIpcOutputStream* stream,
                                            void* file_ptr, int close_on_release) {
  NANOARROW_DCHECK(stream != NULL);
  if (file_ptr == NULL) {
    return errno ? errno : EINVAL;
  }

  struct ArrowIpcOutputStreamFilePrivate* private_data =
      (struct ArrowIpcOutputStreamFilePrivate*)ArrowMalloc(
          sizeof(struct ArrowIpcOutputStreamFilePrivate));
  if (private_data == NULL) {
    return ENOMEM;
  }

  private_data->file_ptr = (FILE*)file_ptr;
  private_data->close_on_release = close_on_release;
  private_data->stream_finished = 0;

  stream->write = &ArrowIpcOutputStreamFileWrite;
  stream->release = &ArrowIpcOutputStreamFileRelease;
  stream->private_data = private_data;
  return NANOARROW_OK;
}

struct ArrowIpcWriterPrivate {
  struct ArrowIpcEncoder encoder;
  struct ArrowIpcOutputStream output_stream;
  struct ArrowBuffer buffer;
  struct ArrowBuffer body_buffer;

  int writing_file;
  int64_t bytes_written;
  struct ArrowIpcFooter footer;
};

ArrowErrorCode ArrowIpcWriterInit(struct ArrowIpcWriter* writer,
                                  struct ArrowIpcOutputStream* output_stream) {
  NANOARROW_DCHECK(writer != NULL && output_stream != NULL);

  struct ArrowIpcWriterPrivate* private =
      (struct ArrowIpcWriterPrivate*)ArrowMalloc(sizeof(struct ArrowIpcWriterPrivate));

  if (private == NULL) {
    return ENOMEM;
  }
  NANOARROW_RETURN_NOT_OK(ArrowIpcEncoderInit(&private->encoder));
  ArrowIpcOutputStreamMove(output_stream, &private->output_stream);

  ArrowBufferInit(&private->buffer);
  ArrowBufferInit(&private->body_buffer);

  private->writing_file = 0;
  private->bytes_written = 0;
  ArrowIpcFooterInit(&private->footer);

  writer->private_data = private;
  return NANOARROW_OK;
}

void ArrowIpcWriterReset(struct ArrowIpcWriter* writer) {
  NANOARROW_DCHECK(writer != NULL);

  struct ArrowIpcWriterPrivate* private =
      (struct ArrowIpcWriterPrivate*)writer->private_data;

  if (private != NULL) {
    ArrowIpcEncoderReset(&private->encoder);
    private->output_stream.release(&private->output_stream);
    ArrowBufferReset(&private->buffer);
    ArrowBufferReset(&private->body_buffer);

    ArrowIpcFooterReset(&private->footer);

    ArrowFree(private);
  }
  memset(writer, 0, sizeof(struct ArrowIpcWriter));
}

static struct ArrowBufferView ArrowBufferToBufferView(const struct ArrowBuffer* buffer) {
  struct ArrowBufferView buffer_view = {
      .data.as_uint8 = buffer->data,
      .size_bytes = buffer->size_bytes,
  };
  return buffer_view;
}

// Eventually, it may be necessary to construct an ArrowIpcWriter which doesn't rely on
// blocking writes (ArrowIpcOutputStreamWrite). For example an ArrowIpcOutputStream
// might wrap a socket which is not always able to transmit all bytes of a Message. In
// that case users of ArrowIpcWriter might prefer to do other work until a socket is
// ready rather than blocking, or timeout, or otherwise respond to partial transmission.
//
// This could be handled by:
// - keeping partially sent buffers internal and signalling incomplete transmission by
//   raising EAGAIN, returning "bytes actually written", ...
//   - when the caller is ready to try again, call ArrowIpcWriterWriteSome()
// - exposing internal buffers which have not been completely sent, deferring
//   follow-up transmission to the caller

ArrowErrorCode ArrowIpcWriterWriteSchema(struct ArrowIpcWriter* writer,
                                         const struct ArrowSchema* in,
                                         struct ArrowError* error) {
  NANOARROW_DCHECK(writer != NULL && writer->private_data != NULL && in != NULL);
  struct ArrowIpcWriterPrivate* private =
      (struct ArrowIpcWriterPrivate*)writer->private_data;

  NANOARROW_ASSERT_OK(ArrowBufferResize(&private->buffer, 0, 0));

  NANOARROW_RETURN_NOT_OK(ArrowIpcEncoderEncodeSchema(&private->encoder, in, error));
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowIpcEncoderFinalizeBuffer(&private->encoder, /*encapsulate=*/1,
                                    &private->buffer),
      error);

  if (private->writing_file) {
    NANOARROW_RETURN_NOT_OK_WITH_ERROR(ArrowSchemaDeepCopy(in, &private->footer.schema),
                                       error);
  }
  private->bytes_written += private->buffer.size_bytes;

  return ArrowIpcOutputStreamWrite(&private->output_stream,
                                   ArrowBufferToBufferView(&private->buffer), error);
}

ArrowErrorCode ArrowIpcWriterWriteArrayView(struct ArrowIpcWriter* writer,
                                            const struct ArrowArrayView* in,
                                            struct ArrowError* error) {
  NANOARROW_DCHECK(writer != NULL && writer->private_data != NULL);
  struct ArrowIpcWriterPrivate* private =
      (struct ArrowIpcWriterPrivate*)writer->private_data;

  if (in == NULL) {
    int32_t eos[] = {-1, 0};
    private->bytes_written += sizeof(eos);
    struct ArrowBufferView eos_view = {.data.as_int32 = eos, .size_bytes = sizeof(eos)};
    return ArrowIpcOutputStreamWrite(&private->output_stream, eos_view, error);
  }

  NANOARROW_ASSERT_OK(ArrowBufferResize(&private->buffer, 0, 0));
  NANOARROW_ASSERT_OK(ArrowBufferResize(&private->body_buffer, 0, 0));

  NANOARROW_RETURN_NOT_OK(ArrowIpcEncoderEncodeSimpleRecordBatch(
      &private->encoder, in, &private->body_buffer, error));
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowIpcEncoderFinalizeBuffer(&private->encoder, /*encapsulate=*/1,
                                    &private->buffer),
      error);

  if (private->writing_file) {
    _NANOARROW_CHECK_RANGE(private->buffer.size_bytes, 0, INT32_MAX);
    struct ArrowIpcFileBlock block = {
        .offset = private->bytes_written,
        .metadata_length = (int32_t) private->buffer.size_bytes,
        .body_length = private->body_buffer.size_bytes,
    };
    NANOARROW_RETURN_NOT_OK_WITH_ERROR(
        ArrowBufferAppend(&private->footer.record_batch_blocks, &block, sizeof(block)),
        error);
  }
  private->bytes_written += private->buffer.size_bytes;
  private->bytes_written += private->body_buffer.size_bytes;

  NANOARROW_RETURN_NOT_OK(ArrowIpcOutputStreamWrite(
      &private->output_stream, ArrowBufferToBufferView(&private->buffer), error));
  NANOARROW_RETURN_NOT_OK(ArrowIpcOutputStreamWrite(
      &private->output_stream, ArrowBufferToBufferView(&private->body_buffer), error));
  return NANOARROW_OK;
}

static ArrowErrorCode ArrowIpcWriterWriteArrayStreamImpl(
    struct ArrowIpcWriter* writer, struct ArrowArrayStream* in,
    struct ArrowSchema* schema, struct ArrowArray* array,
    struct ArrowArrayView* array_view, struct ArrowError* error) {
  NANOARROW_RETURN_NOT_OK(ArrowArrayStreamGetSchema(in, schema, error));
  NANOARROW_RETURN_NOT_OK(ArrowIpcWriterWriteSchema(writer, schema, error));

  NANOARROW_RETURN_NOT_OK(ArrowArrayViewInitFromSchema(array_view, schema, error));
  while (1) {
    NANOARROW_RETURN_NOT_OK(ArrowArrayStreamGetNext(in, array, error));
    if (array->release == NULL) {
      break;
    }

    NANOARROW_RETURN_NOT_OK(ArrowArrayViewSetArray(array_view, array, error));
    NANOARROW_RETURN_NOT_OK(ArrowIpcWriterWriteArrayView(writer, array_view, error));
    ArrowArrayRelease(array);
  }

  // The stream is complete, signal the end to the caller
  return ArrowIpcWriterWriteArrayView(writer, NULL, error);
}

ArrowErrorCode ArrowIpcWriterWriteArrayStream(struct ArrowIpcWriter* writer,
                                              struct ArrowArrayStream* in,
                                              struct ArrowError* error) {
  NANOARROW_DCHECK(writer != NULL && writer->private_data != NULL && in != NULL);

  struct ArrowSchema schema = {.release = NULL};
  struct ArrowArray array = {.release = NULL};
  struct ArrowArrayView array_view;
  ArrowArrayViewInitFromType(&array_view, NANOARROW_TYPE_UNINITIALIZED);

  ArrowErrorCode result =
      ArrowIpcWriterWriteArrayStreamImpl(writer, in, &schema, &array, &array_view, error);

  if (schema.release != NULL) {
    ArrowSchemaRelease(&schema);
  }

  if (array.release != NULL) {
    ArrowArrayRelease(&array);
  }

  ArrowArrayViewReset(&array_view);

  return result;
}

#define NANOARROW_IPC_FILE_PADDED_MAGIC "ARROW1\0"

ArrowErrorCode ArrowIpcWriterStartFile(struct ArrowIpcWriter* writer,
                                       struct ArrowError* error) {
  NANOARROW_DCHECK(writer != NULL && writer->private_data != NULL);

  struct ArrowIpcWriterPrivate* private =
      (struct ArrowIpcWriterPrivate*)writer->private_data;

  NANOARROW_DCHECK(!private->writing_file && private->bytes_written == 0);

  struct ArrowBufferView magic = {
      .data.data = NANOARROW_IPC_FILE_PADDED_MAGIC,
      .size_bytes = sizeof(NANOARROW_IPC_FILE_PADDED_MAGIC),
  };
  NANOARROW_RETURN_NOT_OK(
      ArrowIpcOutputStreamWrite(&private->output_stream, magic, error));

  private->writing_file = 1;
  private->bytes_written = magic.size_bytes;
  return NANOARROW_OK;
}

ArrowErrorCode ArrowIpcWriterFinalizeFile(struct ArrowIpcWriter* writer,
                                          struct ArrowError* error) {
  NANOARROW_DCHECK(writer != NULL && writer->private_data != NULL);

  struct ArrowIpcWriterPrivate* private =
      (struct ArrowIpcWriterPrivate*)writer->private_data;

  NANOARROW_DCHECK(private->writing_file);

  NANOARROW_ASSERT_OK(ArrowBufferResize(&private->buffer, 0, 0));
  NANOARROW_RETURN_NOT_OK(
      ArrowIpcEncoderEncodeFooter(&private->encoder, &private->footer, error));
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowIpcEncoderFinalizeBuffer(&private->encoder, /*encapsulate=*/0,
                                    &private->buffer),
      error);

  _NANOARROW_CHECK_RANGE(private->buffer.size_bytes, 0, INT32_MAX);
  int32_t size = (int32_t) private->buffer.size_bytes;
  // we don't pad the magic at the end of the file
  struct ArrowStringView unpadded_magic = ArrowCharView(NANOARROW_IPC_FILE_PADDED_MAGIC);
  NANOARROW_DCHECK(unpadded_magic.size_bytes == 6);

  // just append to private->buffer instead of queueing two more tiny writes
  NANOARROW_RETURN_NOT_OK_WITH_ERROR(
      ArrowBufferReserve(&private->buffer, sizeof(size) + unpadded_magic.size_bytes),
      error);

  if (ArrowIpcSystemEndianness() == NANOARROW_IPC_ENDIANNESS_BIG) {
    size = (int32_t)bswap32((uint32_t)size);
  }
  NANOARROW_ASSERT_OK(ArrowBufferAppendInt32(&private->buffer, size));
  NANOARROW_ASSERT_OK(ArrowBufferAppendStringView(&private->buffer, unpadded_magic));

  NANOARROW_RETURN_NOT_OK(ArrowIpcOutputStreamWrite(
      &private->output_stream, ArrowBufferToBufferView(&private->buffer), error));
  private->bytes_written += private->buffer.size_bytes;
  return NANOARROW_OK;
}
