C Interfaces#
See also
The C data interface and C stream interface specifications.
ABI Structures#
-
struct ArrowSchema#
-
struct ArrowArray#
-
struct ArrowArrayStream#
C Data Interface#
-
Status ExportType(const DataType &type, struct ArrowSchema *out)#
Export C++ DataType using the C data interface format.
The root type is considered to have empty name and metadata. If you want the root type to have a name and/or metadata, pass a Field instead.
- Parameters
type β [in] DataType object to export
out β [out] C struct where to export the datatype
-
Status ExportField(const Field &field, struct ArrowSchema *out)#
Export C++ Field using the C data interface format.
- Parameters
field β [in] Field object to export
out β [out] C struct where to export the field
-
Status ExportSchema(const Schema &schema, struct ArrowSchema *out)#
Export C++ Schema using the C data interface format.
- Parameters
schema β [in] Schema object to export
out β [out] C struct where to export the field
-
Status ExportArray(const Array &array, struct ArrowArray *out, struct ArrowSchema *out_schema = NULLPTR)#
Export C++ Array using the C data interface format.
The resulting ArrowArray struct keeps the array data and buffers alive until its release callback is called by the consumer.
- Parameters
array β [in] Array object to export
out β [out] C struct where to export the array
out_schema β [out] optional C struct where to export the array type
-
Status ExportRecordBatch(const RecordBatch &batch, struct ArrowArray *out, struct ArrowSchema *out_schema = NULLPTR)#
Export C++ RecordBatch using the C data interface format.
The record batch is exported as if it were a struct array. The resulting ArrowArray struct keeps the record batch data and buffers alive until its release callback is called by the consumer.
- Parameters
batch β [in] Record batch to export
out β [out] C struct where to export the record batch
out_schema β [out] optional C struct where to export the record batch schema
-
Result<std::shared_ptr<DataType>> ImportType(struct ArrowSchema *schema)#
Import C++ DataType from the C data interface.
The given ArrowSchema struct is released (as per the C data interface specification), even if this function fails.
- Parameters
schema β [inout] C data interface struct representing the data type
- Returns
Imported type object
-
Result<std::shared_ptr<Field>> ImportField(struct ArrowSchema *schema)#
Import C++ Field from the C data interface.
The given ArrowSchema struct is released (as per the C data interface specification), even if this function fails.
- Parameters
schema β [inout] C data interface struct representing the field
- Returns
Imported field object
-
Result<std::shared_ptr<Schema>> ImportSchema(struct ArrowSchema *schema)#
Import C++ Schema from the C data interface.
The given ArrowSchema struct is released (as per the C data interface specification), even if this function fails.
- Parameters
schema β [inout] C data interface struct representing the field
- Returns
Imported field object
Import C++ array from the C data interface.
The ArrowArray struct has its contents moved (as per the C data interface specification) to a private object held alive by the resulting array.
- Parameters
array β [inout] C data interface struct holding the array data
type β [in] type of the imported array
- Returns
Imported array object
-
Result<std::shared_ptr<Array>> ImportArray(struct ArrowArray *array, struct ArrowSchema *type)#
Import C++ array and its type from the C data interface.
The ArrowArray struct has its contents moved (as per the C data interface specification) to a private object held alive by the resulting array. The ArrowSchema struct is released, even if this function fails.
- Parameters
array β [inout] C data interface struct holding the array data
type β [inout] C data interface struct holding the array type
- Returns
Imported array object
Import C++ record batch from the C data interface.
The ArrowArray struct has its contents moved (as per the C data interface specification) to a private object held alive by the resulting record batch.
- Parameters
array β [inout] C data interface struct holding the record batch data
schema β [in] schema of the imported record batch
- Returns
Imported record batch object
-
Result<std::shared_ptr<RecordBatch>> ImportRecordBatch(struct ArrowArray *array, struct ArrowSchema *schema)#
Import C++ record batch and its schema from the C data interface.
The type represented by the ArrowSchema struct must be a struct type array. The ArrowArray struct has its contents moved (as per the C data interface specification) to a private object held alive by the resulting record batch. The ArrowSchema struct is released, even if this function fails.
- Parameters
array β [inout] C data interface struct holding the record batch data
schema β [inout] C data interface struct holding the record batch schema
- Returns
Imported record batch object
C Stream Interface#
EXPERIMENTAL: Export C++ RecordBatchReader using the C stream interface.
The resulting ArrowArrayStream struct keeps the record batch reader alive until its release callback is called by the consumer.
- Parameters
reader β [in] RecordBatchReader object to export
out β [out] C struct where to export the stream
-
Result<std::shared_ptr<RecordBatchReader>> ImportRecordBatchReader(struct ArrowArrayStream *stream)#
EXPERIMENTAL: Import C++ RecordBatchReader from the C stream interface.
The ArrowArrayStream struct has its contents moved to a private object held alive by the resulting record batch reader.
- Parameters
stream β [inout] C stream interface struct
- Returns
Imported RecordBatchReader object