C Interfaces¶
See also
The C data interface and C stream interface specifications.
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
[in] type – 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
[in] field – 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
[in] schema – 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
[in] array – Array object to export
[out] out – C struct where to export the array
[out] out_schema – 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
[in] batch – Record batch to export
[out] out – C struct where to export the record batch
[out] out_schema – 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
[inout] schema – 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
[inout] schema – 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
[inout] schema – 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
[inout] array – C data interface struct holding the array data
[in] type – 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
[inout] array – C data interface struct holding the array data
[inout] type – 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
[inout] array – C data interface struct holding the record batch data
[in] schema – 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
[inout] array – C data interface struct holding the record batch data
[inout] schema – 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
[in] reader – 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
[inout] stream – C stream interface struct
- Returns
Imported RecordBatchReader object