From 3eca0321c007775ce9c6bb52c0735f0980c86a12 Mon Sep 17 00:00:00 2001 From: Esteban Zimanyi Date: Wed, 15 Jul 2026 07:24:16 +0200 Subject: [PATCH] Remove Arrow support MobilityDB removed the Arrow C Data Interface export (meos_arrow.h, meos_*_to_arrow / _from_arrow / _arrow_roundtrip). Drop it from the Go FFI: - codegen: remove meos_arrow.h from the header list and both cgo preambles, drop the -DARROW=1 build flag from the cgo CFLAGS, and remove the ArrowSchema/ArrowArray struct mapping; - regenerate: drop the meos_meos_arrow.go wrapper file, the meos_arrow.h #include from every generated cgo preamble, and the -DARROW=1 flag from the generated cgo directives. --- functions/cgo.go | 5 +- functions/meos_meos.go | 1 - functions/meos_meos_arrow.go | 213 ---------------------------- functions/meos_meos_catalog.go | 1 - functions/meos_meos_cbuffer.go | 1 - functions/meos_meos_geo.go | 1 - functions/meos_meos_h3.go | 1 - functions/meos_meos_internal.go | 1 - functions/meos_meos_internal_geo.go | 1 - functions/meos_meos_json.go | 1 - functions/meos_meos_npoint.go | 1 - functions/meos_meos_pointcloud.go | 1 - functions/meos_meos_pose.go | 1 - functions/meos_meos_quadbin.go | 1 - functions/meos_meos_rgeo.go | 1 - functions/types.go | 1 - tools/codegen.py | 18 +-- 17 files changed, 4 insertions(+), 246 deletions(-) delete mode 100644 functions/meos_meos_arrow.go diff --git a/functions/cgo.go b/functions/cgo.go index 4695e79..a32ab13 100644 --- a/functions/cgo.go +++ b/functions/cgo.go @@ -7,10 +7,10 @@ package functions // sync with MobilityDB CMakeLists.txt's ``if(ALL)`` loop (alphabetical). The // families expose external library types (H3's h3api.h) through their own // headers, so their include dirs are added too. -#cgo darwin CFLAGS: -I/opt/homebrew/include -I/opt/homebrew/include/h3 -DMEOS=1 -DARROW=1 -DCBUFFER=1 -DH3=1 -DJSON=1 -DNPOINT=1 -DPOINTCLOUD=1 -DPOSE=1 -DQUADBIN=1 -DRASTER=1 -DRGEO=1 +#cgo darwin CFLAGS: -I/opt/homebrew/include -I/opt/homebrew/include/h3 -DMEOS=1 -DCBUFFER=1 -DH3=1 -DJSON=1 -DNPOINT=1 -DPOINTCLOUD=1 -DPOSE=1 -DQUADBIN=1 -DRASTER=1 -DRGEO=1 #cgo darwin LDFLAGS: -L/opt/homebrew/lib -lmeos -Wl,-rpath,/opt/homebrew/lib -#cgo linux CFLAGS: -I/usr/local/include/ -I/usr/include/h3 -DMEOS=1 -DARROW=1 -DCBUFFER=1 -DH3=1 -DJSON=1 -DNPOINT=1 -DPOINTCLOUD=1 -DPOSE=1 -DQUADBIN=1 -DRASTER=1 -DRGEO=1 +#cgo linux CFLAGS: -I/usr/local/include/ -I/usr/include/h3 -DMEOS=1 -DCBUFFER=1 -DH3=1 -DJSON=1 -DNPOINT=1 -DPOINTCLOUD=1 -DPOSE=1 -DQUADBIN=1 -DRASTER=1 -DRGEO=1 #cgo linux LDFLAGS: -L/usr/local/lib -lmeos -Wl,-rpath,/usr/local/lib #include @@ -27,6 +27,5 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" */ import "C" diff --git a/functions/meos_meos.go b/functions/meos_meos.go index caaee11..cc0ea15 100644 --- a/functions/meos_meos.go +++ b/functions/meos_meos.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_arrow.go b/functions/meos_meos_arrow.go deleted file mode 100644 index 4cdf682..0000000 --- a/functions/meos_meos_arrow.go +++ /dev/null @@ -1,213 +0,0 @@ -package functions - -/* -#include -#include "meos.h" -#include "meos_catalog.h" -#include "meos_geo.h" -#include "meos_internal.h" -#include "meos_internal_geo.h" -#include "meos_npoint.h" -#include "meos_cbuffer.h" -#include "meos_pose.h" -#include "meos_rgeo.h" -#include "meos_h3.h" -#include "meos_quadbin.h" -#include "meos_json.h" -#include "meos_pointcloud.h" -#include "meos_arrow.h" - -// cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. -#define gunion_bigint_set union_bigint_set -#define gunion_bigint_span union_bigint_span -#define gunion_bigint_spanset union_bigint_spanset -#define gunion_cbuffer_set union_cbuffer_set -#define gunion_date_set union_date_set -#define gunion_date_span union_date_span -#define gunion_date_spanset union_date_spanset -#define gunion_float_set union_float_set -#define gunion_float_span union_float_span -#define gunion_float_spanset union_float_spanset -#define gunion_geo_set union_geo_set -#define gunion_int_set union_int_set -#define gunion_int_span union_int_span -#define gunion_int_spanset union_int_spanset -#define gunion_jsonb_set union_jsonb_set -#define gunion_npoint_set union_npoint_set -#define gunion_pcpatch_set union_pcpatch_set -#define gunion_pcpoint_set union_pcpoint_set -#define gunion_pose_set union_pose_set -#define gunion_set_bigint union_set_bigint -#define gunion_set_cbuffer union_set_cbuffer -#define gunion_set_date union_set_date -#define gunion_set_float union_set_float -#define gunion_set_geo union_set_geo -#define gunion_set_int union_set_int -#define gunion_set_jsonb union_set_jsonb -#define gunion_set_npoint union_set_npoint -#define gunion_set_pcpatch union_set_pcpatch -#define gunion_set_pcpoint union_set_pcpoint -#define gunion_set_pose union_set_pose -#define gunion_set_set union_set_set -#define gunion_set_text union_set_text -#define gunion_set_timestamptz union_set_timestamptz -#define gunion_set_value union_set_value -#define gunion_span_bigint union_span_bigint -#define gunion_span_date union_span_date -#define gunion_span_float union_span_float -#define gunion_span_int union_span_int -#define gunion_span_span union_span_span -#define gunion_span_spanset union_span_spanset -#define gunion_span_timestamptz union_span_timestamptz -#define gunion_span_value union_span_value -#define gunion_spanset_bigint union_spanset_bigint -#define gunion_spanset_date union_spanset_date -#define gunion_spanset_float union_spanset_float -#define gunion_spanset_int union_spanset_int -#define gunion_spanset_span union_spanset_span -#define gunion_spanset_spanset union_spanset_spanset -#define gunion_spanset_timestamptz union_spanset_timestamptz -#define gunion_spanset_value union_spanset_value -#define gunion_stbox_stbox union_stbox_stbox -#define gunion_tbox_tbox union_tbox_tbox -#define gunion_text_set union_text_set -#define gunion_timestamptz_set union_timestamptz_set -#define gunion_timestamptz_span union_timestamptz_span -#define gunion_timestamptz_spanset union_timestamptz_spanset -#define gunion_tpcbox_tpcbox union_tpcbox_tpcbox -#define gunion_value_set union_value_set -#define gunion_value_span union_value_span -#define gunion_value_spanset union_value_spanset -*/ -import "C" -import ( - "unsafe" -) - -var _ = unsafe.Pointer(nil) - -// MeosTemporalToArrow wraps MEOS C function meos_temporal_to_arrow. -func MeosTemporalToArrow(temp *Temporal, out_schema unsafe.Pointer, out_array unsafe.Pointer) bool { - _cret := C.meos_temporal_to_arrow(temp._inner, (*C.struct_ArrowSchema)(out_schema), (*C.struct_ArrowArray)(out_array)) - return bool(_cret) -} - - -// MeosTemporalFromArrow wraps MEOS C function meos_temporal_from_arrow. -func MeosTemporalFromArrow(schema unsafe.Pointer, array unsafe.Pointer) *Temporal { - _cret := C.meos_temporal_from_arrow((*C.struct_ArrowSchema)(schema), (*C.struct_ArrowArray)(array)) - return &Temporal{_inner: _cret} -} - - -// MeosTemporalArrowRoundtrip wraps MEOS C function meos_temporal_arrow_roundtrip. -func MeosTemporalArrowRoundtrip(temp *Temporal) *Temporal { - _cret := C.meos_temporal_arrow_roundtrip(temp._inner) - return &Temporal{_inner: _cret} -} - - -// MeosSetToArrow wraps MEOS C function meos_set_to_arrow. -func MeosSetToArrow(s *Set, out_schema unsafe.Pointer, out_array unsafe.Pointer) bool { - _cret := C.meos_set_to_arrow(s._inner, (*C.struct_ArrowSchema)(out_schema), (*C.struct_ArrowArray)(out_array)) - return bool(_cret) -} - - -// MeosSetFromArrow wraps MEOS C function meos_set_from_arrow. -func MeosSetFromArrow(schema unsafe.Pointer, array unsafe.Pointer) *Set { - _cret := C.meos_set_from_arrow((*C.struct_ArrowSchema)(schema), (*C.struct_ArrowArray)(array)) - return &Set{_inner: _cret} -} - - -// MeosSetArrowRoundtrip wraps MEOS C function meos_set_arrow_roundtrip. -func MeosSetArrowRoundtrip(s *Set) *Set { - _cret := C.meos_set_arrow_roundtrip(s._inner) - return &Set{_inner: _cret} -} - - -// MeosSpanToArrow wraps MEOS C function meos_span_to_arrow. -func MeosSpanToArrow(s *Span, out_schema unsafe.Pointer, out_array unsafe.Pointer) bool { - _cret := C.meos_span_to_arrow(s._inner, (*C.struct_ArrowSchema)(out_schema), (*C.struct_ArrowArray)(out_array)) - return bool(_cret) -} - - -// MeosSpanFromArrow wraps MEOS C function meos_span_from_arrow. -func MeosSpanFromArrow(schema unsafe.Pointer, array unsafe.Pointer) *Span { - _cret := C.meos_span_from_arrow((*C.struct_ArrowSchema)(schema), (*C.struct_ArrowArray)(array)) - return &Span{_inner: _cret} -} - - -// MeosSpanArrowRoundtrip wraps MEOS C function meos_span_arrow_roundtrip. -func MeosSpanArrowRoundtrip(s *Span) *Span { - _cret := C.meos_span_arrow_roundtrip(s._inner) - return &Span{_inner: _cret} -} - - -// MeosSpansetToArrow wraps MEOS C function meos_spanset_to_arrow. -func MeosSpansetToArrow(ss *SpanSet, out_schema unsafe.Pointer, out_array unsafe.Pointer) bool { - _cret := C.meos_spanset_to_arrow(ss._inner, (*C.struct_ArrowSchema)(out_schema), (*C.struct_ArrowArray)(out_array)) - return bool(_cret) -} - - -// MeosSpansetFromArrow wraps MEOS C function meos_spanset_from_arrow. -func MeosSpansetFromArrow(schema unsafe.Pointer, array unsafe.Pointer) *SpanSet { - _cret := C.meos_spanset_from_arrow((*C.struct_ArrowSchema)(schema), (*C.struct_ArrowArray)(array)) - return &SpanSet{_inner: _cret} -} - - -// MeosSpansetArrowRoundtrip wraps MEOS C function meos_spanset_arrow_roundtrip. -func MeosSpansetArrowRoundtrip(ss *SpanSet) *SpanSet { - _cret := C.meos_spanset_arrow_roundtrip(ss._inner) - return &SpanSet{_inner: _cret} -} - - -// MeosTBOXToArrow wraps MEOS C function meos_tbox_to_arrow. -func MeosTBOXToArrow(box *TBox, out_schema unsafe.Pointer, out_array unsafe.Pointer) bool { - _cret := C.meos_tbox_to_arrow(box._inner, (*C.struct_ArrowSchema)(out_schema), (*C.struct_ArrowArray)(out_array)) - return bool(_cret) -} - - -// MeosTBOXFromArrow wraps MEOS C function meos_tbox_from_arrow. -func MeosTBOXFromArrow(schema unsafe.Pointer, array unsafe.Pointer) *TBox { - _cret := C.meos_tbox_from_arrow((*C.struct_ArrowSchema)(schema), (*C.struct_ArrowArray)(array)) - return &TBox{_inner: _cret} -} - - -// MeosTBOXArrowRoundtrip wraps MEOS C function meos_tbox_arrow_roundtrip. -func MeosTBOXArrowRoundtrip(box *TBox) *TBox { - _cret := C.meos_tbox_arrow_roundtrip(box._inner) - return &TBox{_inner: _cret} -} - - -// MeosSTBOXToArrow wraps MEOS C function meos_stbox_to_arrow. -func MeosSTBOXToArrow(box *STBox, out_schema unsafe.Pointer, out_array unsafe.Pointer) bool { - _cret := C.meos_stbox_to_arrow(box._inner, (*C.struct_ArrowSchema)(out_schema), (*C.struct_ArrowArray)(out_array)) - return bool(_cret) -} - - -// MeosSTBOXFromArrow wraps MEOS C function meos_stbox_from_arrow. -func MeosSTBOXFromArrow(schema unsafe.Pointer, array unsafe.Pointer) *STBox { - _cret := C.meos_stbox_from_arrow((*C.struct_ArrowSchema)(schema), (*C.struct_ArrowArray)(array)) - return &STBox{_inner: _cret} -} - - -// MeosSTBOXArrowRoundtrip wraps MEOS C function meos_stbox_arrow_roundtrip. -func MeosSTBOXArrowRoundtrip(box *STBox) *STBox { - _cret := C.meos_stbox_arrow_roundtrip(box._inner) - return &STBox{_inner: _cret} -} - diff --git a/functions/meos_meos_catalog.go b/functions/meos_meos_catalog.go index bcd6077..6307803 100644 --- a/functions/meos_meos_catalog.go +++ b/functions/meos_meos_catalog.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_cbuffer.go b/functions/meos_meos_cbuffer.go index e4ed32b..66ad539 100644 --- a/functions/meos_meos_cbuffer.go +++ b/functions/meos_meos_cbuffer.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_geo.go b/functions/meos_meos_geo.go index 1fa023f..93878b2 100644 --- a/functions/meos_meos_geo.go +++ b/functions/meos_meos_geo.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_h3.go b/functions/meos_meos_h3.go index eb99c64..a6925ca 100644 --- a/functions/meos_meos_h3.go +++ b/functions/meos_meos_h3.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_internal.go b/functions/meos_meos_internal.go index 2ef0f59..637380b 100644 --- a/functions/meos_meos_internal.go +++ b/functions/meos_meos_internal.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_internal_geo.go b/functions/meos_meos_internal_geo.go index 9da2ee7..fcff8b2 100644 --- a/functions/meos_meos_internal_geo.go +++ b/functions/meos_meos_internal_geo.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_json.go b/functions/meos_meos_json.go index 51a041f..c21e0d1 100644 --- a/functions/meos_meos_json.go +++ b/functions/meos_meos_json.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_npoint.go b/functions/meos_meos_npoint.go index 66cccfc..064c4db 100644 --- a/functions/meos_meos_npoint.go +++ b/functions/meos_meos_npoint.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_pointcloud.go b/functions/meos_meos_pointcloud.go index 3dc1b00..91e4a66 100644 --- a/functions/meos_meos_pointcloud.go +++ b/functions/meos_meos_pointcloud.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_pose.go b/functions/meos_meos_pose.go index 4b43966..47da5bb 100644 --- a/functions/meos_meos_pose.go +++ b/functions/meos_meos_pose.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_quadbin.go b/functions/meos_meos_quadbin.go index 6254845..50b349f 100644 --- a/functions/meos_meos_quadbin.go +++ b/functions/meos_meos_quadbin.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/meos_meos_rgeo.go b/functions/meos_meos_rgeo.go index 3c5dbb4..fb292a9 100644 --- a/functions/meos_meos_rgeo.go +++ b/functions/meos_meos_rgeo.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" // cgo reads C.union_* as a union TYPE; alias the union operators so C.g resolves them as functions. #define gunion_bigint_set union_bigint_set diff --git a/functions/types.go b/functions/types.go index fc26dcc..3e86364 100644 --- a/functions/types.go +++ b/functions/types.go @@ -15,7 +15,6 @@ package functions #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" */ import "C" import ( diff --git a/tools/codegen.py b/tools/codegen.py index 8714473..cc83e02 100644 --- a/tools/codegen.py +++ b/tools/codegen.py @@ -39,7 +39,6 @@ "meos_quadbin.h", "meos_json.h", "meos_pointcloud.h", - "meos_arrow.h", ] # Forward-declared opaque types we never wrap (mirrors the cdef skip list @@ -285,15 +284,6 @@ def _strip_qualifiers(c_type: str) -> tuple[str, int]: return s.replace("*", "").strip(), stars -# Arrow C Data Interface structs cross the cgo boundary as opaque pointers: the -# caller owns the ArrowSchema/ArrowArray (zero-copy interop), so they map to -# unsafe.Pointer, cast to the concrete C struct at the call site. -_ARROW_STRUCTS = { - "struct ArrowSchema": "C.struct_ArrowSchema", - "struct ArrowArray": "C.struct_ArrowArray", -} - - def _go_type_for(c_type: str) -> tuple[str | None, str | None, str | None]: """Look up a C type in the mapping tables. @@ -314,8 +304,6 @@ def _go_type_for(c_type: str) -> tuple[str | None, str | None, str | None]: # Pass through the wrapper as an input; convert back as a return. c_cast = "$x.Inner()" if not go_type.startswith("*") else "$x._inner" return go_type, c_cast, ctor.replace("$res", "$x") - if stars == 1 and base in _ARROW_STRUCTS: - return "unsafe.Pointer", f"(*{_ARROW_STRUCTS[base]})($x)", None # JMEOS-flat fallback: any remaining pointer (an array ``T **``, a scalar # out-pointer, a ``void *``) is an opaque handle -- JMEOS maps every such # pointer to a raw ``Pointer`` and never unpacks it (the array->collection @@ -971,10 +959,10 @@ def _todo_stub(c_name: str, reason: str) -> str: // sync with MobilityDB CMakeLists.txt's ``if(ALL)`` loop (alphabetical). The // families expose external library types (H3's h3api.h) through their own // headers, so their include dirs are added too. -#cgo darwin CFLAGS: -I/opt/homebrew/include -I/opt/homebrew/include/h3 -DMEOS=1 -DARROW=1 -DCBUFFER=1 -DH3=1 -DJSON=1 -DNPOINT=1 -DPOINTCLOUD=1 -DPOSE=1 -DQUADBIN=1 -DRASTER=1 -DRGEO=1 +#cgo darwin CFLAGS: -I/opt/homebrew/include -I/opt/homebrew/include/h3 -DMEOS=1 -DCBUFFER=1 -DH3=1 -DJSON=1 -DNPOINT=1 -DPOINTCLOUD=1 -DPOSE=1 -DQUADBIN=1 -DRASTER=1 -DRGEO=1 #cgo darwin LDFLAGS: -L/opt/homebrew/lib -lmeos -Wl,-rpath,/opt/homebrew/lib -#cgo linux CFLAGS: -I/usr/local/include/ -I/usr/include/h3 -DMEOS=1 -DARROW=1 -DCBUFFER=1 -DH3=1 -DJSON=1 -DNPOINT=1 -DPOINTCLOUD=1 -DPOSE=1 -DQUADBIN=1 -DRASTER=1 -DRGEO=1 +#cgo linux CFLAGS: -I/usr/local/include/ -I/usr/include/h3 -DMEOS=1 -DCBUFFER=1 -DH3=1 -DJSON=1 -DNPOINT=1 -DPOINTCLOUD=1 -DPOSE=1 -DQUADBIN=1 -DRASTER=1 -DRGEO=1 #cgo linux LDFLAGS: -L/usr/local/lib -lmeos -Wl,-rpath,/usr/local/lib #include @@ -991,7 +979,6 @@ def _todo_stub(c_name: str, reason: str) -> str: #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" */ import "C" """ @@ -1013,7 +1000,6 @@ def _todo_stub(c_name: str, reason: str) -> str: #include "meos_quadbin.h" #include "meos_json.h" #include "meos_pointcloud.h" -#include "meos_arrow.h" */ import "C" import (