You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by pa...@apache.org on 2023/01/24 15:12:02 UTC
[arrow-nanoarrow] branch main updated: Update build configuration for IPC extension (#93)
This is an automated email from the ASF dual-hosted git repository.
paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git
The following commit(s) were added to refs/heads/main by this push:
new bd7cec6 Update build configuration for IPC extension (#93)
bd7cec6 is described below
commit bd7cec64c6a99bf0dcd2d2754d4514373cac1458
Author: Dewey Dunnington <de...@dunnington.ca>
AuthorDate: Tue Jan 24 11:11:54 2023 -0400
Update build configuration for IPC extension (#93)
* move generated files to their own directory
* use the concatenation feature in the flatcc generator
* vendor flatcc
* use vendored flatcc and add option for shared
* move linking reponsibility to caller
* include nanoarrow.h
* maybe just src/nanoarrow instead of src/nanoarrow_ipc
* namespace
* clean up inclues
* steal nanoarrow's cmake config for build/install
* don't commit dist/ files
* implement the bundling
* fix typo
* prune vendored flatcc
* update scripts for a more minimal vendoring of flatcc
* update vendored files
* add note
* add initial example for ipc with cmake
* add to CI
* maybe fix build
* just curious about namespace
* try cache
* Maybe explicit link?
* try without the namespace
* more link?
* add question
* whitespace
* try it this way again
* make output verbose
* maybe this way?
* maybe reversed?
* see what that link command looks like
* try again
* back to what I think it should be
* readme, fix typos
* try a test workflow for IPC
* fix typo
* typos
* try without coverage
* punt on warnings for now
* maybe fix build
* bundle flatcc more compactly
* retry bundling
* rename artifact, add commit bundling code
* explicit license, add passing attempt at README for dist/ files
---
.github/workflows/build-and-test-ipc.yaml | 186 +
.github/workflows/examples.yaml | 18 +-
LICENSE.txt | 2191 +-
dist/README.md | 4 +-
examples/cmake-ipc/CMakeLists.txt | 54 +
{dist => examples/cmake-ipc}/README.md | 26 +-
examples/cmake-ipc/invalid.arrows | Bin 0 -> 280 bytes
examples/cmake-ipc/schema-valid.arrows | Bin 0 -> 280 bytes
examples/cmake-ipc/src/app.c | 42 +
examples/cmake-ipc/src/library.c | 42 +
examples/cmake-ipc/src/library.h | 26 +
.../{dev/update_fbs.sh => .gitignore} | 18 +-
extensions/nanoarrow_ipc/CMakeLists.txt | 174 +-
extensions/nanoarrow_ipc/dev/update_fbs.sh | 5 +-
.../nanoarrow_ipc/dev/update_vendored_flatcc.sh | 78 +
.../{nanoarrow_ipc => nanoarrow}/nanoarrow_ipc.c | 158 +-
.../nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc.h | 85 +
.../src/nanoarrow/nanoarrow_ipc_flatcc_generated.h | 20271 +++++++++++++++++++
.../nanoarrow_ipc_test.cc | 66 +-
.../nanoarrow_ipc/src/nanoarrow_ipc/File_builder.h | 92 -
.../nanoarrow_ipc/src/nanoarrow_ipc/File_reader.h | 105 -
.../src/nanoarrow_ipc/File_verifier.h | 69 -
.../src/nanoarrow_ipc/Message_builder.h | 247 -
.../src/nanoarrow_ipc/Message_reader.h | 323 -
.../src/nanoarrow_ipc/Message_verifier.h | 176 -
.../src/nanoarrow_ipc/Schema_builder.h | 976 -
.../src/nanoarrow_ipc/Schema_reader.h | 1289 --
.../src/nanoarrow_ipc/Schema_verifier.h | 762 -
.../src/nanoarrow_ipc/SparseTensor_builder.h | 253 -
.../src/nanoarrow_ipc/SparseTensor_reader.h | 350 -
.../src/nanoarrow_ipc/SparseTensor_verifier.h | 154 -
.../src/nanoarrow_ipc/Tensor_builder.h | 120 -
.../src/nanoarrow_ipc/Tensor_reader.h | 97 -
.../src/nanoarrow_ipc/Tensor_verifier.h | 77 -
.../src/nanoarrow_ipc/flatbuffers_common_builder.h | 685 -
.../src/nanoarrow_ipc/flatbuffers_common_reader.h | 578 -
.../src/nanoarrow_ipc/nanoarrow_ipc.h | 188 -
extensions/nanoarrow_ipc/thirdparty/flatcc/LICENSE | 202 +
.../flatcc/include/flatcc/flatcc_accessors.h | 101 +
.../flatcc/include/flatcc/flatcc_alloc.h | 127 +
.../flatcc/include/flatcc/flatcc_assert.h | 45 +
.../flatcc/include/flatcc/flatcc_builder.h | 1908 ++
.../flatcc/include/flatcc/flatcc_emitter.h | 215 +
.../flatcc/include/flatcc/flatcc_endian.h | 125 +
.../flatcc/include/flatcc/flatcc_epilogue.h | 8 +
.../flatcc/include/flatcc/flatcc_flatbuffers.h | 55 +
.../flatcc/include/flatcc/flatcc_identifier.h | 148 +
.../thirdparty/flatcc/include/flatcc/flatcc_iov.h | 31 +
.../flatcc/include/flatcc/flatcc_prologue.h | 8 +
.../flatcc/include/flatcc/flatcc_refmap.h | 144 +
.../flatcc/include/flatcc/flatcc_rtconfig.h | 162 +
.../flatcc/include/flatcc/flatcc_types.h | 97 +
.../flatcc/include/flatcc/flatcc_verifier.h | 239 +
.../include/flatcc/portable/flatcc_portable.h | 14 +
.../include/flatcc/portable/paligned_alloc.h | 210 +
.../flatcc/include/flatcc/portable/pattributes.h | 84 +
.../flatcc/include/flatcc/portable/pdiagnostic.h | 85 +
.../include/flatcc/portable/pdiagnostic_pop.h | 20 +
.../include/flatcc/portable/pdiagnostic_push.h | 51 +
.../flatcc/include/flatcc/portable/pendian.h | 206 +
.../include/flatcc/portable/pendian_detect.h | 118 +
.../flatcc/include/flatcc/portable/pinline.h | 19 +
.../flatcc/include/flatcc/portable/pinttypes.h | 52 +
.../flatcc/include/flatcc/portable/portable.h | 2 +
.../include/flatcc/portable/portable_basic.h | 25 +
.../include/flatcc/portable/pstatic_assert.h | 67 +
.../flatcc/include/flatcc/portable/pstdalign.h | 162 +
.../flatcc/include/flatcc/portable/pstdint.h | 898 +
.../flatcc/include/flatcc/portable/punaligned.h | 190 +
.../flatcc/include/flatcc/portable/pversion.h | 6 +
.../flatcc/include/flatcc/portable/pwarnings.h | 52 +
.../thirdparty/flatcc/src/runtime/builder.c | 2035 ++
.../thirdparty/flatcc/src/runtime/emitter.c | 269 +
.../thirdparty/flatcc/src/runtime/refmap.c | 248 +
.../thirdparty/flatcc/src/runtime/verifier.c | 617 +
75 files changed, 30116 insertions(+), 8914 deletions(-)
diff --git a/.github/workflows/build-and-test-ipc.yaml b/.github/workflows/build-and-test-ipc.yaml
new file mode 100644
index 0000000..fa0e398
--- /dev/null
+++ b/.github/workflows/build-and-test-ipc.yaml
@@ -0,0 +1,186 @@
+# 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.
+
+name: test-c-ipc
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+ paths:
+ - 'CMakeLists.txt'
+ - '.github/workflows/build-and-test-ipc.yaml'
+ - 'src/nanoarrow/**'
+ - 'extensions/nanoarrow_ipc/**'
+
+jobs:
+ test-c-ipc:
+
+ runs-on: ubuntu-latest
+
+ name: ${{ matrix.config.label }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ config:
+ - {label: default-build}
+ - {label: namespaced-build}
+ - {label: bundled-build}
+
+ env:
+ SUBDIR: 'extensions/nanoarrow_ipc'
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt install -y -V ca-certificates lsb-release wget cmake valgrind
+ wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
+ sudo apt-get install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
+ sudo apt-get update
+ sudo apt-get install -y -V libarrow-dev
+ rm apache-arrow-apt-*.deb
+
+ - name: Build (default)
+ if: matrix.config.label == 'default-build'
+ run: |
+ cd $SUBDIR
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/dist/lib
+ sudo ldconfig
+ mkdir build
+ cd build
+ cmake .. -DCMAKE_BUILD_TYPE=Debug -DNANOARROW_IPC_BUILD_TESTS=ON
+ cmake --build .
+
+ - name: Build (namespaced)
+ if: matrix.config.label == 'namespaced-build'
+ run: |
+ cd $SUBDIR
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/dist/lib
+ sudo ldconfig
+ mkdir build
+ cd build
+ cmake .. -DCMAKE_BUILD_TYPE=Debug -DNANOARROW_IPC_BUILD_TESTS=ON -DNANOARROW_NAMESPACE=SomeUserNamespace
+ cmake --build .
+
+ - name: Build (bundled)
+ if: matrix.config.label == 'bundled-build'
+ run: |
+ cd $SUBDIR
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/dist/lib
+ sudo ldconfig
+ mkdir build
+ cd build
+ cmake .. -DCMAKE_BUILD_TYPE=Debug -DNANOARROW_IPC_BUILD_TESTS=ON -DNANOARROW_IPC_BUNDLE=ON
+ cmake --build .
+
+ - name: Check for non-namespaced symbols in namespaced build
+ if: matrix.config.label == 'namespaced-build'
+ run: |
+ cd $SUBDIR
+
+ # Dump all symbols
+ nm --extern-only build/libnanoarrow_ipc.a
+
+ # Check for non-namespaced ones
+ ARROW_SYMBOLS=`nm --extern-only build/libnanoarrow_ipc.a | grep "T Arrow" || true`
+ if [ -z "$ARROW_SYMBOLS" ]; then
+ exit 0
+ fi
+
+ echo "Found the following non-namespaced extern symbols:"
+ echo $ARROW_SYMBOLS
+ exit 1
+
+ - name: Run tests
+ run: |
+ cd $SUBDIR
+
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/dist/lib
+ sudo ldconfig
+ cd build
+ ctest -T test --output-on-failure .
+
+ - name: Run tests with valgrind
+ if: matrix.config.label == 'default-build'
+ run: |
+ cd $SUBDIR
+
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/dist/lib
+ sudo ldconfig
+ cd build
+ ctest -T memcheck .
+
+ - name: Upload memcheck results
+ if: failure() && matrix.config.label == 'default-build'
+ uses: actions/upload-artifact@main
+ with:
+ name: nanoarrow-ipc-memcheck
+ path: extensions/nanoarrow_ipc/build/Testing/Temporary/MemoryChecker.*.log
+
+ bundle-dist-ipc:
+ needs: test-c-ipc
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get install -y cmake
+
+ - name: Create bundle
+ run: |
+ cd extensions/nanoarrow_ipc
+ mkdir build && cd build
+ cmake .. -DNANOARROW_IPC_BUNDLE=ON
+ cmake --build .
+ cmake --install . --prefix=../nanoarrow-latest
+ cd ..
+ cp -r thirdparty/flatcc nanoarrow-latest/flatcc
+ zip nanoarrow-latest.zip nanoarrow-latest/nanoarrow_ipc.h nanoarrow-latest/nanoarrow_ipc.c nanoarrow-latest/flatcc.c nanoarrow-latest/flatcc/**
+
+ - name: Upload bundle artifact
+ uses: actions/upload-artifact@main
+ with:
+ name: nanoarrow-ipc-latest
+ path: extensions/nanoarrow_ipc/nanoarrow-latest.zip
+
+ - name: Commit bundle to dist/
+ if: success() && github.repository == 'apache/arrow-nanoarrow' && github.ref == 'refs/heads/main'
+ run: |
+ cp -r extensions/nanoarrow_ipc/nanoarrow-latest/ dist/
+
+ # only commit if there are changes
+ git config --global user.email "actions@github.com"
+ git config --global user.name "GitHub Actions"
+ UPDATED=`git diff --name-only --cached`
+ if [ "$UPDATED" ]; then
+ git commit -m "Update dist/ for commit ${{ github.sha }}"
+ git push
+ fi
diff --git a/.github/workflows/examples.yaml b/.github/workflows/examples.yaml
index 3c95aca..b6bb433 100644
--- a/.github/workflows/examples.yaml
+++ b/.github/workflows/examples.yaml
@@ -25,6 +25,7 @@ on:
branches:
- main
paths:
+ - 'examples/**'
- 'CMakeLists.txt'
- '.github/workflows/examples.yaml'
- 'src/nanoarrow/**'
@@ -33,6 +34,8 @@ jobs:
examples:
runs-on: ubuntu-latest
+ env:
+ VERBOSE: 1
steps:
- name: Checkout repo
@@ -50,9 +53,9 @@ jobs:
mkdir build && cd build
cmake ..
cmake --build .
-
+
./example_cmake_minimal_app
-
+
- name: Minimal Vendored Example
run: |
cd examples/vendored-minimal
@@ -66,5 +69,14 @@ jobs:
gcc -c library.c nanoarrow.c
ar rcs libexample_vendored_minimal_library.a library.o nanoarrow.o
gcc -o example_vendored_minimal_app app.c libexample_vendored_minimal_library.a
-
+
./example_vendored_minimal_app
+
+ - name: Ipc CMake Example
+ run: |
+ cd examples/cmake-ipc
+ mkdir build && cd build
+ cmake ..
+ cmake --build .
+
+ cat ../schema-valid.arrows | ./example_cmake_ipc_app
diff --git a/LICENSE.txt b/LICENSE.txt
index a82c22a..d73bb3f 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -203,2192 +203,7 @@
--------------------------------------------------------------------------------
-src/plasma/fling.cc and src/plasma/fling.h: Apache 2.0
+extensions/nanoarrow_ipc/thirdparty/flatcc, dist/flatcc.c,
+ and dist/flatcc: Apache 2.0
-Copyright 2013 Sharvil Nanavati
-
-Licensed 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.
-
---------------------------------------------------------------------------------
-
-src/plasma/thirdparty/ae: Modified / 3-Clause BSD
-
-Copyright (c) 2006-2010, Salvatore Sanfilippo <antirez at gmail dot com>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of Redis nor the names of its contributors may be used
- to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-src/plasma/thirdparty/dlmalloc.c: CC0
-
-This is a version (aka dlmalloc) of malloc/free/realloc written by
-Doug Lea and released to the public domain, as explained at
-http://creativecommons.org/publicdomain/zero/1.0/ Send questions,
-comments, complaints, performance data, etc to dl@cs.oswego.edu
-
---------------------------------------------------------------------------------
-
-src/plasma/common.cc (some portions)
-
-Copyright (c) Austin Appleby (aappleby (AT) gmail)
-
-Some portions of this file are derived from code in the MurmurHash project
-
-All code is released to the public domain. For business purposes, Murmurhash is
-under the MIT license.
-
-https://sites.google.com/site/murmurhash/
-
---------------------------------------------------------------------------------
-
-src/arrow/util (some portions): Apache 2.0, and 3-clause BSD
-
-Some portions of this module are derived from code in the Chromium project,
-copyright (c) Google inc and (c) The Chromium Authors and licensed under the
-Apache 2.0 License or the under the 3-clause BSD license:
-
- Copyright (c) 2013 The Chromium Authors. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.
- * Neither the name of Google Inc. nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-This project includes code from Daniel Lemire's FrameOfReference project.
-
-https://github.com/lemire/FrameOfReference/blob/6ccaf9e97160f9a3b299e23a8ef739e711ef0c71/src/bpacking.cpp
-https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
-
-Copyright: 2013 Daniel Lemire
-Home page: http://lemire.me/en/
-Project page: https://github.com/lemire/FrameOfReference
-License: Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from the TensorFlow project
-
-Copyright 2015 The TensorFlow Authors. All Rights Reserved.
-
-Licensed 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.
-
---------------------------------------------------------------------------------
-
-This project includes code from the NumPy project.
-
-https://github.com/numpy/numpy/blob/e1f191c46f2eebd6cb892a4bfe14d9dd43a06c4e/numpy/core/src/multiarray/multiarraymodule.c#L2910
-
-https://github.com/numpy/numpy/blob/68fd82271b9ea5a9e50d4e761061dfcca851382a/numpy/core/src/multiarray/datetime.c
-
-Copyright (c) 2005-2017, NumPy Developers.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-
- * Neither the name of the NumPy Developers nor the names of any
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-This project includes code from the Boost project
-
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-This project includes code from the FlatBuffers project
-
-Copyright 2014 Google Inc.
-
-Licensed 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.
-
---------------------------------------------------------------------------------
-
-This project includes code from the tslib project
-
-Copyright 2015 Microsoft Corporation. All rights reserved.
-
-Licensed 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.
-
---------------------------------------------------------------------------------
-
-This project includes code from the jemalloc project
-
-https://github.com/jemalloc/jemalloc
-
-Copyright (C) 2002-2017 Jason Evans <ja...@canonware.com>.
-All rights reserved.
-Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved.
-Copyright (C) 2009-2017 Facebook, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-1. Redistributions of source code must retain the above copyright notice(s),
- this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright notice(s),
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------------------
-
-This project includes code from the Go project, BSD 3-clause license + PATENTS
-weak patent termination clause
-(https://github.com/golang/go/blob/master/PATENTS).
-
-Copyright (c) 2009 The Go Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-This project includes code from the hs2client
-
-https://github.com/cloudera/hs2client
-
-Copyright 2016 Cloudera Inc.
-
-Licensed 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.
-
---------------------------------------------------------------------------------
-
-The script ci/scripts/util_wait_for_it.sh has the following license
-
-Copyright (c) 2016 Giles Hall
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The script r/configure has the following license (MIT)
-
-Copyright (c) 2017, Jeroen Ooms and Jim Hester
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-cpp/src/arrow/util/logging.cc, cpp/src/arrow/util/logging.h and
-cpp/src/arrow/util/logging-test.cc are adapted from
-Ray Project (https://github.com/ray-project/ray) (Apache 2.0).
-
-Copyright (c) 2016 Ray Project (https://github.com/ray-project/ray)
-
-Licensed 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.
-
---------------------------------------------------------------------------------
-The files cpp/src/arrow/vendored/datetime/date.h, cpp/src/arrow/vendored/datetime/tz.h,
-cpp/src/arrow/vendored/datetime/tz_private.h, cpp/src/arrow/vendored/datetime/ios.h,
-cpp/src/arrow/vendored/datetime/ios.mm,
-cpp/src/arrow/vendored/datetime/tz.cpp are adapted from
-Howard Hinnant's date library (https://github.com/HowardHinnant/date)
-It is licensed under MIT license.
-
-The MIT License (MIT)
-Copyright (c) 2015, 2016, 2017 Howard Hinnant
-Copyright (c) 2016 Adrian Colomitchi
-Copyright (c) 2017 Florian Dang
-Copyright (c) 2017 Paul Thompson
-Copyright (c) 2018 Tomasz KamiĆski
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The file cpp/src/arrow/util/utf8.h includes code adapted from the page
- https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
-with the following license (MIT)
-
-Copyright (c) 2008-2009 Bjoern Hoehrmann <bj...@hoehrmann.de>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The file cpp/src/arrow/vendored/string_view.hpp has the following license
-
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/xxhash/ have the following license
-(BSD 2-Clause License)
-
-xxHash Library
-Copyright (c) 2012-2014, Yann Collet
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or
- other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-You can contact the author at :
-- xxHash homepage: http://www.xxhash.com
-- xxHash source repository : https://github.com/Cyan4973/xxHash
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/double-conversion/ have the following license
-(BSD 3-Clause License)
-
-Copyright 2006-2011, the V8 project authors. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of Google Inc. nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/uriparser/ have the following license
-(BSD 3-Clause License)
-
-uriparser - RFC 3986 URI parsing library
-
-Copyright (C) 2007, Weijia Song <so...@gmail.com>
-Copyright (C) 2007, Sebastian Pipping <se...@pipping.org>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
- * Redistributions of source code must retain the above
- copyright notice, this list of conditions and the following
- disclaimer.
-
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials
- provided with the distribution.
-
- * Neither the name of the <ORGANIZATION> nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-The files under dev/tasks/conda-recipes have the following license
-
-BSD 3-clause license
-Copyright (c) 2015-2018, conda-forge
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
-TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/utfcpp/ have the following license
-
-Copyright 2006-2018 Nemanja Trifunovic
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-This project includes code from Apache Kudu.
-
- * cpp/cmake_modules/CompilerInfo.cmake is based on Kudu's cmake_modules/CompilerInfo.cmake
-
-Copyright: 2016 The Apache Software Foundation.
-Home page: https://kudu.apache.org/
-License: http://www.apache.org/licenses/LICENSE-2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from Apache Impala (incubating), formerly
-Impala. The Impala code and rights were donated to the ASF as part of the
-Incubator process after the initial code imports into Apache Parquet.
-
-Copyright: 2012 Cloudera, Inc.
-Copyright: 2016 The Apache Software Foundation.
-Home page: http://impala.apache.org/
-License: http://www.apache.org/licenses/LICENSE-2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from Apache Aurora.
-
-* dev/release/{release,changelog,release-candidate} are based on the scripts from
- Apache Aurora
-
-Copyright: 2016 The Apache Software Foundation.
-Home page: https://aurora.apache.org/
-License: http://www.apache.org/licenses/LICENSE-2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from the Google styleguide.
-
-* cpp/build-support/cpplint.py is based on the scripts from the Google styleguide.
-
-Copyright: 2009 Google Inc. All rights reserved.
-Homepage: https://github.com/google/styleguide
-License: 3-clause BSD
-
---------------------------------------------------------------------------------
-
-This project includes code from Snappy.
-
-* cpp/cmake_modules/{SnappyCMakeLists.txt,SnappyConfig.h} are based on code
- from Google's Snappy project.
-
-Copyright: 2009 Google Inc. All rights reserved.
-Homepage: https://github.com/google/snappy
-License: 3-clause BSD
-
---------------------------------------------------------------------------------
-
-This project includes code from the manylinux project.
-
-* python/manylinux1/scripts/{build_python.sh,python-tag-abi-tag.py,
- requirements.txt} are based on code from the manylinux project.
-
-Copyright: 2016 manylinux
-Homepage: https://github.com/pypa/manylinux
-License: The MIT License (MIT)
-
---------------------------------------------------------------------------------
-
-This project includes code from the cymove project:
-
-* python/pyarrow/includes/common.pxd includes code from the cymove project
-
-The MIT License (MIT)
-Copyright (c) 2019 Omer Ozarslan
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
-OR OTHER DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The projects includes code from the Ursabot project under the dev/archery
-directory.
-
-License: BSD 2-Clause
-
-Copyright 2019 RStudio, Inc.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-This project include code from mingw-w64.
-
-* cpp/src/arrow/util/cpu-info.cc has a polyfill for mingw-w64 < 5
-
-Copyright (c) 2009 - 2013 by the mingw-w64 project
-Homepage: https://mingw-w64.org
-License: Zope Public License (ZPL) Version 2.1.
-
----------------------------------------------------------------------------------
-
-This project include code from Google's Asylo project.
-
-* cpp/src/arrow/result.h is based on status_or.h
-
-Copyright (c) Copyright 2017 Asylo authors
-Homepage: https://asylo.dev/
-License: Apache 2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from Google's protobuf project
-
-* cpp/src/arrow/result.h ARROW_ASSIGN_OR_RAISE is based off ASSIGN_OR_RETURN
-* cpp/src/arrow/util/bit_stream_utils.h contains code from wire_format_lite.h
-
-Copyright 2008 Google Inc. All rights reserved.
-Homepage: https://developers.google.com/protocol-buffers/
-License:
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Code generated by the Protocol Buffer compiler is owned by the owner
-of the input file used when generating it. This code is not
-standalone and requires a support library to be linked with it. This
-support library is itself covered by the above license.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency LLVM is statically linked in certain binary distributions.
-Additionally some sections of source code have been derived from sources in LLVM
-and have been clearly labeled as such. LLVM has the following license:
-
-==============================================================================
-The LLVM Project is under the Apache License v2.0 with LLVM Exceptions:
-==============================================================================
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed 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.
-
-
----- LLVM Exceptions to the Apache 2.0 License ----
-
-As an exception, if, as a result of your compiling your source code, portions
-of this Software are embedded into an Object form of such source code, you
-may redistribute such embedded portions in such Object form without complying
-with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
-
-In addition, if you combine or link compiled forms of this Software with
-software that is licensed under the GPLv2 ("Combined Software") and if a
-court of competent jurisdiction determines that the patent provision (Section
-3), the indemnity provision (Section 9) or other Section of the License
-conflicts with the conditions of the GPLv2, you may retroactively and
-prospectively choose to deem waived or otherwise exclude such Section(s) of
-the License, but only in their entirety and only with respect to the Combined
-Software.
-
-==============================================================================
-Software from third parties included in the LLVM Project:
-==============================================================================
-The LLVM Project contains third party software which is under different license
-terms. All such code will be identified clearly using at least one of two
-mechanisms:
-1) It will be in a separate directory tree with its own `LICENSE.txt` or
- `LICENSE` file at the top containing the specific license and restrictions
- which apply to that software, or
-2) It will contain specific license and restriction terms at the top of every
- file.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency gRPC is statically linked in certain binary
-distributions, like the python wheels. gRPC has the following license:
-
-Copyright 2014 gRPC authors.
-
-Licensed 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.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency Apache Thrift is statically linked in certain binary
-distributions, like the python wheels. Apache Thrift has the following license:
-
-Apache Thrift
-Copyright (C) 2006 - 2019, The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-Licensed 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.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency Apache ORC is statically linked in certain binary
-distributions, like the python wheels. Apache ORC has the following license:
-
-Apache ORC
-Copyright 2013-2019 The Apache Software Foundation
-
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
-
-This product includes software developed by Hewlett-Packard:
-(c) Copyright [2014-2015] Hewlett-Packard Development Company, L.P
-
-Licensed 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.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency zstd is statically linked in certain binary
-distributions, like the python wheels. ZSTD has the following license:
-
-BSD License
-
-For Zstandard software
-
-Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- * Neither the name Facebook nor the names of its contributors may be used to
- endorse or promote products derived from this software without specific
- prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency lz4 is statically linked in certain binary
-distributions, like the python wheels. lz4 has the following license:
-
-LZ4 Library
-Copyright (c) 2011-2016, Yann Collet
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or
- other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency Brotli is statically linked in certain binary
-distributions, like the python wheels. Brotli has the following license:
-
-Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency rapidjson is statically linked in certain binary
-distributions, like the python wheels. rapidjson and its dependencies have the
-following licenses:
-
-Tencent is pleased to support the open source community by making RapidJSON
-available.
-
-Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
-All rights reserved.
-
-If you have downloaded a copy of the RapidJSON binary from Tencent, please note
-that the RapidJSON binary is licensed under the MIT License.
-If you have downloaded a copy of the RapidJSON source code from Tencent, please
-note that RapidJSON source code is licensed under the MIT License, except for
-the third-party components listed below which are subject to different license
-terms. Your integration of RapidJSON into your own projects may require
-compliance with the MIT License, as well as the other licenses applicable to
-the third-party components included within RapidJSON. To avoid the problematic
-JSON license in your own projects, it's sufficient to exclude the
-bin/jsonchecker/ directory, as it's the only code under the JSON license.
-A copy of the MIT License is included in this file.
-
-Other dependencies and licenses:
-
- Open Source Software Licensed Under the BSD License:
- --------------------------------------------------------------------
-
- The msinttypes r29
- Copyright (c) 2006-2013 Alexander Chemeris
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of copyright holder nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGE.
-
- Terms of the MIT License:
- --------------------------------------------------------------------
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency snappy is statically linked in certain binary
-distributions, like the python wheels. snappy has the following license:
-
-Copyright 2011, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of Google Inc. nor the names of its contributors may be
- used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-===
-
-Some of the benchmark data in testdata/ is licensed differently:
-
- - fireworks.jpeg is Copyright 2013 Steinar H. Gunderson, and
- is licensed under the Creative Commons Attribution 3.0 license
- (CC-BY-3.0). See https://creativecommons.org/licenses/by/3.0/
- for more information.
-
- - kppkn.gtb is taken from the Gaviota chess tablebase set, and
- is licensed under the MIT License. See
- https://sites.google.com/site/gaviotachessengine/Home/endgame-tablebases-1
- for more information.
-
- - paper-100k.pdf is an excerpt (bytes 92160 to 194560) from the paper
- âCombinatorial Modeling of Chromatin Features Quantitatively Predicts DNA
- Replication Timing in _Drosophila_â by Federico Comoglio and Renato Paro,
- which is licensed under the CC-BY license. See
- http://www.ploscompbiol.org/static/license for more ifnormation.
-
- - alice29.txt, asyoulik.txt, plrabn12.txt and lcet10.txt are from Project
- Gutenberg. The first three have expired copyrights and are in the public
- domain; the latter does not have expired copyright, but is still in the
- public domain according to the license information
- (http://www.gutenberg.org/ebooks/53).
-
---------------------------------------------------------------------------------
-
-3rdparty dependency gflags is statically linked in certain binary
-distributions, like the python wheels. gflags has the following license:
-
-Copyright (c) 2006, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency glog is statically linked in certain binary
-distributions, like the python wheels. glog has the following license:
-
-Copyright (c) 2008, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-A function gettimeofday in utilities.cc is based on
-
-http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/COPYING&q=GetSystemTimeAsFileTime%20license:bsd
-
-The license of this code is:
-
-Copyright (c) 2003-2008, Jouni Malinen <j...@w1.fi> and contributors
-All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-3. Neither the name(s) of the above-listed copyright holder(s) nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency re2 is statically linked in certain binary
-distributions, like the python wheels. re2 has the following license:
-
-Copyright (c) 2009 The RE2 Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of Google Inc. nor the names of its contributors
- may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency c-ares is statically linked in certain binary
-distributions, like the python wheels. c-ares has the following license:
-
-# c-ares license
-
-Copyright (c) 2007 - 2018, Daniel Stenberg with many contributors, see AUTHORS
-file.
-
-Copyright 1998 by the Massachusetts Institute of Technology.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided that
-the above copyright notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting documentation, and that
-the name of M.I.T. not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior permission.
-M.I.T. makes no representations about the suitability of this software for any
-purpose. It is provided "as is" without express or implied warranty.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency zlib is redistributed as a dynamically linked shared
-library in certain binary distributions, like the python wheels. In the future
-this will likely change to static linkage. zlib has the following license:
-
-zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.11, January 15th, 2017
-
- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- jloup@gzip.org madler@alumni.caltech.edu
-
---------------------------------------------------------------------------------
-
-3rdparty dependency openssl is redistributed as a dynamically linked shared
-library in certain binary distributions, like the python wheels. openssl
-preceding version 3 has the following license:
-
- LICENSE ISSUES
- ==============
-
- The OpenSSL toolkit stays under a double license, i.e. both the conditions of
- the OpenSSL License and the original SSLeay license apply to the toolkit.
- See below for the actual license texts.
-
- OpenSSL License
- ---------------
-
-/* ====================================================================
- * Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgment:
- * "This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * openssl-core@openssl.org.
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- * nor may "OpenSSL" appear in their names without prior written
- * permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- *
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com).
- *
- */
-
- Original SSLeay License
- -----------------------
-
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- *
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to. The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code. The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * "This product includes cryptographic software written by
- * Eric Young (eay@cryptsoft.com)"
- * The word 'cryptographic' can be left out if the rouines from the library
- * being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
- * the apps directory (application code) you must include an acknowledgement:
- * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed. i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
---------------------------------------------------------------------------------
-
-This project includes code from the rtools-backports project.
-
-* ci/scripts/PKGBUILD and ci/scripts/r_windows_build.sh are based on code
- from the rtools-backports project.
-
-Copyright: Copyright (c) 2013 - 2019, ĐлДĐșŃĐ”Đč and Jeroen Ooms.
-All rights reserved.
-Homepage: https://github.com/r-windows/rtools-backports
-License: 3-clause BSD
-
---------------------------------------------------------------------------------
-
-Some code from pandas has been adapted for the pyarrow codebase. pandas is
-available under the 3-clause BSD license, which follows:
-
-pandas license
-==============
-
-Copyright (c) 2011-2012, Lambda Foundry, Inc. and PyData Development Team
-All rights reserved.
-
-Copyright (c) 2008-2011 AQR Capital Management, LLC
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-
- * Neither the name of the copyright holder nor the names of any
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-Some bits from DyND, in particular aspects of the build system, have been
-adapted from libdynd and dynd-python under the terms of the BSD 2-clause
-license
-
-The BSD 2-Clause License
-
- Copyright (C) 2011-12, Dynamic NDArray Developers
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Dynamic NDArray Developers list:
-
- * Mark Wiebe
- * Continuum Analytics
-
---------------------------------------------------------------------------------
-
-Some source code from Ibis (https://github.com/cloudera/ibis) has been adapted
-for PyArrow. Ibis is released under the Apache License, Version 2.0.
-
---------------------------------------------------------------------------------
-
-This project includes code from the autobrew project.
-
-The following files are based on code from the autobrew project:
-* r/tools/autobrew
-* dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb
-* dev/tasks/homebrew-formulae/autobrew/apache-arrow-static.rb
-
-Copyright (c) 2019, Jeroen Ooms
-License: MIT
-Homepage: https://github.com/autobrew/
-
---------------------------------------------------------------------------------
-
-dev/tasks/homebrew-formulae/apache-arrow.rb has the following license:
-
-BSD 2-Clause License
-
-Copyright (c) 2009-present, Homebrew contributors
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-----------------------------------------------------------------------
-
-cpp/src/arrow/vendored/base64.cpp has the following license
-
-ZLIB License
-
-Copyright (C) 2004-2017 René Nyffenegger
-
-This source code is provided 'as-is', without any express or implied
-warranty. In no event will the author be held liable for any damages arising
-from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose, including
-commercial applications, and to alter it and redistribute it freely, subject to
-the following restrictions:
-
-1. The origin of this source code must not be misrepresented; you must not
- claim that you wrote the original source code. If you use this source code
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
-
-2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original source code.
-
-3. This notice may not be removed or altered from any source distribution.
-
-René Nyffenegger rene.nyffenegger@adp-gmbh.ch
-
---------------------------------------------------------------------------------
-
-The file cpp/src/arrow/vendored/optional.hpp has the following license
-
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-This project includes code from Folly.
-
- * cpp/src/arrow/vendored/ProducerConsumerQueue.h
-
-is based on Folly's
-
- * folly/Portability.h
- * folly/lang/Align.h
- * folly/ProducerConsumerQueue.h
-
-Copyright: Copyright (c) Facebook, Inc. and its affiliates.
-Home page: https://github.com/facebook/folly
-License: http://www.apache.org/licenses/LICENSE-2.0
-
---------------------------------------------------------------------------------
-
-The file cpp/src/arrow/vendored/musl/strptime.c has the following license
-
-Copyright © 2005-2020 Rich Felker, et al.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The file cpp/cmake_modules/BuildUtils.cmake contains code from
-
-https://gist.github.com/cristianadam/ef920342939a89fae3e8a85ca9459b49
-
-which is made available under the MIT license
-
-Copyright (c) 2019 Cristian Adam
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/portable-snippets/ contain code from
-
-https://github.com/nemequ/portable-snippets
-
-and have the following copyright notice:
-
-Each source file contains a preamble explaining the license situation
-for that file, which takes priority over this file. With the
-exception of some code pulled in from other repositories (such as
-”nit, an MIT-licensed project which is used for testing), the code is
-public domain, released using the CC0 1.0 Universal dedication (*).
-
-(*) https://creativecommons.org/publicdomain/zero/1.0/legalcode
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/fast_float/ contain code from
-
-https://github.com/lemire/fast_float
-
-which is made available under the Apache License 2.0.
-
---------------------------------------------------------------------------------
-
-The file python/pyarrow/vendored/docscrape.py contains code from
-
-https://github.com/numpy/numpydoc/
-
-which is made available under the BSD 2-clause license.
-
---------------------------------------------------------------------------------
-
-The file python/pyarrow/vendored/version.py contains code from
-
-https://github.com/pypa/packaging/
-
-which is made available under both the Apache license v2.0 and the
-BSD 2-clause license.
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/pcg contain code from
-
-https://github.com/imneme/pcg-cpp
-
-and have the following copyright notice:
-
-Copyright 2014-2019 Melissa O'Neill <on...@pcg-random.org>,
- and the PCG Project contributors.
-
-SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-Licensed under the Apache License, Version 2.0 (provided in
-LICENSE-APACHE.txt and at http://www.apache.org/licenses/LICENSE-2.0)
-or under the MIT license (provided in LICENSE-MIT.txt and at
-http://opensource.org/licenses/MIT), at your option. This file may not
-be copied, modified, or distributed except according to those terms.
-
-Distributed on an "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, either
-express or implied. See your chosen license for details.
-
---------------------------------------------------------------------------------
-r/R/dplyr-count-tally.R (some portions)
-
-Some portions of this file are derived from code from
-
-https://github.com/tidyverse/dplyr/
-
-which is made available under the MIT license
-
-Copyright (c) 2013-2019 RStudio and others.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the âSoftwareâ), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED âAS ISâ, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The file src/arrow/util/io_util.cc contains code from the CPython project
-which is made available under the Python Software Foundation License Version 2.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency opentelemetry-cpp is statically linked in certain binary
-distributions. opentelemetry-cpp is made available under the Apache License 2.0.
-
-Copyright The OpenTelemetry Authors
-SPDX-License-Identifier: Apache-2.0
-
---------------------------------------------------------------------------------
-
-ci/conan/ is based on code from Conan Package and Dependency Manager.
-
-Copyright (c) 2019 Conan.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency UCX is redistributed as a dynamically linked shared
-library in certain binary distributions. UCX has the following license:
-
-Copyright (c) 2014-2015 UT-Battelle, LLC. All rights reserved.
-Copyright (C) 2014-2020 Mellanox Technologies Ltd. All rights reserved.
-Copyright (C) 2014-2015 The University of Houston System. All rights reserved.
-Copyright (C) 2015 The University of Tennessee and The University
- of Tennessee Research Foundation. All rights reserved.
-Copyright (C) 2016-2020 ARM Ltd. All rights reserved.
-Copyright (c) 2016 Los Alamos National Security, LLC. All rights reserved.
-Copyright (C) 2016-2020 Advanced Micro Devices, Inc. All rights reserved.
-Copyright (C) 2019 UChicago Argonne, LLC. All rights reserved.
-Copyright (c) 2018-2020 NVIDIA CORPORATION. All rights reserved.
-Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
-Copyright (C) 2016-2020 Stony Brook University. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-3. Neither the name of the copyright holder nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-The file dev/tasks/r/github.packages.yml contains code from
-
-https://github.com/ursa-labs/arrow-r-nightly
-
-which is made available under the Apache License 2.0.
-
---------------------------------------------------------------------------------
-.github/actions/sync-nightlies/action.yml (some portions)
-
-Some portions of this file are derived from code from
-
-https://github.com/JoshPiper/rsync-docker
-
-which is made available under the MIT license
-
-Copyright (c) 2020 Joshua Piper
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-.github/actions/sync-nightlies/action.yml (some portions)
-
-Some portions of this file are derived from code from
-
-https://github.com/burnett01/rsync-deployments
-
-which is made available under the MIT license
-
-Copyright (c) 2019-2022 Contention
-Copyright (c) 2019-2022 Burnett01
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+Copyright 2015-2023 Mikkel F. JĂžrgensen, dvide.com
diff --git a/dist/README.md b/dist/README.md
index c94e4fb..298156d 100644
--- a/dist/README.md
+++ b/dist/README.md
@@ -20,4 +20,6 @@
# Bundled header and source files
These files are automatically generated from the latest commit (that
-passes CI on the main branch).
+passes CI on the main branch). See the examples/ folder in the parent
+repo for examples of how to use these files. Note that flatcc is only
+needed for the nanoarrow_ipc extension.
diff --git a/examples/cmake-ipc/CMakeLists.txt b/examples/cmake-ipc/CMakeLists.txt
new file mode 100644
index 0000000..e1254f3
--- /dev/null
+++ b/examples/cmake-ipc/CMakeLists.txt
@@ -0,0 +1,54 @@
+# 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.
+
+message(STATUS "Building using CMake version: ${CMAKE_VERSION}")
+cmake_minimum_required(VERSION 3.11)
+include(FetchContent)
+
+project(NanoArrowExampleCMakeIpc)
+
+# See examples/cmake-minimal for why this is a good idea
+set(NANOARROW_NAMESPACE "ExampleCmakeIpc")
+
+FetchContent_Declare(
+ # The name 'nanoarrow' is important here: it allows the IPC extension
+ # to link to the same version of nanoarrow as your library/application
+ nanoarrow
+
+ # See examples/cmake-minimal for how to specify a GIT repository or URL
+ SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
+FetchContent_MakeAvailable(nanoarrow)
+
+FetchContent_Declare(
+ nanoarrow_ipc_example_cmake
+ SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../../extensions/nanoarrow_ipc)
+FetchContent_MakeAvailable(nanoarrow_ipc_example_cmake)
+
+# Add the library and link it against nanoarrow and nanoarrow_ipc
+# You will need to link to both...nanoarrow_ipc assumes the caller
+# will link in its own copy of nanoarrow with the same version
+include_directories(src)
+add_library(example_cmake_ipc_library src/library.c)
+
+# Always use PRIVATE to hide nanoarrow's headers from a
+# target that in turn uses your library.
+target_link_libraries(example_cmake_ipc_library PRIVATE nanoarrow_ipc PRIVATE nanoarrow)
+
+# Add the executable and link it against the library
+add_executable(example_cmake_ipc_app src/app.c)
+
+target_link_libraries(example_cmake_ipc_app example_cmake_ipc_library)
diff --git a/dist/README.md b/examples/cmake-ipc/README.md
similarity index 50%
copy from dist/README.md
copy to examples/cmake-ipc/README.md
index c94e4fb..bacd9bb 100644
--- a/dist/README.md
+++ b/examples/cmake-ipc/README.md
@@ -17,7 +17,27 @@
under the License.
-->
-# Bundled header and source files
+# IPC Extension CMake Example
-These files are automatically generated from the latest commit (that
-passes CI on the main branch).
+This folder contains a CMake project that links to its own copy of
+nanoarrow and nanoarrow_ipc using CMake's `FetchContent` module.
+This pattern is similar to the cmake-minimal example and includes
+both a library and a command-line application that can verify
+a small message read from stdin. To build:
+
+```bash
+git clone https://github.com/apache/arrow-nanoarrow.git
+cd arrow-nanoarrow/examples/cmake-ipc
+mkdir build && cd build
+cmake ..
+cmake --build .
+```
+
+You can test the command-line application using the two files
+provided in the example directory:
+
+```bash
+cat ../schema-valid.arrows | ./example_cmake_ipc_app
+cat ../invalid.arrows | ./example_cmake_ipc_app
+# Expected 0xFFFFFFFF at start of message but found 0xFFFFFF00
+```
diff --git a/examples/cmake-ipc/invalid.arrows b/examples/cmake-ipc/invalid.arrows
new file mode 100644
index 0000000..68a1bd6
Binary files /dev/null and b/examples/cmake-ipc/invalid.arrows differ
diff --git a/examples/cmake-ipc/schema-valid.arrows b/examples/cmake-ipc/schema-valid.arrows
new file mode 100644
index 0000000..9ffe2b6
Binary files /dev/null and b/examples/cmake-ipc/schema-valid.arrows differ
diff --git a/examples/cmake-ipc/src/app.c b/examples/cmake-ipc/src/app.c
new file mode 100644
index 0000000..47b3a32
--- /dev/null
+++ b/examples/cmake-ipc/src/app.c
@@ -0,0 +1,42 @@
+// 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 "library.h"
+
+#include <stdlib.h>
+#include <stdint.h>
+#include <stdio.h>
+
+int main(int argc, char* argv[]) {
+ int64_t in_size = 0;
+ uint8_t data[8096];
+
+ freopen(NULL, "rb", stdin);
+ in_size = fread(data, 1, 8096, stdin);
+
+ if (in_size == 8096) {
+ fprintf(stderr, "This example can't read messages more than 8096 bytes\n");
+ return -1;
+ }
+
+ int result = verify_ipc_message(data, in_size);
+ if (result != 0) {
+ fprintf(stderr, "%s\n", my_library_last_error());
+ }
+
+ return result;
+}
diff --git a/examples/cmake-ipc/src/library.c b/examples/cmake-ipc/src/library.c
new file mode 100644
index 0000000..a71db7b
--- /dev/null
+++ b/examples/cmake-ipc/src/library.c
@@ -0,0 +1,42 @@
+// 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 <stdlib.h>
+
+#include <stdio.h>
+
+#include "nanoarrow/nanoarrow_ipc.h"
+
+#include "library.h"
+
+static struct ArrowError global_error;
+
+const char* my_library_last_error(void) { return ArrowErrorMessage(&global_error); }
+
+int verify_ipc_message(const void* data, int64_t size_bytes) {
+ struct ArrowBufferView buffer_view;
+ buffer_view.data.data = data;
+ buffer_view.size_bytes = size_bytes;
+
+ struct ArrowIpcReader reader;
+ ArrowIpcReaderInit(&reader);
+ int result = ArrowIpcReaderVerify(&reader, &buffer_view, &global_error);
+ ArrowIpcReaderReset(&reader);
+
+ return result;
+}
diff --git a/examples/cmake-ipc/src/library.h b/examples/cmake-ipc/src/library.h
new file mode 100644
index 0000000..ee354c6
--- /dev/null
+++ b/examples/cmake-ipc/src/library.h
@@ -0,0 +1,26 @@
+// 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.
+
+#pragma once
+
+#include <stdint.h>
+
+// Get the last error message from a call to verify_ipc_message()
+const char* my_library_last_error(void);
+
+// Verifies an IPC message
+int verify_ipc_message(const void* data, int64_t size_bytes);
diff --git a/extensions/nanoarrow_ipc/dev/update_fbs.sh b/extensions/nanoarrow_ipc/.gitignore
old mode 100755
new mode 100644
similarity index 53%
copy from extensions/nanoarrow_ipc/dev/update_fbs.sh
copy to extensions/nanoarrow_ipc/.gitignore
index c1474d4..ed6ccba
--- a/extensions/nanoarrow_ipc/dev/update_fbs.sh
+++ b/extensions/nanoarrow_ipc/.gitignore
@@ -15,20 +15,4 @@
# specific language governing permissions and limitations
# under the License.
-# get the .fbs files from the arrow repo
-mkdir format && cd format
-curl -L https://github.com/apache/arrow/raw/master/format/Schema.fbs --output Schema.fbs
-curl -L https://github.com/apache/arrow/raw/master/format/Tensor.fbs --output Tensor.fbs
-curl -L https://github.com/apache/arrow/raw/master/format/SparseTensor.fbs --output SparseTensor.fbs
-curl -L https://github.com/apache/arrow/raw/master/format/Message.fbs --output Message.fbs
-curl -L https://github.com/apache/arrow/raw/master/format/File.fbs --output File.fbs
-
-# compile using flatcc
-flatcc --common --reader --builder --verifier --recursive *.fbs
-
-# copy to src/
-cp *.h ../../src/nanoarrow_ipc
-
-# clean up
-cd ..
-rm -rf format
+dist/
diff --git a/extensions/nanoarrow_ipc/CMakeLists.txt b/extensions/nanoarrow_ipc/CMakeLists.txt
index 2fd2f7b..38517f7 100644
--- a/extensions/nanoarrow_ipc/CMakeLists.txt
+++ b/extensions/nanoarrow_ipc/CMakeLists.txt
@@ -19,41 +19,151 @@ message(STATUS "Building using CMake version: ${CMAKE_VERSION}")
cmake_minimum_required(VERSION 3.11)
include(FetchContent)
-project(NanoArrowIpc)
+project(nanoarrow_ipc)
option(NANOARROW_IPC_BUILD_TESTS "Build tests" OFF)
+option(NANOARROW_IPC_BUNDLE "Create bundled nanoarrow_ipc.h and nanoarrow_ipc.c" OFF)
+option(NANOARROW_IPC_FLATCC_ROOT_DIR "Root directory for flatcc include and lib directories" OFF)
+option(NANOARROW_IPC_FLATCC_INCLUDE_DIR "Include directory for flatcc includes" OFF)
+option(NANOARROW_IPC_FLATCC_LIB_DIR "Library directory that contains libflatccrt.a" OFF)
+
option(NANOARROW_IPC_CODE_COVERAGE "Enable coverage reporting" OFF)
add_library(ipc_coverage_config INTERFACE)
-# Add the nanoarrow dependency
-FetchContent_Declare(
- nanoarrow_for_nanoarrow_ipc
- SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
-FetchContent_MakeAvailable(nanoarrow_for_nanoarrow_ipc)
-
-# Add the flatcc (runtime) dependency
-# TODO: Make it more flexible to use an existing flatcc
-set(FLATCC_RTONLY ON CACHE INTERNAL "")
-FetchContent_Declare(
- flatcc
- URL https://github.com/dvidelabs/flatcc/archive/refs/tags/v0.6.1.zip
-)
-FetchContent_MakeAvailable(flatcc)
-
-include_directories(src)
-include_directories(${flatcc_SOURCE_DIR}/include)
-add_library(nanoarrow_ipc src/nanoarrow_ipc/nanoarrow_ipc.c)
-target_link_libraries(nanoarrow_ipc PRIVATE nanoarrow flatccrt)
-
-if(NANOARROW_IPC_CODE_COVERAGE)
- target_compile_options(ipc_coverage_config INTERFACE -O0 -g --coverage)
- target_link_options(ipc_coverage_config INTERFACE --coverage)
- target_link_libraries(nanoarrow_ipc ipc_coverage_config)
+if (NANOARROW_IPC_BUILD_TESTS OR NOT NANOARROW_IPC_BUNDLE)
+ # Add the nanoarrow dependency. nanoarrow is not linked into the
+ # nanoarrow_ipc library (the caller must link this themselves);
+ # however, we need nanoarrow.h to build nanoarrow_ipc.c.
+ FetchContent_Declare(
+ nanoarrow
+ SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
+
+ # Don't install nanoarrow because of this configuration
+ FetchContent_GetProperties(nanoarrow)
+ if(NOT nanoarrow_POPULATED)
+ FetchContent_Populate(nanoarrow)
+ add_subdirectory(${nanoarrow_SOURCE_DIR} ${nanoarrow_BINARY_DIR} EXCLUDE_FROM_ALL)
+ endif()
+
+ # Add the flatcc (runtime) dependency
+ set(FLATCC_RTONLY ON CACHE INTERNAL "")
+ set(FLATCC_REFLECTION OFF CACHE INTERNAL "")
+
+ # A flatcc installation is unlikely, so default to building the vendored one
+ if (NOT NANOARROW_IPC_FLATCC_INCLUDE_DIR AND NOT NANOARROW_IPC_FLATCC_ROOT_DIR)
+ add_library(
+ flatccrt STATIC
+ thirdparty/flatcc/src/runtime/builder.c
+ thirdparty/flatcc/src/runtime/emitter.c
+ thirdparty/flatcc/src/runtime/verifier.c
+ thirdparty/flatcc/src/runtime/refmap.c)
+
+ set(NANOARROW_IPC_FLATCC_INCLUDE_DIR
+ ${CMAKE_CURRENT_LIST_DIR}/thirdparty/flatcc/include)
+ target_include_directories(flatccrt PUBLIC
+ $<BUILD_INTERFACE:${NANOARROW_IPC_FLATCC_INCLUDE_DIR}>
+ $<INSTALL_INTERFACE:include>)
+
+ elseif(NOT NANOARROW_IPC_FLATCC_ROOT_DIR)
+ add_library(flatccrt STATIC IMPORTED)
+ set_target_properties(flatccrt PROPERTIES
+ IMPORTED_LOCATION "${NANOARROW_IPC_FLATCC_LIB_DIR}/libflatccrt.a"
+ INTERFACE_INCLUDE_DIRECTORIES "${NANOARROW_IPC_FLATCC_INCLUDE_DIR}"
+ )
+ elseif(NOT NANOARROW_IPC_FLATCC_INCLUDE_DIR)
+ set(NANOARROW_IPC_FLATCC_INCLUDE_DIR ${NANOARROW_IPC_FLATCC_ROOT_DIR}/include)
+ add_library(flatccrt STATIC IMPORTED)
+ set_target_properties(flatccrt PROPERTIES
+ IMPORTED_LOCATION "${NANOARROW_IPC_FLATCC_ROOT_DIR}/lib/libflatccrt.a"
+ INTERFACE_INCLUDE_DIRECTORIES "${NANOARROW_IPC_FLATCC_INCLUDE_DIR}"
+ )
+ endif()
endif()
+if (NANOARROW_IPC_BUNDLE)
+ # The CMake build step is creating nanoarrow_ipc.c and nanoarrow_ipc.h;
+ # the CMake install step is copying them to a specific location
+ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/amalgamation)
+ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/amalgamation/nanoarrow)
+
+ # nanoarrow_ipc.h is already standalone
+ set(NANOARROW_IPC_H_TEMP ${CMAKE_BINARY_DIR}/amalgamation/nanoarrow/nanoarrow_ipc.h)
+ file(READ src/nanoarrow/nanoarrow_ipc.h SRC_FILE_CONTENTS)
+ file(WRITE ${NANOARROW_IPC_H_TEMP} "${SRC_FILE_CONTENTS}")
+
+ # combine flatcc-generated headers and nanoarrow_ipc.c
+ set(NANOARROW_IPC_C_TEMP ${CMAKE_BINARY_DIR}/amalgamation/nanoarrow/nanoarrow_ipc.c)
+ file(READ src/nanoarrow/nanoarrow_ipc_flatcc_generated.h SRC_FILE_CONTENTS)
+ file(WRITE ${NANOARROW_IPC_C_TEMP} "${SRC_FILE_CONTENTS}")
+ file(READ src/nanoarrow/nanoarrow_ipc.c SRC_FILE_CONTENTS)
+ file(APPEND ${NANOARROW_IPC_C_TEMP} "${SRC_FILE_CONTENTS}")
+
+ # remove the include for the generated files in the bundled version
+ file(READ ${NANOARROW_IPC_C_TEMP} SRC_FILE_CONTENTS)
+ string(
+ REGEX REPLACE "#include \"nanoarrow_ipc_flatcc_generated.h\"" ""
+ SRC_FILE_CONTENTS "${SRC_FILE_CONTENTS}")
+ file(WRITE ${NANOARROW_IPC_C_TEMP} "${SRC_FILE_CONTENTS}")
+
+ # combine the flatcc sources
+ set(FLATCC_C_TEMP ${CMAKE_BINARY_DIR}/amalgamation/nanoarrow/flatcc.c)
+ file(READ thirdparty/flatcc/src/runtime/builder.c SRC_FILE_CONTENTS)
+ file(WRITE ${FLATCC_C_TEMP} "${SRC_FILE_CONTENTS}")
+ file(READ thirdparty/flatcc/src/runtime/emitter.c SRC_FILE_CONTENTS)
+ file(APPEND ${FLATCC_C_TEMP} "${SRC_FILE_CONTENTS}")
+ file(READ thirdparty/flatcc/src/runtime/verifier.c SRC_FILE_CONTENTS)
+ file(APPEND ${FLATCC_C_TEMP} "${SRC_FILE_CONTENTS}")
+ file(READ thirdparty/flatcc/src/runtime/refmap.c SRC_FILE_CONTENTS)
+ file(APPEND ${FLATCC_C_TEMP} "${SRC_FILE_CONTENTS}")
+
+ # Add a library that the tests can link against (but don't install it)
+ if(NANOARROW_IPC_BUILD_TESTS)
+ # Bundle flatcc into the nanoarrow_ipc library instead of
+ # link to the flatccrt static lib we declared above.
+ add_library(nanoarrow_ipc
+ ${CMAKE_BINARY_DIR}/amalgamation/nanoarrow/nanoarrow_ipc.c
+ ${CMAKE_BINARY_DIR}/amalgamation/nanoarrow/flatcc.c)
+
+ target_include_directories(nanoarrow_ipc PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
+ $<BUILD_INTERFACE:${nanoarrow_SOURCE_DIR}/src/nanoarrow>
+ $<BUILD_INTERFACE:${nanoarrow_BINARY_DIR}/generated>
+ $<BUILD_INTERFACE:${NANOARROW_IPC_FLATCC_INCLUDE_DIR}>)
+
+ endif()
+
+ # Install the amalgamated header and sources
+ install(FILES
+ ${NANOARROW_IPC_H_TEMP}
+ ${NANOARROW_IPC_C_TEMP}
+ ${FLATCC_C_TEMP}
+ DESTINATION ".")
+
+ # Also install the flatcc headers
+ install(DIRECTORY thirdparty/flatcc/include/flatcc DESTINATION ".")
+else()
+ # This is a normal CMake build that builds + installs some includes and a static lib
+ add_library(nanoarrow_ipc src/nanoarrow/nanoarrow_ipc.c)
+ target_link_libraries(nanoarrow_ipc PRIVATE flatccrt)
+
+ target_include_directories(nanoarrow_ipc PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
+ $<BUILD_INTERFACE:${nanoarrow_SOURCE_DIR}/src/nanoarrow>
+ $<BUILD_INTERFACE:${nanoarrow_BINARY_DIR}/generated>
+ $<BUILD_INTERFACE:${NANOARROW_IPC_FLATCC_INCLUDE_DIR}>
+ $<INSTALL_INTERFACE:include>)
+
+ install(TARGETS nanoarrow_ipc DESTINATION lib)
+ install(
+ FILES
+ src/nanoarrow/nanoarrow_ipc.h
+ src/nanoarrow/nanoarrow_ipc_flatcc_generated.h
+ DESTINATION include/nanoarrow)
-if (NANOARROW_IPC_BUILD_TESTS)
+endif()
+
+if (NANOARROW_IPC_BUILD_TESTS)
set(MEMORYCHECK_COMMAND_OPTIONS "--leak-check=full --suppressions=${CMAKE_CURRENT_LIST_DIR}/../../valgrind.supp --error-exitcode=1")
include(CTest)
include(FetchContent)
@@ -65,6 +175,8 @@ if (NANOARROW_IPC_BUILD_TESTS)
message(STATUS "Arrow version: ${ARROW_VERSION}")
message(STATUS "Arrow SO version: ${ARROW_FULL_SO_VERSION}")
+ # Warning about timestamps of downloaded files
+ cmake_policy(SET CMP0135 NEW)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/release-1.11.0.zip
@@ -73,9 +185,15 @@ if (NANOARROW_IPC_BUILD_TESTS)
enable_testing()
- add_executable(nanoarrow_ipc_test src/nanoarrow_ipc/nanoarrow_ipc_test.cc)
+ add_executable(nanoarrow_ipc_test src/nanoarrow/nanoarrow_ipc_test.cc)
+
+ if(NANOARROW_IPC_CODE_COVERAGE)
+ target_compile_options(ipc_coverage_config INTERFACE -O0 -g --coverage)
+ target_link_options(ipc_coverage_config INTERFACE --coverage)
+ target_link_libraries(nanoarrow_ipc PRIVATE ipc_coverage_config)
+ endif()
- target_link_libraries(nanoarrow_ipc_test nanoarrow_ipc arrow_shared gtest_main)
+ target_link_libraries(nanoarrow_ipc_test nanoarrow_ipc nanoarrow arrow_shared gtest_main)
include(GoogleTest)
gtest_discover_tests(nanoarrow_ipc_test)
diff --git a/extensions/nanoarrow_ipc/dev/update_fbs.sh b/extensions/nanoarrow_ipc/dev/update_fbs.sh
index c1474d4..a8c14a7 100755
--- a/extensions/nanoarrow_ipc/dev/update_fbs.sh
+++ b/extensions/nanoarrow_ipc/dev/update_fbs.sh
@@ -24,10 +24,7 @@ curl -L https://github.com/apache/arrow/raw/master/format/Message.fbs --output M
curl -L https://github.com/apache/arrow/raw/master/format/File.fbs --output File.fbs
# compile using flatcc
-flatcc --common --reader --builder --verifier --recursive *.fbs
-
-# copy to src/
-cp *.h ../../src/nanoarrow_ipc
+flatcc --common --reader --builder --verifier --recursive --outfile ../../src/nanoarrow_ipc/nanoarrow_ipc_flatcc_generated.h *.fbs
# clean up
cd ..
diff --git a/extensions/nanoarrow_ipc/dev/update_vendored_flatcc.sh b/extensions/nanoarrow_ipc/dev/update_vendored_flatcc.sh
new file mode 100755
index 0000000..7b6316e
--- /dev/null
+++ b/extensions/nanoarrow_ipc/dev/update_vendored_flatcc.sh
@@ -0,0 +1,78 @@
+# 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.
+
+# Download a flatcc release
+curl -L https://github.com/dvidelabs/flatcc/archive/refs/tags/v0.6.1.zip --output flatcc-src.zip
+unzip flatcc-src.zip -d flatcc-src
+FLATCC_SRC_DIR=flatcc-src/`ls flatcc-src`
+
+# Remove previous vendored flatcc
+rm -rf ../thirdparty/flatcc
+
+# Create the folders we need to exist
+mkdir -p ../thirdparty/flatcc/src/runtime
+mkdir -p ../thirdparty/flatcc/include/flatcc/portable
+
+# The only part of the runtime we need
+cp $FLATCC_SRC_DIR/src/runtime/emitter.c \
+ $FLATCC_SRC_DIR/src/runtime/builder.c \
+ $FLATCC_SRC_DIR/src/runtime/verifier.c \
+ $FLATCC_SRC_DIR/src/runtime/refmap.c \
+ ../thirdparty/flatcc/src/runtime/
+
+# We also need the headers for those sources. makedepend
+# can get those for us in topological order.
+pushd $FLATCC_SRC_DIR/include
+
+# List object dependencies (warns that it can't find system headers, which is OK)
+# This list is in topological order and could be used for a single-file include;
+# however, this approach is easier to support alongside a previous installation
+# of the flatcc runtime.
+makedepend -s#: -f- -- -I. -DFLATCC_PORTABLE -- 2>/dev/null \
+ ../src/runtime/emitter.c \
+ ../src/runtime/builder.c \
+ ../src/runtime/verifier.c \
+ ../src/runtime/refmap.c \
+ ../../../../src/nanoarrow/nanoarrow_ipc.c | \
+ # Remove the '<src file>.o: ' prefix
+ sed 's/[^:]*: *//' | \
+ # Spaces to new lines
+ sed 's/ /\n/' | \
+ # Only unique lines (but don't sort to preserve topological order)
+ awk '!x[$0]++' | \
+ # Remove blank lines
+ sed '/^$/d' | \
+ # Or anything having to do with nanoarrow
+ sed '/nanoarrow/d' > ../../../flatcc-headers.txt
+
+popd
+
+# Copy the headers we need. Using loops because cp --parents is not portable.
+for file in $(cat flatcc-headers.txt | sed /portable/d); do
+ cp "$FLATCC_SRC_DIR/include/$file" ../thirdparty/flatcc/include/flatcc
+done
+for file in $(cat flatcc-headers.txt | sed -n /portable/p); do
+ cp "$FLATCC_SRC_DIR/include/$file" ../thirdparty/flatcc/include/flatcc/portable;
+done
+
+# And the license
+cp $FLATCC_SRC_DIR/LICENSE ../thirdparty/flatcc
+
+# clean up
+rm -rf flatcc-src
+rm flatcc-src.zip
+rm flatcc-headers.txt
diff --git a/extensions/nanoarrow_ipc/src/nanoarrow_ipc/nanoarrow_ipc.c b/extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc.c
similarity index 63%
rename from extensions/nanoarrow_ipc/src/nanoarrow_ipc/nanoarrow_ipc.c
rename to extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc.c
index d4993f1..65db581 100644
--- a/extensions/nanoarrow_ipc/src/nanoarrow_ipc/nanoarrow_ipc.c
+++ b/extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc.c
@@ -17,37 +17,22 @@
#include <errno.h>
#include <string.h>
-#include <stdio.h>
-#include <stdarg.h>
-
-#include "nanoarrow/nanoarrow.h"
-
-#include "File_reader.h"
-#include "Message_reader.h"
-#include "Message_verifier.h"
-#include "Schema_reader.h"
+#include "nanoarrow.h"
+#include "nanoarrow_ipc_flatcc_generated.h"
#include "nanoarrow_ipc.h"
-ArrowIpcErrorCode ArrowIpcErrorSet(struct ArrowIpcError* error, const char* fmt, ...) {
- if (error == NULL) {
- return NANOARROW_OK;
- }
-
- memset(error->message, 0, sizeof(error->message));
+ArrowErrorCode ArrowIpcCheckRuntime(struct ArrowError* error) {
+ const char* nanoarrow_runtime_version = ArrowNanoarrowVersion();
+ const char* nanoarrow_ipc_build_time_version = NANOARROW_VERSION;
- va_list args;
- va_start(args, fmt);
- int chars_needed = vsnprintf(error->message, sizeof(error->message), fmt, args);
- va_end(args);
-
- if (chars_needed < 0) {
+ 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;
- } else if (((size_t)chars_needed) >= sizeof(error->message)) {
- return ERANGE;
- } else {
- return NANOARROW_OK;
}
+
+ return NANOARROW_OK;
}
void ArrowIpcReaderInit(struct ArrowIpcReader* reader) {
@@ -62,20 +47,20 @@ void ArrowIpcReaderReset(struct ArrowIpcReader* reader) {
ArrowIpcReaderInit(reader);
}
-static inline uint32_t ArrowIpcReadUint32LE(struct ArrowIpcBufferView* data) {
+static inline uint32_t ArrowIpcReadUint32LE(struct ArrowBufferView* data) {
uint32_t value;
- memcpy(&value, data->data, sizeof(uint32_t));
+ memcpy(&value, data->data.as_uint8, sizeof(uint32_t));
// TODO: bswap32() if big endian
- data->data += sizeof(uint32_t);
+ data->data.as_uint8 += sizeof(uint32_t);
data->size_bytes -= sizeof(uint32_t);
return value;
}
-static inline int32_t ArrowIpcReadInt32LE(struct ArrowIpcBufferView* data) {
+static inline int32_t ArrowIpcReadInt32LE(struct ArrowBufferView* data) {
int32_t value;
- memcpy(&value, data->data, sizeof(int32_t));
+ memcpy(&value, data->data.as_uint8, sizeof(int32_t));
// TODO: bswap32() if big endian
- data->data += sizeof(int32_t);
+ data->data.as_uint8 += sizeof(int32_t);
data->size_bytes -= sizeof(int32_t);
return value;
}
@@ -83,11 +68,11 @@ static inline int32_t ArrowIpcReadInt32LE(struct ArrowIpcBufferView* data) {
#define ns(x) FLATBUFFERS_WRAP_NAMESPACE(org_apache_arrow_flatbuf, x)
static int ArrowIpcReaderSetTypeSimple(struct ArrowSchema* schema, int nanoarrow_type,
- struct ArrowIpcError* error) {
+ struct ArrowError* error) {
int result = ArrowSchemaSetType(schema, nanoarrow_type);
if (result != NANOARROW_OK) {
- ArrowIpcErrorSet(error, "ArrowSchemaSetType() failed for type %s",
- ArrowTypeString(nanoarrow_type));
+ ArrowErrorSet(error, "ArrowSchemaSetType() failed for type %s",
+ ArrowTypeString(nanoarrow_type));
return result;
}
@@ -96,7 +81,7 @@ static int ArrowIpcReaderSetTypeSimple(struct ArrowSchema* schema, int nanoarrow
static int ArrowIpcReaderSetTypeInt(struct ArrowSchema* schema,
flatbuffers_generic_t type_generic,
- struct ArrowIpcError* error) {
+ struct ArrowError* error) {
ns(Int_table_t) type = (ns(Int_table_t))type_generic;
int is_signed = ns(Int_is_signed_get(type));
@@ -118,9 +103,9 @@ static int ArrowIpcReaderSetTypeInt(struct ArrowSchema* schema,
nanoarrow_type = NANOARROW_TYPE_INT64;
break;
default:
- ArrowIpcErrorSet(error,
- "Expected signed int bitwidth of 8, 16, 32, or 64 but got %d",
- (int)bitwidth);
+ ArrowErrorSet(error,
+ "Expected signed int bitwidth of 8, 16, 32, or 64 but got %d",
+ (int)bitwidth);
return EINVAL;
}
} else {
@@ -138,9 +123,9 @@ static int ArrowIpcReaderSetTypeInt(struct ArrowSchema* schema,
nanoarrow_type = NANOARROW_TYPE_UINT64;
break;
default:
- ArrowIpcErrorSet(error,
- "Expected unsigned int bitwidth of 8, 16, 32, or 64 but got %d",
- (int)bitwidth);
+ ArrowErrorSet(error,
+ "Expected unsigned int bitwidth of 8, 16, 32, or 64 but got %d",
+ (int)bitwidth);
return EINVAL;
}
}
@@ -149,7 +134,7 @@ static int ArrowIpcReaderSetTypeInt(struct ArrowSchema* schema,
}
static int ArrowIpcReaderSetField(struct ArrowSchema* schema, ns(Field_table_t) field,
- struct ArrowIpcError* error) {
+ struct ArrowError* error) {
int result;
if (ns(Field_name_is_present(field))) {
result = ArrowSchemaSetName(schema, ns(Field_name_get(field)));
@@ -158,7 +143,7 @@ static int ArrowIpcReaderSetField(struct ArrowSchema* schema, ns(Field_table_t)
}
if (result != NANOARROW_OK) {
- ArrowIpcErrorSet(error, "ArrowSchemaSetName() failed");
+ ArrowErrorSet(error, "ArrowSchemaSetName() failed");
return result;
}
@@ -173,7 +158,7 @@ static int ArrowIpcReaderSetField(struct ArrowSchema* schema, ns(Field_table_t)
ArrowIpcReaderSetTypeInt(schema, ns(Field_type_get(field)), error));
break;
default:
- ArrowIpcErrorSet(error, "Unrecognized Field type with value %d", (int)type_type);
+ ArrowErrorSet(error, "Unrecognized Field type with value %d", (int)type_type);
return EINVAL;
}
@@ -181,7 +166,7 @@ static int ArrowIpcReaderSetField(struct ArrowSchema* schema, ns(Field_table_t)
}
static int ArrowIpcReaderSetChildren(struct ArrowSchema* schema, ns(Field_vec_t) fields,
- struct ArrowIpcError* error) {
+ struct ArrowError* error) {
int64_t n_fields = ns(Schema_vec_len(fields));
for (int64_t i = 0; i < n_fields; i++) {
@@ -194,7 +179,7 @@ static int ArrowIpcReaderSetChildren(struct ArrowSchema* schema, ns(Field_vec_t)
static int ArrowIpcReaderDecodeSchema(struct ArrowIpcReader* reader,
flatbuffers_generic_t message_header,
- struct ArrowIpcError* error) {
+ struct ArrowError* error) {
ns(Schema_table_t) schema = (ns(Schema_table_t))message_header;
int endianness = ns(Schema_endianness(schema));
switch (endianness) {
@@ -205,9 +190,9 @@ static int ArrowIpcReaderDecodeSchema(struct ArrowIpcReader* reader,
reader->endianness = NANOARROW_IPC_ENDIANNESS_BIG;
break;
default:
- ArrowIpcErrorSet(error,
- "Expected Schema endianness of 0 (little) or 1 (big) but got %d",
- (int)endianness);
+ ArrowErrorSet(error,
+ "Expected Schema endianness of 0 (little) or 1 (big) but got %d",
+ (int)endianness);
return EINVAL;
}
@@ -216,7 +201,7 @@ static int ArrowIpcReaderDecodeSchema(struct ArrowIpcReader* reader,
reader->features = 0;
for (int64_t i = 0; i < n_features; i++) {
- int feature = ns(Feature_vec_at(features, i));
+ ns(Feature_enum_t) feature = ns(Feature_vec_at(features, i));
switch (feature) {
case ns(Feature_COMPRESSED_BODY):
reader->features |= NANOARROW_IPC_FEATURE_COMPRESSED_BODY;
@@ -225,8 +210,7 @@ static int ArrowIpcReaderDecodeSchema(struct ArrowIpcReader* reader,
reader->features |= NANOARROW_IPC_FEATURE_DICTIONARY_REPLACEMENT;
break;
default:
- ArrowIpcErrorSet(error, "Unrecognized Schema feature with value %d",
- (int)feature);
+ ArrowErrorSet(error, "Unrecognized Schema feature with value %d", (int)feature);
return EINVAL;
}
}
@@ -240,8 +224,8 @@ static int ArrowIpcReaderDecodeSchema(struct ArrowIpcReader* reader,
ArrowSchemaInit(&reader->schema);
int result = ArrowSchemaSetTypeStruct(&reader->schema, n_fields);
if (result != NANOARROW_OK) {
- ArrowIpcErrorSet(error, "Failed to allocate struct schema with %ld children",
- (long)n_fields);
+ ArrowErrorSet(error, "Failed to allocate struct schema with %ld children",
+ (long)n_fields);
return result;
}
@@ -249,45 +233,45 @@ static int ArrowIpcReaderDecodeSchema(struct ArrowIpcReader* reader,
}
static inline int ArrowIpcReaderCheckHeader(struct ArrowIpcReader* reader,
- struct ArrowIpcBufferView* data_mut,
+ struct ArrowBufferView* data_mut,
int32_t* message_size_bytes,
- struct ArrowIpcError* error) {
+ struct ArrowError* error) {
if (data_mut->size_bytes < 8) {
- ArrowIpcErrorSet(error, "Expected data of at least 8 bytes but only %ld bytes remain",
- (long)data_mut->size_bytes);
+ ArrowErrorSet(error, "Expected data of at least 8 bytes but only %ld bytes remain",
+ (long)data_mut->size_bytes);
return EINVAL;
}
uint32_t continuation = ArrowIpcReadUint32LE(data_mut);
if (continuation != 0xFFFFFFFF) {
- ArrowIpcErrorSet(error, "Expected 0xFFFFFFFF at start of message but found 0x%08X",
- (unsigned int)continuation);
+ ArrowErrorSet(error, "Expected 0xFFFFFFFF at start of message but found 0x%08X",
+ (unsigned int)continuation);
return EINVAL;
}
*message_size_bytes = ArrowIpcReadInt32LE(data_mut);
if ((*message_size_bytes) > data_mut->size_bytes || (*message_size_bytes) < 0) {
- ArrowIpcErrorSet(error,
- "Expected 0 <= message body size <= %ld bytes but found message "
- "body size of %ld bytes",
- (long)data_mut->size_bytes, (long)(*message_size_bytes));
+ ArrowErrorSet(error,
+ "Expected 0 <= message body size <= %ld bytes but found message "
+ "body size of %ld bytes",
+ (long)data_mut->size_bytes, (long)(*message_size_bytes));
return EINVAL;
}
return NANOARROW_OK;
}
-static void ArrowIpcReaderAdvanceData(struct ArrowIpcBufferView* data,
+static void ArrowIpcReaderAdvanceData(struct ArrowBufferView* data,
int32_t message_size_bytes) {
message_size_bytes += (message_size_bytes + 8) % 8;
- data->data += message_size_bytes;
+ data->data.as_uint8 += message_size_bytes;
data->size_bytes -= message_size_bytes;
}
-ArrowIpcErrorCode ArrowIpcReaderPeek(struct ArrowIpcReader* reader,
- struct ArrowIpcBufferView* data,
- struct ArrowIpcError* error) {
- struct ArrowIpcBufferView data_mut = *data;
+ArrowErrorCode ArrowIpcReaderPeek(struct ArrowIpcReader* reader,
+ struct ArrowBufferView* data,
+ struct ArrowError* error) {
+ struct ArrowBufferView data_mut = *data;
int32_t message_size_bytes;
NANOARROW_RETURN_NOT_OK(
ArrowIpcReaderCheckHeader(reader, &data_mut, &message_size_bytes, error));
@@ -297,36 +281,36 @@ ArrowIpcErrorCode ArrowIpcReaderPeek(struct ArrowIpcReader* reader,
return NANOARROW_OK;
}
-ArrowIpcErrorCode ArrowIpcReaderVerify(struct ArrowIpcReader* reader,
- struct ArrowIpcBufferView* data,
- struct ArrowIpcError* error) {
- struct ArrowIpcBufferView data_mut = *data;
+ArrowErrorCode ArrowIpcReaderVerify(struct ArrowIpcReader* reader,
+ struct ArrowBufferView* data,
+ struct ArrowError* error) {
+ struct ArrowBufferView data_mut = *data;
int32_t message_size_bytes;
NANOARROW_RETURN_NOT_OK(
ArrowIpcReaderCheckHeader(reader, &data_mut, &message_size_bytes, error));
- if (ns(Message_verify_as_root(data_mut.data, data_mut.size_bytes)) ==
+ if (ns(Message_verify_as_root(data_mut.data.as_uint8, data_mut.size_bytes)) ==
flatcc_verify_ok) {
ArrowIpcReaderAdvanceData(&data_mut, message_size_bytes);
*data = data_mut;
return NANOARROW_OK;
} else {
- ArrowIpcErrorSet(error, "Message flatbuffer verification failed");
+ ArrowErrorSet(error, "Message flatbuffer verification failed");
return EINVAL;
}
}
-ArrowIpcErrorCode ArrowIpcReaderDecode(struct ArrowIpcReader* reader,
- struct ArrowIpcBufferView* data,
- struct ArrowIpcError* error) {
+ArrowErrorCode ArrowIpcReaderDecode(struct ArrowIpcReader* reader,
+ struct ArrowBufferView* data,
+ struct ArrowError* error) {
reader->message_type = NANOARROW_IPC_MESSAGE_TYPE_UNINITIALIZED;
- struct ArrowIpcBufferView data_mut = *data;
+ struct ArrowBufferView data_mut = *data;
int32_t message_size_bytes;
NANOARROW_RETURN_NOT_OK(
ArrowIpcReaderCheckHeader(reader, &data_mut, &message_size_bytes, error));
- ns(Message_table_t) message = ns(Message_as_root(data_mut.data));
+ ns(Message_table_t) message = ns(Message_as_root(data_mut.data.as_uint8));
if (!message) {
return EINVAL;
}
@@ -339,11 +323,11 @@ ArrowIpcErrorCode ArrowIpcReaderDecode(struct ArrowIpcReader* reader,
case ns(MetadataVersion_V1):
case ns(MetadataVersion_V2):
case ns(MetadataVersion_V3):
- ArrowIpcErrorSet(error, "Expected metadata version V4 or V5 but found %s",
- ns(MetadataVersion_name(version)));
+ ArrowErrorSet(error, "Expected metadata version V4 or V5 but found %s",
+ ns(MetadataVersion_name(version)));
break;
default:
- ArrowIpcErrorSet(error, "Unexpected value for Message metadata version (%d)", version);
+ ArrowErrorSet(error, "Unexpected value for Message metadata version (%d)", version);
return EINVAL;
}
@@ -358,11 +342,11 @@ ArrowIpcErrorCode ArrowIpcReaderDecode(struct ArrowIpcReader* reader,
case ns(MessageHeader_RecordBatch):
case ns(MessageHeader_Tensor):
case ns(MessageHeader_SparseTensor):
- ArrowIpcErrorSet(error, "Unsupported message type: '%s'",
- ns(MessageHeader_type_name(reader->message_type)));
+ ArrowErrorSet(error, "Unsupported message type: '%s'",
+ ns(MessageHeader_type_name(reader->message_type)));
return ENOTSUP;
default:
- ArrowIpcErrorSet(error, "Unnown message type: %d", (int)(reader->message_type));
+ ArrowErrorSet(error, "Unnown message type: %d", (int)(reader->message_type));
return EINVAL;
}
diff --git a/extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc.h b/extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc.h
new file mode 100644
index 0000000..d5736a6
--- /dev/null
+++ b/extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc.h
@@ -0,0 +1,85 @@
+// 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.
+
+#ifndef NANOARROW_IPC_H_INCLUDED
+#define NANOARROW_IPC_H_INCLUDED
+
+#include "nanoarrow.h"
+
+#ifdef NANOARROW_NAMESPACE
+
+#define ArrowIpcCheckRuntime NANOARROW_SYMBOL(NANOARROW_NAMESPACE, ArrowIpcCheckRuntime)
+#define ArrowIpcReaderInit NANOARROW_SYMBOL(NANOARROW_NAMESPACE, ArrowIpcReaderInit)
+#define ArrowIpcReaderReset NANOARROW_SYMBOL(NANOARROW_NAMESPACE, ArrowIpcReaderReset)
+#define ArrowIpcReaderPeek NANOARROW_SYMBOL(NANOARROW_NAMESPACE, ArrowIpcReaderPeek)
+#define ArrowIpcReaderVerify NANOARROW_SYMBOL(NANOARROW_NAMESPACE, ArrowIpcReaderVerify)
+#define ArrowIpcReaderDecode NANOARROW_SYMBOL(NANOARROW_NAMESPACE, ArrowIpcReaderDecode)
+
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum ArrowIpcMessageType {
+ NANOARROW_IPC_MESSAGE_TYPE_UNINITIALIZED,
+ NANOARROW_IPC_MESSAGE_TYPE_SCHEMA,
+ NANOARROW_IPC_MESSAGE_TYPE_DICTIONARY_BATCH,
+ NANOARROW_IPC_MESSAGE_TYPE_RECORD_BATCH,
+ NANOARROW_IPC_MESSAGE_TYPE_TENSOR,
+ NANOARROW_IPC_MESSAGE_TYPE_SPARSE_TENSOR
+};
+
+enum ArrowIpcEndianness {
+ NANOARROW_IPC_ENDIANNESS_UNINITIALIZED,
+ NANOARROW_IPC_ENDIANNESS_LITTLE,
+ NANOARROW_IPC_ENDIANNESS_BIG
+};
+
+#define NANOARROW_IPC_FEATURE_DICTIONARY_REPLACEMENT 1
+#define NANOARROW_IPC_FEATURE_COMPRESSED_BODY 2
+
+ArrowErrorCode ArrowIpcCheckRuntime(struct ArrowError* error);
+
+struct ArrowIpcReader {
+ int32_t metadata_version;
+ int32_t message_type;
+ int32_t endianness;
+ int32_t features;
+ struct ArrowSchema schema;
+};
+
+void ArrowIpcReaderInit(struct ArrowIpcReader* reader);
+
+void ArrowIpcReaderReset(struct ArrowIpcReader* reader);
+
+ArrowErrorCode ArrowIpcReaderPeek(struct ArrowIpcReader* reader,
+ struct ArrowBufferView* data, struct ArrowError* error);
+
+ArrowErrorCode ArrowIpcReaderVerify(struct ArrowIpcReader* reader,
+ struct ArrowBufferView* data,
+ struct ArrowError* error);
+
+ArrowErrorCode ArrowIpcReaderDecode(struct ArrowIpcReader* reader,
+ struct ArrowBufferView* data,
+ struct ArrowError* error);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc_flatcc_generated.h b/extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc_flatcc_generated.h
new file mode 100644
index 0000000..cbaef37
--- /dev/null
+++ b/extensions/nanoarrow_ipc/src/nanoarrow/nanoarrow_ipc_flatcc_generated.h
@@ -0,0 +1,20271 @@
+#ifndef FLATBUFFERS_COMMON_READER_H
+#define FLATBUFFERS_COMMON_READER_H
+
+/* Generated by flatcc 0.6.1 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.1 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.1 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_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_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_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_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 intented to represent higher level
+ * features, additional details maybe negotiated
+ * with key-value pairs specific to the protocol.
+ *
+ * Enums added to this list should be assigned power-of-two values
+ * to facilitate exchanging and comparing bitmaps for supported
+ * features. */
+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)
+
+
+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: key type and the second the value type. The names of the
+ * child fields may be respectively "entries", "key", and "value", but this is
+ * not enforced.
+ *
+ * Map
+ * ```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)
+
+
+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 only 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 only accepted widths are 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 non-existent. 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))
+
+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";
+ 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;
+ 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, in i.e. 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.1 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_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_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_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_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; }
+__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));
+ 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));
+}
+
+__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));
+}
+
+__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_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.1 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_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_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 */
+ 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_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_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_identifier(const void *buf, size_t bufsiz, const char *fid)
+{
+ return flatcc_verify_struct_as_root(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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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 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_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_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_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);
+}
+
+#include "flatcc/flatcc_epilogue.h"
+#endif /* SCHEMA_VERIFIER_H */
+#ifndef FILE_READER_H
+#define FILE_READER_H
+
+/* Generated by flatcc 0.6.1 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 RecordBlock (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.1 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.1 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_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_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_identifier(const void *buf, size_t bufsiz, const char *fid)
+{
+ return flatcc_verify_struct_as_root(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_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_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_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);
+}
+
+#include "flatcc/flatcc_epilogue.h"
+#endif /* FILE_VERIFIER_H */
+#ifndef SCHEMA_READER_H
+#define SCHEMA_READER_H
+
+/* Generated by flatcc 0.6.1 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_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_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_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_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 intented to represent higher level
+ * features, additional details maybe negotiated
+ * with key-value pairs specific to the protocol.
+ *
+ * Enums added to this list should be assigned power-of-two values
+ * to facilitate exchanging and comparing bitmaps for supported
+ * features. */
+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)
+
+
+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: key type and the second the value type. The names of the
+ * child fields may be respectively "entries", "key", and "value", but this is
+ * not enforced.
+ *
+ * Map
+ * ```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)
+
+
+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 only 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 only accepted widths are 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 non-existent. 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))
+
+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";
+ 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;
+ 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, in i.e. 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.1 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_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_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_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_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)
... 30016 lines suppressed ...