You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2017/11/26 19:17:32 UTC
[arrow] branch master updated: ARROW-1859: [GLib] Add
GArrowDictionaryDataType
This is an automated email from the ASF dual-hosted git repository.
wesm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new ebb6c76 ARROW-1859: [GLib] Add GArrowDictionaryDataType
ebb6c76 is described below
commit ebb6c764687c197fbd5269b6500568d11dafaf31
Author: Kouhei Sutou <ko...@clear-code.com>
AuthorDate: Sun Nov 26 14:17:28 2017 -0500
ARROW-1859: [GLib] Add GArrowDictionaryDataType
Author: Kouhei Sutou <ko...@clear-code.com>
Closes #1361 from kou/glib-dictionary-data-type and squashes the following commits:
6ccce1f8 [Kouhei Sutou] [GLib] Add GArrowDictionaryDataType
---
c_glib/arrow-glib/Makefile.am | 6 +-
c_glib/arrow-glib/array.h | 1225 +---------------------
c_glib/arrow-glib/array.hpp | 8 +-
c_glib/arrow-glib/{array.cpp => basic-array.cpp} | 206 +---
c_glib/arrow-glib/{array.h => basic-array.h} | 143 +--
c_glib/arrow-glib/{array.hpp => basic-array.hpp} | 2 +-
c_glib/arrow-glib/basic-data-type.cpp | 38 +-
c_glib/arrow-glib/basic-data-type.h | 104 +-
c_glib/arrow-glib/composite-array.cpp | 237 +++++
c_glib/arrow-glib/composite-array.h | 132 +++
c_glib/arrow-glib/composite-data-type.cpp | 86 ++
c_glib/arrow-glib/composite-data-type.h | 25 +
c_glib/arrow-glib/meson.build | 6 +-
c_glib/doc/reference/arrow-glib-docs.xml | 3 +-
c_glib/test/test-dictionary-data-type.rb | 56 +
15 files changed, 631 insertions(+), 1646 deletions(-)
diff --git a/c_glib/arrow-glib/Makefile.am b/c_glib/arrow-glib/Makefile.am
index e807311..39222a5 100644
--- a/c_glib/arrow-glib/Makefile.am
+++ b/c_glib/arrow-glib/Makefile.am
@@ -45,10 +45,12 @@ libarrow_glib_la_headers = \
array.h \
array-builder.h \
arrow-glib.h \
+ basic-array.h \
basic-data-type.h \
buffer.h \
chunked-array.h \
column.h \
+ composite-array.h \
composite-data-type.h \
data-type.h \
error.h \
@@ -86,12 +88,13 @@ libarrow_glib_la_generated_sources = \
$(libarrow_glib_la_generated_headers)
libarrow_glib_la_sources = \
- array.cpp \
array-builder.cpp \
+ basic-array.cpp \
basic-data-type.cpp \
buffer.cpp \
chunked-array.cpp \
column.cpp \
+ composite-array.cpp \
composite-data-type.cpp \
error.cpp \
field.cpp \
@@ -125,6 +128,7 @@ libarrow_glib_la_cpp_headers = \
array.hpp \
array-builder.hpp \
arrow-glib.hpp \
+ basic-array.hpp \
basic-data-type.hpp \
buffer.hpp \
chunked-array.hpp \
diff --git a/c_glib/arrow-glib/array.h b/c_glib/arrow-glib/array.h
index e988a8a..9a84559 100644
--- a/c_glib/arrow-glib/array.h
+++ b/c_glib/arrow-glib/array.h
@@ -19,1226 +19,5 @@
#pragma once
-#include <arrow-glib/buffer.h>
-#include <arrow-glib/compute.h>
-#include <arrow-glib/data-type.h>
-
-G_BEGIN_DECLS
-
-#define GARROW_TYPE_ARRAY \
- (garrow_array_get_type())
-#define GARROW_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), GARROW_TYPE_ARRAY, GArrowArray))
-#define GARROW_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), GARROW_TYPE_ARRAY, GArrowArrayClass))
-#define GARROW_IS_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), GARROW_TYPE_ARRAY))
-#define GARROW_IS_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), GARROW_TYPE_ARRAY))
-#define GARROW_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), GARROW_TYPE_ARRAY, GArrowArrayClass))
-
-typedef struct _GArrowArray GArrowArray;
-typedef struct _GArrowArrayClass GArrowArrayClass;
-
-/**
- * GArrowArray:
- *
- * It wraps `arrow::Array`.
- */
-struct _GArrowArray
-{
- /*< private >*/
- GObject parent_instance;
-};
-
-struct _GArrowArrayClass
-{
- GObjectClass parent_class;
-};
-
-GType garrow_array_get_type (void) G_GNUC_CONST;
-
-gboolean garrow_array_equal (GArrowArray *array,
- GArrowArray *other_array);
-gboolean garrow_array_equal_approx(GArrowArray *array,
- GArrowArray *other_array);
-gboolean garrow_array_equal_range (GArrowArray *array,
- gint64 start_index,
- GArrowArray *other_array,
- gint64 other_start_index,
- gint64 end_index);
-
-gboolean garrow_array_is_null (GArrowArray *array,
- gint64 i);
-gboolean garrow_array_is_valid (GArrowArray *array,
- gint64 i);
-gint64 garrow_array_get_length (GArrowArray *array);
-gint64 garrow_array_get_offset (GArrowArray *array);
-gint64 garrow_array_get_n_nulls (GArrowArray *array);
-GArrowBuffer *garrow_array_get_null_bitmap(GArrowArray *array);
-GArrowDataType *garrow_array_get_value_data_type(GArrowArray *array);
-GArrowType garrow_array_get_value_type(GArrowArray *array);
-GArrowArray *garrow_array_slice (GArrowArray *array,
- gint64 offset,
- gint64 length);
-gchar *garrow_array_to_string (GArrowArray *array,
- GError **error);
-
-GArrowArray *garrow_array_cast (GArrowArray *array,
- GArrowDataType *target_data_type,
- GArrowCastOptions *options,
- GError **error);
-
-#define GARROW_TYPE_NULL_ARRAY \
- (garrow_null_array_get_type())
-#define GARROW_NULL_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_NULL_ARRAY, \
- GArrowNullArray))
-#define GARROW_NULL_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_NULL_ARRAY, \
- GArrowNullArrayClass))
-#define GARROW_IS_NULL_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_NULL_ARRAY))
-#define GARROW_IS_NULL_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_NULL_ARRAY))
-#define GARROW_NULL_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_NULL_ARRAY, \
- GArrowNullArrayClass))
-
-typedef struct _GArrowNullArray GArrowNullArray;
-typedef struct _GArrowNullArrayClass GArrowNullArrayClass;
-
-/**
- * GArrowNullArray:
- *
- * It wraps `arrow::NullArray`.
- */
-struct _GArrowNullArray
-{
- /*< private >*/
- GArrowArray parent_instance;
-};
-
-struct _GArrowNullArrayClass
-{
- GArrowArrayClass parent_class;
-};
-
-GType garrow_null_array_get_type(void) G_GNUC_CONST;
-
-GArrowNullArray *garrow_null_array_new(gint64 length);
-
-
-#define GARROW_TYPE_PRIMITIVE_ARRAY \
- (garrow_primitive_array_get_type())
-#define GARROW_PRIMITIVE_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_PRIMITIVE_ARRAY, \
- GArrowPrimitiveArray))
-#define GARROW_PRIMITIVE_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_PRIMITIVE_ARRAY, \
- GArrowPrimitiveArrayClass))
-#define GARROW_IS_PRIMITIVE_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_PRIMITIVE_ARRAY))
-#define GARROW_IS_PRIMITIVE_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_PRIMITIVE_ARRAY))
-#define GARROW_PRIMITIVE_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_PRIMITIVE_ARRAY, \
- GArrowPrimitiveArrayClass))
-
-typedef struct _GArrowPrimitiveArray GArrowPrimitiveArray;
-typedef struct _GArrowPrimitiveArrayClass GArrowPrimitiveArrayClass;
-
-/**
- * GArrowPrimitiveArray:
- *
- * It wraps `arrow::PrimitiveArray`.
- */
-struct _GArrowPrimitiveArray
-{
- /*< private >*/
- GArrowArray parent_instance;
-};
-
-struct _GArrowPrimitiveArrayClass
-{
- GArrowArrayClass parent_class;
-};
-
-GType garrow_primitive_array_get_type(void) G_GNUC_CONST;
-
-GArrowBuffer *garrow_primitive_array_get_buffer(GArrowPrimitiveArray *array);
-
-
-#define GARROW_TYPE_BOOLEAN_ARRAY \
- (garrow_boolean_array_get_type())
-#define GARROW_BOOLEAN_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_BOOLEAN_ARRAY, \
- GArrowBooleanArray))
-#define GARROW_BOOLEAN_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_BOOLEAN_ARRAY, \
- GArrowBooleanArrayClass))
-#define GARROW_IS_BOOLEAN_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_BOOLEAN_ARRAY))
-#define GARROW_IS_BOOLEAN_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_BOOLEAN_ARRAY))
-#define GARROW_BOOLEAN_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_BOOLEAN_ARRAY, \
- GArrowBooleanArrayClass))
-
-typedef struct _GArrowBooleanArray GArrowBooleanArray;
-typedef struct _GArrowBooleanArrayClass GArrowBooleanArrayClass;
-
-/**
- * GArrowBooleanArray:
- *
- * It wraps `arrow::BooleanArray`.
- */
-struct _GArrowBooleanArray
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowBooleanArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_boolean_array_get_type (void) G_GNUC_CONST;
-
-GArrowBooleanArray *garrow_boolean_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gboolean garrow_boolean_array_get_value (GArrowBooleanArray *array,
- gint64 i);
-gboolean *garrow_boolean_array_get_values(GArrowBooleanArray *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_INT8_ARRAY \
- (garrow_int8_array_get_type())
-#define GARROW_INT8_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_INT8_ARRAY, \
- GArrowInt8Array))
-#define GARROW_INT8_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_INT8_ARRAY, \
- GArrowInt8ArrayClass))
-#define GARROW_IS_INT8_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_INT8_ARRAY))
-#define GARROW_IS_INT8_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_INT8_ARRAY))
-#define GARROW_INT8_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_INT8_ARRAY, \
- GArrowInt8ArrayClass))
-
-typedef struct _GArrowInt8Array GArrowInt8Array;
-typedef struct _GArrowInt8ArrayClass GArrowInt8ArrayClass;
-
-/**
- * GArrowInt8Array:
- *
- * It wraps `arrow::Int8Array`.
- */
-struct _GArrowInt8Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowInt8ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_int8_array_get_type(void) G_GNUC_CONST;
-
-GArrowInt8Array *garrow_int8_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gint8 garrow_int8_array_get_value(GArrowInt8Array *array,
- gint64 i);
-const gint8 *garrow_int8_array_get_values(GArrowInt8Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_UINT8_ARRAY \
- (garrow_uint8_array_get_type())
-#define GARROW_UINT8_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_UINT8_ARRAY, \
- GArrowUInt8Array))
-#define GARROW_UINT8_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_UINT8_ARRAY, \
- GArrowUInt8ArrayClass))
-#define GARROW_IS_UINT8_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_UINT8_ARRAY))
-#define GARROW_IS_UINT8_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_UINT8_ARRAY))
-#define GARROW_UINT8_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_UINT8_ARRAY, \
- GArrowUInt8ArrayClass))
-
-typedef struct _GArrowUInt8Array GArrowUInt8Array;
-typedef struct _GArrowUInt8ArrayClass GArrowUInt8ArrayClass;
-
-/**
- * GArrowUInt8Array:
- *
- * It wraps `arrow::UInt8Array`.
- */
-struct _GArrowUInt8Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowUInt8ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_uint8_array_get_type(void) G_GNUC_CONST;
-
-GArrowUInt8Array *garrow_uint8_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-guint8 garrow_uint8_array_get_value(GArrowUInt8Array *array,
- gint64 i);
-const guint8 *garrow_uint8_array_get_values(GArrowUInt8Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_INT16_ARRAY \
- (garrow_int16_array_get_type())
-#define GARROW_INT16_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_INT16_ARRAY, \
- GArrowInt16Array))
-#define GARROW_INT16_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_INT16_ARRAY, \
- GArrowInt16ArrayClass))
-#define GARROW_IS_INT16_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_INT16_ARRAY))
-#define GARROW_IS_INT16_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_INT16_ARRAY))
-#define GARROW_INT16_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_INT16_ARRAY, \
- GArrowInt16ArrayClass))
-
-typedef struct _GArrowInt16Array GArrowInt16Array;
-typedef struct _GArrowInt16ArrayClass GArrowInt16ArrayClass;
-
-/**
- * GArrowInt16Array:
- *
- * It wraps `arrow::Int16Array`.
- */
-struct _GArrowInt16Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowInt16ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_int16_array_get_type(void) G_GNUC_CONST;
-
-GArrowInt16Array *garrow_int16_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gint16 garrow_int16_array_get_value(GArrowInt16Array *array,
- gint64 i);
-const gint16 *garrow_int16_array_get_values(GArrowInt16Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_UINT16_ARRAY \
- (garrow_uint16_array_get_type())
-#define GARROW_UINT16_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_UINT16_ARRAY, \
- GArrowUInt16Array))
-#define GARROW_UINT16_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_UINT16_ARRAY, \
- GArrowUInt16ArrayClass))
-#define GARROW_IS_UINT16_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_UINT16_ARRAY))
-#define GARROW_IS_UINT16_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_UINT16_ARRAY))
-#define GARROW_UINT16_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_UINT16_ARRAY, \
- GArrowUInt16ArrayClass))
-
-typedef struct _GArrowUInt16Array GArrowUInt16Array;
-typedef struct _GArrowUInt16ArrayClass GArrowUInt16ArrayClass;
-
-/**
- * GArrowUInt16Array:
- *
- * It wraps `arrow::UInt16Array`.
- */
-struct _GArrowUInt16Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowUInt16ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_uint16_array_get_type(void) G_GNUC_CONST;
-
-GArrowUInt16Array *garrow_uint16_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-guint16 garrow_uint16_array_get_value(GArrowUInt16Array *array,
- gint64 i);
-const guint16 *garrow_uint16_array_get_values(GArrowUInt16Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_INT32_ARRAY \
- (garrow_int32_array_get_type())
-#define GARROW_INT32_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_INT32_ARRAY, \
- GArrowInt32Array))
-#define GARROW_INT32_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_INT32_ARRAY, \
- GArrowInt32ArrayClass))
-#define GARROW_IS_INT32_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_INT32_ARRAY))
-#define GARROW_IS_INT32_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_INT32_ARRAY))
-#define GARROW_INT32_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_INT32_ARRAY, \
- GArrowInt32ArrayClass))
-
-typedef struct _GArrowInt32Array GArrowInt32Array;
-typedef struct _GArrowInt32ArrayClass GArrowInt32ArrayClass;
-
-/**
- * GArrowInt32Array:
- *
- * It wraps `arrow::Int32Array`.
- */
-struct _GArrowInt32Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowInt32ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_int32_array_get_type(void) G_GNUC_CONST;
-
-GArrowInt32Array *garrow_int32_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gint32 garrow_int32_array_get_value(GArrowInt32Array *array,
- gint64 i);
-const gint32 *garrow_int32_array_get_values(GArrowInt32Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_UINT32_ARRAY \
- (garrow_uint32_array_get_type())
-#define GARROW_UINT32_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_UINT32_ARRAY, \
- GArrowUInt32Array))
-#define GARROW_UINT32_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_UINT32_ARRAY, \
- GArrowUInt32ArrayClass))
-#define GARROW_IS_UINT32_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_UINT32_ARRAY))
-#define GARROW_IS_UINT32_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_UINT32_ARRAY))
-#define GARROW_UINT32_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_UINT32_ARRAY, \
- GArrowUInt32ArrayClass))
-
-typedef struct _GArrowUInt32Array GArrowUInt32Array;
-typedef struct _GArrowUInt32ArrayClass GArrowUInt32ArrayClass;
-
-/**
- * GArrowUInt32Array:
- *
- * It wraps `arrow::UInt32Array`.
- */
-struct _GArrowUInt32Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowUInt32ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_uint32_array_get_type(void) G_GNUC_CONST;
-
-GArrowUInt32Array *garrow_uint32_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-guint32 garrow_uint32_array_get_value(GArrowUInt32Array *array,
- gint64 i);
-const guint32 *garrow_uint32_array_get_values(GArrowUInt32Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_INT64_ARRAY \
- (garrow_int64_array_get_type())
-#define GARROW_INT64_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_INT64_ARRAY, \
- GArrowInt64Array))
-#define GARROW_INT64_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_INT64_ARRAY, \
- GArrowInt64ArrayClass))
-#define GARROW_IS_INT64_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_INT64_ARRAY))
-#define GARROW_IS_INT64_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_INT64_ARRAY))
-#define GARROW_INT64_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_INT64_ARRAY, \
- GArrowInt64ArrayClass))
-
-typedef struct _GArrowInt64Array GArrowInt64Array;
-typedef struct _GArrowInt64ArrayClass GArrowInt64ArrayClass;
-
-/**
- * GArrowInt64Array:
- *
- * It wraps `arrow::Int64Array`.
- */
-struct _GArrowInt64Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowInt64ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_int64_array_get_type(void) G_GNUC_CONST;
-
-GArrowInt64Array *garrow_int64_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gint64 garrow_int64_array_get_value(GArrowInt64Array *array,
- gint64 i);
-const gint64 *garrow_int64_array_get_values(GArrowInt64Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_UINT64_ARRAY \
- (garrow_uint64_array_get_type())
-#define GARROW_UINT64_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_UINT64_ARRAY, \
- GArrowUInt64Array))
-#define GARROW_UINT64_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_UINT64_ARRAY, \
- GArrowUInt64ArrayClass))
-#define GARROW_IS_UINT64_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_UINT64_ARRAY))
-#define GARROW_IS_UINT64_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_UINT64_ARRAY))
-#define GARROW_UINT64_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_UINT64_ARRAY, \
- GArrowUInt64ArrayClass))
-
-typedef struct _GArrowUInt64Array GArrowUInt64Array;
-typedef struct _GArrowUInt64ArrayClass GArrowUInt64ArrayClass;
-
-/**
- * GArrowUInt64Array:
- *
- * It wraps `arrow::UInt64Array`.
- */
-struct _GArrowUInt64Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowUInt64ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_uint64_array_get_type(void) G_GNUC_CONST;
-
-GArrowUInt64Array *garrow_uint64_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-guint64 garrow_uint64_array_get_value(GArrowUInt64Array *array,
- gint64 i);
-const guint64 *garrow_uint64_array_get_values(GArrowUInt64Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_FLOAT_ARRAY \
- (garrow_float_array_get_type())
-#define GARROW_FLOAT_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_FLOAT_ARRAY, \
- GArrowFloatArray))
-#define GARROW_FLOAT_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_FLOAT_ARRAY, \
- GArrowFloatArrayClass))
-#define GARROW_IS_FLOAT_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_FLOAT_ARRAY))
-#define GARROW_IS_FLOAT_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_FLOAT_ARRAY))
-#define GARROW_FLOAT_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_FLOAT_ARRAY, \
- GArrowFloatArrayClass))
-
-typedef struct _GArrowFloatArray GArrowFloatArray;
-typedef struct _GArrowFloatArrayClass GArrowFloatArrayClass;
-
-/**
- * GArrowFloatArray:
- *
- * It wraps `arrow::FloatArray`.
- */
-struct _GArrowFloatArray
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowFloatArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_float_array_get_type(void) G_GNUC_CONST;
-
-GArrowFloatArray *garrow_float_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gfloat garrow_float_array_get_value(GArrowFloatArray *array,
- gint64 i);
-const gfloat *garrow_float_array_get_values(GArrowFloatArray *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_DOUBLE_ARRAY \
- (garrow_double_array_get_type())
-#define GARROW_DOUBLE_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_DOUBLE_ARRAY, \
- GArrowDoubleArray))
-#define GARROW_DOUBLE_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_DOUBLE_ARRAY, \
- GArrowDoubleArrayClass))
-#define GARROW_IS_DOUBLE_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_DOUBLE_ARRAY))
-#define GARROW_IS_DOUBLE_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_DOUBLE_ARRAY))
-#define GARROW_DOUBLE_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_DOUBLE_ARRAY, \
- GArrowDoubleArrayClass))
-
-typedef struct _GArrowDoubleArray GArrowDoubleArray;
-typedef struct _GArrowDoubleArrayClass GArrowDoubleArrayClass;
-
-/**
- * GArrowDoubleArray:
- *
- * It wraps `arrow::DoubleArray`.
- */
-struct _GArrowDoubleArray
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowDoubleArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_double_array_get_type(void) G_GNUC_CONST;
-
-GArrowDoubleArray *garrow_double_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gdouble garrow_double_array_get_value(GArrowDoubleArray *array,
- gint64 i);
-const gdouble *garrow_double_array_get_values(GArrowDoubleArray *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_BINARY_ARRAY \
- (garrow_binary_array_get_type())
-#define GARROW_BINARY_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_BINARY_ARRAY, \
- GArrowBinaryArray))
-#define GARROW_BINARY_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_BINARY_ARRAY, \
- GArrowBinaryArrayClass))
-#define GARROW_IS_BINARY_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_BINARY_ARRAY))
-#define GARROW_IS_BINARY_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_BINARY_ARRAY))
-#define GARROW_BINARY_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_BINARY_ARRAY, \
- GArrowBinaryArrayClass))
-
-typedef struct _GArrowBinaryArray GArrowBinaryArray;
-typedef struct _GArrowBinaryArrayClass GArrowBinaryArrayClass;
-
-/**
- * GArrowBinaryArray:
- *
- * It wraps `arrow::BinaryArray`.
- */
-struct _GArrowBinaryArray
-{
- /*< private >*/
- GArrowArray parent_instance;
-};
-
-struct _GArrowBinaryArrayClass
-{
- GArrowArrayClass parent_class;
-};
-
-GType garrow_binary_array_get_type(void) G_GNUC_CONST;
-
-GArrowBinaryArray *garrow_binary_array_new(gint64 length,
- GArrowBuffer *value_offsets,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-GBytes *garrow_binary_array_get_value(GArrowBinaryArray *array,
- gint64 i);
-GArrowBuffer *garrow_binary_array_get_buffer(GArrowBinaryArray *array);
-GArrowBuffer *garrow_binary_array_get_offsets_buffer(GArrowBinaryArray *array);
-
-#define GARROW_TYPE_STRING_ARRAY \
- (garrow_string_array_get_type())
-#define GARROW_STRING_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_STRING_ARRAY, \
- GArrowStringArray))
-#define GARROW_STRING_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_STRING_ARRAY, \
- GArrowStringArrayClass))
-#define GARROW_IS_STRING_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_STRING_ARRAY))
-#define GARROW_IS_STRING_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_STRING_ARRAY))
-#define GARROW_STRING_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_STRING_ARRAY, \
- GArrowStringArrayClass))
-
-typedef struct _GArrowStringArray GArrowStringArray;
-typedef struct _GArrowStringArrayClass GArrowStringArrayClass;
-
-/**
- * GArrowStringArray:
- *
- * It wraps `arrow::StringArray`.
- */
-struct _GArrowStringArray
-{
- /*< private >*/
- GArrowBinaryArray parent_instance;
-};
-
-struct _GArrowStringArrayClass
-{
- GArrowBinaryArrayClass parent_class;
-};
-
-GType garrow_string_array_get_type(void) G_GNUC_CONST;
-
-GArrowStringArray *garrow_string_array_new(gint64 length,
- GArrowBuffer *value_offsets,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gchar *garrow_string_array_get_string(GArrowStringArray *array,
- gint64 i);
-
-
-#define GARROW_TYPE_DATE32_ARRAY \
- (garrow_date32_array_get_type())
-#define GARROW_DATE32_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_DATE32_ARRAY, \
- GArrowDate32Array))
-#define GARROW_DATE32_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_DATE32_ARRAY, \
- GArrowDate32ArrayClass))
-#define GARROW_IS_DATE32_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_DATE32_ARRAY))
-#define GARROW_IS_DATE32_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_DATE32_ARRAY))
-#define GARROW_DATE32_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_DATE32_ARRAY, \
- GArrowDate32ArrayClass))
-
-typedef struct _GArrowDate32Array GArrowDate32Array;
-typedef struct _GArrowDate32ArrayClass GArrowDate32ArrayClass;
-
-/**
- * GArrowDate32Array:
- *
- * It wraps `arrow::Date32Array`.
- */
-struct _GArrowDate32Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowDate32ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_date32_array_get_type(void) G_GNUC_CONST;
-
-GArrowDate32Array *garrow_date32_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gint32 garrow_date32_array_get_value(GArrowDate32Array *array,
- gint64 i);
-const gint32 *garrow_date32_array_get_values(GArrowDate32Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_DATE64_ARRAY \
- (garrow_date64_array_get_type())
-#define GARROW_DATE64_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_DATE64_ARRAY, \
- GArrowDate64Array))
-#define GARROW_DATE64_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_DATE64_ARRAY, \
- GArrowDate64ArrayClass))
-#define GARROW_IS_DATE64_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_DATE64_ARRAY))
-#define GARROW_IS_DATE64_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_DATE64_ARRAY))
-#define GARROW_DATE64_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_DATE64_ARRAY, \
- GArrowDate64ArrayClass))
-
-typedef struct _GArrowDate64Array GArrowDate64Array;
-typedef struct _GArrowDate64ArrayClass GArrowDate64ArrayClass;
-
-/**
- * GArrowDate64Array:
- *
- * It wraps `arrow::Date64Array`.
- */
-struct _GArrowDate64Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowDate64ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_date64_array_get_type(void) G_GNUC_CONST;
-
-GArrowDate64Array *garrow_date64_array_new(gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gint64 garrow_date64_array_get_value(GArrowDate64Array *array,
- gint64 i);
-const gint64 *garrow_date64_array_get_values(GArrowDate64Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_TIMESTAMP_ARRAY \
- (garrow_timestamp_array_get_type())
-#define GARROW_TIMESTAMP_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_TIMESTAMP_ARRAY, \
- GArrowTimestampArray))
-#define GARROW_TIMESTAMP_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_TIMESTAMP_ARRAY, \
- GArrowTimestampArrayClass))
-#define GARROW_IS_TIMESTAMP_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_TIMESTAMP_ARRAY))
-#define GARROW_IS_TIMESTAMP_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_TIMESTAMP_ARRAY))
-#define GARROW_TIMESTAMP_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_TIMESTAMP_ARRAY, \
- GArrowTimestampArrayClass))
-
-typedef struct _GArrowTimestampArray GArrowTimestampArray;
-typedef struct _GArrowTimestampArrayClass GArrowTimestampArrayClass;
-
-/**
- * GArrowTimestampArray:
- *
- * It wraps `arrow::TimestampArray`.
- */
-struct _GArrowTimestampArray
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowTimestampArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_timestamp_array_get_type(void) G_GNUC_CONST;
-
-GArrowTimestampArray *garrow_timestamp_array_new(GArrowTimestampDataType *data_type,
- gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gint64 garrow_timestamp_array_get_value(GArrowTimestampArray *array,
- gint64 i);
-const gint64 *garrow_timestamp_array_get_values(GArrowTimestampArray *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_TIME32_ARRAY \
- (garrow_time32_array_get_type())
-#define GARROW_TIME32_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_TIME32_ARRAY, \
- GArrowTime32Array))
-#define GARROW_TIME32_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_TIME32_ARRAY, \
- GArrowTime32ArrayClass))
-#define GARROW_IS_TIME32_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_TIME32_ARRAY))
-#define GARROW_IS_TIME32_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_TIME32_ARRAY))
-#define GARROW_TIME32_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_TIME32_ARRAY, \
- GArrowTime32ArrayClass))
-
-typedef struct _GArrowTime32Array GArrowTime32Array;
-typedef struct _GArrowTime32ArrayClass GArrowTime32ArrayClass;
-
-/**
- * GArrowTime32Array:
- *
- * It wraps `arrow::Time32Array`.
- */
-struct _GArrowTime32Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowTime32ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_time32_array_get_type(void) G_GNUC_CONST;
-
-GArrowTime32Array *garrow_time32_array_new(GArrowTime32DataType *data_type,
- gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gint32 garrow_time32_array_get_value(GArrowTime32Array *array,
- gint64 i);
-const gint32 *garrow_time32_array_get_values(GArrowTime32Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_TIME64_ARRAY \
- (garrow_time64_array_get_type())
-#define GARROW_TIME64_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_TIME64_ARRAY, \
- GArrowTime64Array))
-#define GARROW_TIME64_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_TIME64_ARRAY, \
- GArrowTime64ArrayClass))
-#define GARROW_IS_TIME64_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_TIME64_ARRAY))
-#define GARROW_IS_TIME64_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_TIME64_ARRAY))
-#define GARROW_TIME64_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_TIME64_ARRAY, \
- GArrowTime64ArrayClass))
-
-typedef struct _GArrowTime64Array GArrowTime64Array;
-typedef struct _GArrowTime64ArrayClass GArrowTime64ArrayClass;
-
-/**
- * GArrowTime64Array:
- *
- * It wraps `arrow::Time64Array`.
- */
-struct _GArrowTime64Array
-{
- /*< private >*/
- GArrowPrimitiveArray parent_instance;
-};
-
-struct _GArrowTime64ArrayClass
-{
- GArrowPrimitiveArrayClass parent_class;
-};
-
-GType garrow_time64_array_get_type(void) G_GNUC_CONST;
-
-GArrowTime64Array *garrow_time64_array_new(GArrowTime64DataType *data_type,
- gint64 length,
- GArrowBuffer *data,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-gint64 garrow_time64_array_get_value(GArrowTime64Array *array,
- gint64 i);
-const gint64 *garrow_time64_array_get_values(GArrowTime64Array *array,
- gint64 *length);
-
-
-#define GARROW_TYPE_LIST_ARRAY \
- (garrow_list_array_get_type())
-#define GARROW_LIST_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_LIST_ARRAY, \
- GArrowListArray))
-#define GARROW_LIST_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_LIST_ARRAY, \
- GArrowListArrayClass))
-#define GARROW_IS_LIST_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_LIST_ARRAY))
-#define GARROW_IS_LIST_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_LIST_ARRAY))
-#define GARROW_LIST_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_LIST_ARRAY, \
- GArrowListArrayClass))
-
-typedef struct _GArrowListArray GArrowListArray;
-typedef struct _GArrowListArrayClass GArrowListArrayClass;
-
-/**
- * GArrowListArray:
- *
- * It wraps `arrow::ListArray`.
- */
-struct _GArrowListArray
-{
- /*< private >*/
- GArrowArray parent_instance;
-};
-
-struct _GArrowListArrayClass
-{
- GArrowArrayClass parent_class;
-};
-
-GType garrow_list_array_get_type(void) G_GNUC_CONST;
-
-GArrowListArray *garrow_list_array_new(gint64 length,
- GArrowBuffer *value_offsets,
- GArrowArray *values,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-GArrowDataType *garrow_list_array_get_value_type(GArrowListArray *array);
-GArrowArray *garrow_list_array_get_value(GArrowListArray *array,
- gint64 i);
-
-
-#define GARROW_TYPE_STRUCT_ARRAY \
- (garrow_struct_array_get_type())
-#define GARROW_STRUCT_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_STRUCT_ARRAY, \
- GArrowStructArray))
-#define GARROW_STRUCT_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_STRUCT_ARRAY, \
- GArrowStructArrayClass))
-#define GARROW_IS_STRUCT_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_STRUCT_ARRAY))
-#define GARROW_IS_STRUCT_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_STRUCT_ARRAY))
-#define GARROW_STRUCT_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_STRUCT_ARRAY, \
- GArrowStructArrayClass))
-
-typedef struct _GArrowStructArray GArrowStructArray;
-typedef struct _GArrowStructArrayClass GArrowStructArrayClass;
-
-/**
- * GArrowStructArray:
- *
- * It wraps `arrow::StructArray`.
- */
-struct _GArrowStructArray
-{
- /*< private >*/
- GArrowArray parent_instance;
-};
-
-struct _GArrowStructArrayClass
-{
- GArrowArrayClass parent_class;
-};
-
-GType garrow_struct_array_get_type(void) G_GNUC_CONST;
-
-GArrowStructArray *garrow_struct_array_new(GArrowDataType *data_type,
- gint64 length,
- GList *children,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-GArrowArray *garrow_struct_array_get_field(GArrowStructArray *array,
- gint i);
-GList *garrow_struct_array_get_fields(GArrowStructArray *array);
-
-G_END_DECLS
+#include <arrow-glib/basic-array.h>
+#include <arrow-glib/composite-array.h>
diff --git a/c_glib/arrow-glib/array.hpp b/c_glib/arrow-glib/array.hpp
index d2dff22..e575c42 100644
--- a/c_glib/arrow-glib/array.hpp
+++ b/c_glib/arrow-glib/array.hpp
@@ -19,9 +19,5 @@
#pragma once
-#include <arrow/api.h>
-
-#include <arrow-glib/array.h>
-
-GArrowArray *garrow_array_new_raw(std::shared_ptr<arrow::Array> *arrow_array);
-std::shared_ptr<arrow::Array> garrow_array_get_raw(GArrowArray *array);
+#include <arrow-glib/basic-array.hpp>
+#include <arrow-glib/composite-array.h>
diff --git a/c_glib/arrow-glib/array.cpp b/c_glib/arrow-glib/basic-array.cpp
similarity index 90%
rename from c_glib/arrow-glib/array.cpp
rename to c_glib/arrow-glib/basic-array.cpp
index 4945ca3..0698a04 100644
--- a/c_glib/arrow-glib/array.cpp
+++ b/c_glib/arrow-glib/basic-array.cpp
@@ -24,7 +24,7 @@
#include <arrow-glib/array.hpp>
#include <arrow-glib/buffer.hpp>
#include <arrow-glib/compute.hpp>
-#include <arrow-glib/data-type.hpp>
+#include <arrow-glib/basic-data-type.hpp>
#include <arrow-glib/error.hpp>
#include <arrow-glib/type.hpp>
@@ -86,9 +86,9 @@ garrow_primitive_array_new(GArrowDataType *data_type,
G_BEGIN_DECLS
/**
- * SECTION: array
- * @section_id: array-classes
- * @title: Array classes
+ * SECTION: basic-array
+ * @section_id: basic-array-classes
+ * @title: Basic array classes
* @include: arrow-glib/arrow-glib.h
*
* #GArrowArray is a base class for all array classes such as
@@ -194,15 +194,6 @@ G_BEGIN_DECLS
* nanoseconds since midnight in 64-bit signed integer array. It can
* store zero or more time data. If you don't have Arrow format data,
* you need to use #GArrowTime64ArrayBuilder to create a new array.
- *
- * #GArrowListArray is a class for list array. It can store zero or
- * more list data. If you don't have Arrow format data, you need to
- * use #GArrowListArrayBuilder to create a new array.
- *
- * #GArrowStructArray is a class for struct array. It can store zero
- * or more structs. One struct has zero or more fields. If you don't
- * have Arrow format data, you need to use #GArrowStructArrayBuilder
- * to create a new array.
*/
typedef struct GArrowArrayPrivate_ {
@@ -2028,195 +2019,6 @@ garrow_time64_array_get_values(GArrowTime64Array *array,
return reinterpret_cast<const gint64 *>(values);
}
-
-G_DEFINE_TYPE(GArrowListArray, \
- garrow_list_array, \
- GARROW_TYPE_ARRAY)
-
-static void
-garrow_list_array_init(GArrowListArray *object)
-{
-}
-
-static void
-garrow_list_array_class_init(GArrowListArrayClass *klass)
-{
-}
-
-/**
- * garrow_list_array_new:
- * @length: The number of elements.
- * @value_offsets: The offsets of @values in Arrow format.
- * @values: The values as #GArrowArray.
- * @null_bitmap: (nullable): The bitmap that shows null elements. The
- * N-th element is null when the N-th bit is 0, not null otherwise.
- * If the array has no null elements, the bitmap must be %NULL and
- * @n_nulls is 0.
- * @n_nulls: The number of null elements. If -1 is specified, the
- * number of nulls are computed from @null_bitmap.
- *
- * Returns: A newly created #GArrowListArray.
- *
- * Since: 0.4.0
- */
-GArrowListArray *
-garrow_list_array_new(gint64 length,
- GArrowBuffer *value_offsets,
- GArrowArray *values,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls)
-{
- const auto arrow_value_offsets = garrow_buffer_get_raw(value_offsets);
- const auto arrow_values = garrow_array_get_raw(values);
- const auto arrow_bitmap = garrow_buffer_get_raw(null_bitmap);
- auto arrow_data_type = arrow::list(arrow_values->type());
- auto arrow_list_array =
- std::make_shared<arrow::ListArray>(arrow_data_type,
- length,
- arrow_value_offsets,
- arrow_values,
- arrow_bitmap,
- n_nulls);
- auto arrow_array =
- std::static_pointer_cast<arrow::Array>(arrow_list_array);
- return GARROW_LIST_ARRAY(garrow_array_new_raw(&arrow_array));
-}
-
-/**
- * garrow_list_array_get_value_type:
- * @array: A #GArrowListArray.
- *
- * Returns: (transfer full): The data type of value in each list.
- */
-GArrowDataType *
-garrow_list_array_get_value_type(GArrowListArray *array)
-{
- auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
- auto arrow_list_array =
- static_cast<arrow::ListArray *>(arrow_array.get());
- auto arrow_value_type = arrow_list_array->value_type();
- return garrow_data_type_new_raw(&arrow_value_type);
-}
-
-/**
- * garrow_list_array_get_value:
- * @array: A #GArrowListArray.
- * @i: The index of the target value.
- *
- * Returns: (transfer full): The i-th list.
- */
-GArrowArray *
-garrow_list_array_get_value(GArrowListArray *array,
- gint64 i)
-{
- auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
- auto arrow_list_array =
- static_cast<arrow::ListArray *>(arrow_array.get());
- auto arrow_list =
- arrow_list_array->values()->Slice(arrow_list_array->value_offset(i),
- arrow_list_array->value_length(i));
- return garrow_array_new_raw(&arrow_list);
-}
-
-
-G_DEFINE_TYPE(GArrowStructArray, \
- garrow_struct_array, \
- GARROW_TYPE_ARRAY)
-
-static void
-garrow_struct_array_init(GArrowStructArray *object)
-{
-}
-
-static void
-garrow_struct_array_class_init(GArrowStructArrayClass *klass)
-{
-}
-
-/**
- * garrow_struct_array_new:
- * @data_type: The data type of the struct.
- * @length: The number of elements.
- * @children: (element-type GArrowArray): The arrays for each field
- * as #GList of #GArrowArray.
- * @null_bitmap: (nullable): The bitmap that shows null elements. The
- * N-th element is null when the N-th bit is 0, not null otherwise.
- * If the array has no null elements, the bitmap must be %NULL and
- * @n_nulls is 0.
- * @n_nulls: The number of null elements. If -1 is specified, the
- * number of nulls are computed from @null_bitmap.
- *
- * Returns: A newly created #GArrowStructArray.
- *
- * Since: 0.4.0
- */
-GArrowStructArray *
-garrow_struct_array_new(GArrowDataType *data_type,
- gint64 length,
- GList *children,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls)
-{
- const auto arrow_data_type = garrow_data_type_get_raw(data_type);
- std::vector<std::shared_ptr<arrow::Array>> arrow_children;
- for (GList *node = children; node; node = node->next) {
- GArrowArray *child = GARROW_ARRAY(node->data);
- arrow_children.push_back(garrow_array_get_raw(child));
- }
- const auto arrow_bitmap = garrow_buffer_get_raw(null_bitmap);
- auto arrow_struct_array =
- std::make_shared<arrow::StructArray>(arrow_data_type,
- length,
- arrow_children,
- arrow_bitmap,
- n_nulls);
- auto arrow_array =
- std::static_pointer_cast<arrow::Array>(arrow_struct_array);
- return GARROW_STRUCT_ARRAY(garrow_array_new_raw(&arrow_array));
-}
-
-/**
- * garrow_struct_array_get_field
- * @array: A #GArrowStructArray.
- * @i: The index of the field in the struct.
- *
- * Returns: (transfer full): The i-th field.
- */
-GArrowArray *
-garrow_struct_array_get_field(GArrowStructArray *array,
- gint i)
-{
- auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
- auto arrow_struct_array =
- static_cast<arrow::StructArray *>(arrow_array.get());
- auto arrow_field = arrow_struct_array->field(i);
- return garrow_array_new_raw(&arrow_field);
-}
-
-/**
- * garrow_struct_array_get_fields
- * @array: A #GArrowStructArray.
- *
- * Returns: (element-type GArrowArray) (transfer full):
- * The fields in the struct.
- */
-GList *
-garrow_struct_array_get_fields(GArrowStructArray *array)
-{
- const auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
- const auto arrow_struct_array =
- static_cast<const arrow::StructArray *>(arrow_array.get());
-
- GList *fields = NULL;
- for (int i = 0; i < arrow_struct_array->num_fields(); ++i) {
- auto arrow_field = arrow_struct_array->field(i);
- GArrowArray *field = garrow_array_new_raw(&arrow_field);
- fields = g_list_prepend(fields, field);
- }
-
- return g_list_reverse(fields);
-}
-
G_END_DECLS
GArrowArray *
diff --git a/c_glib/arrow-glib/array.h b/c_glib/arrow-glib/basic-array.h
similarity index 89%
copy from c_glib/arrow-glib/array.h
copy to c_glib/arrow-glib/basic-array.h
index e988a8a..c01a04f 100644
--- a/c_glib/arrow-glib/array.h
+++ b/c_glib/arrow-glib/basic-array.h
@@ -21,44 +21,21 @@
#include <arrow-glib/buffer.h>
#include <arrow-glib/compute.h>
-#include <arrow-glib/data-type.h>
+#include <arrow-glib/basic-data-type.h>
G_BEGIN_DECLS
-#define GARROW_TYPE_ARRAY \
- (garrow_array_get_type())
-#define GARROW_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), GARROW_TYPE_ARRAY, GArrowArray))
-#define GARROW_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), GARROW_TYPE_ARRAY, GArrowArrayClass))
-#define GARROW_IS_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), GARROW_TYPE_ARRAY))
-#define GARROW_IS_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), GARROW_TYPE_ARRAY))
-#define GARROW_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), GARROW_TYPE_ARRAY, GArrowArrayClass))
-
-typedef struct _GArrowArray GArrowArray;
-typedef struct _GArrowArrayClass GArrowArrayClass;
-
-/**
- * GArrowArray:
- *
- * It wraps `arrow::Array`.
- */
-struct _GArrowArray
-{
- /*< private >*/
- GObject parent_instance;
-};
-
+#define GARROW_TYPE_ARRAY (garrow_array_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowArray,
+ garrow_array,
+ GARROW,
+ ARRAY,
+ GObject)
struct _GArrowArrayClass
{
GObjectClass parent_class;
};
-GType garrow_array_get_type (void) G_GNUC_CONST;
-
gboolean garrow_array_equal (GArrowArray *array,
GArrowArray *other_array);
gboolean garrow_array_equal_approx(GArrowArray *array,
@@ -1135,110 +1112,4 @@ gint64 garrow_time64_array_get_value(GArrowTime64Array *array,
const gint64 *garrow_time64_array_get_values(GArrowTime64Array *array,
gint64 *length);
-
-#define GARROW_TYPE_LIST_ARRAY \
- (garrow_list_array_get_type())
-#define GARROW_LIST_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_LIST_ARRAY, \
- GArrowListArray))
-#define GARROW_LIST_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_LIST_ARRAY, \
- GArrowListArrayClass))
-#define GARROW_IS_LIST_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_LIST_ARRAY))
-#define GARROW_IS_LIST_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_LIST_ARRAY))
-#define GARROW_LIST_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_LIST_ARRAY, \
- GArrowListArrayClass))
-
-typedef struct _GArrowListArray GArrowListArray;
-typedef struct _GArrowListArrayClass GArrowListArrayClass;
-
-/**
- * GArrowListArray:
- *
- * It wraps `arrow::ListArray`.
- */
-struct _GArrowListArray
-{
- /*< private >*/
- GArrowArray parent_instance;
-};
-
-struct _GArrowListArrayClass
-{
- GArrowArrayClass parent_class;
-};
-
-GType garrow_list_array_get_type(void) G_GNUC_CONST;
-
-GArrowListArray *garrow_list_array_new(gint64 length,
- GArrowBuffer *value_offsets,
- GArrowArray *values,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-GArrowDataType *garrow_list_array_get_value_type(GArrowListArray *array);
-GArrowArray *garrow_list_array_get_value(GArrowListArray *array,
- gint64 i);
-
-
-#define GARROW_TYPE_STRUCT_ARRAY \
- (garrow_struct_array_get_type())
-#define GARROW_STRUCT_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_STRUCT_ARRAY, \
- GArrowStructArray))
-#define GARROW_STRUCT_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_STRUCT_ARRAY, \
- GArrowStructArrayClass))
-#define GARROW_IS_STRUCT_ARRAY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_STRUCT_ARRAY))
-#define GARROW_IS_STRUCT_ARRAY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_STRUCT_ARRAY))
-#define GARROW_STRUCT_ARRAY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_STRUCT_ARRAY, \
- GArrowStructArrayClass))
-
-typedef struct _GArrowStructArray GArrowStructArray;
-typedef struct _GArrowStructArrayClass GArrowStructArrayClass;
-
-/**
- * GArrowStructArray:
- *
- * It wraps `arrow::StructArray`.
- */
-struct _GArrowStructArray
-{
- /*< private >*/
- GArrowArray parent_instance;
-};
-
-struct _GArrowStructArrayClass
-{
- GArrowArrayClass parent_class;
-};
-
-GType garrow_struct_array_get_type(void) G_GNUC_CONST;
-
-GArrowStructArray *garrow_struct_array_new(GArrowDataType *data_type,
- gint64 length,
- GList *children,
- GArrowBuffer *null_bitmap,
- gint64 n_nulls);
-
-GArrowArray *garrow_struct_array_get_field(GArrowStructArray *array,
- gint i);
-GList *garrow_struct_array_get_fields(GArrowStructArray *array);
-
G_END_DECLS
diff --git a/c_glib/arrow-glib/array.hpp b/c_glib/arrow-glib/basic-array.hpp
similarity index 96%
copy from c_glib/arrow-glib/array.hpp
copy to c_glib/arrow-glib/basic-array.hpp
index d2dff22..52b94a5 100644
--- a/c_glib/arrow-glib/array.hpp
+++ b/c_glib/arrow-glib/basic-array.hpp
@@ -21,7 +21,7 @@
#include <arrow/api.h>
-#include <arrow-glib/array.h>
+#include <arrow-glib/basic-array.h>
GArrowArray *garrow_array_new_raw(std::shared_ptr<arrow::Array> *arrow_array);
std::shared_ptr<arrow::Array> garrow_array_get_raw(GArrowArray *array);
diff --git a/c_glib/arrow-glib/basic-data-type.cpp b/c_glib/arrow-glib/basic-data-type.cpp
index 62f8a7e..dcafe06 100644
--- a/c_glib/arrow-glib/basic-data-type.cpp
+++ b/c_glib/arrow-glib/basic-data-type.cpp
@@ -220,6 +220,37 @@ garrow_data_type_get_id(GArrowDataType *data_type)
}
+G_DEFINE_ABSTRACT_TYPE(GArrowFixedWidthDataType, \
+ garrow_fixed_width_data_type, \
+ GARROW_TYPE_DATA_TYPE)
+
+static void
+garrow_fixed_width_data_type_init(GArrowFixedWidthDataType *object)
+{
+}
+
+static void
+garrow_fixed_width_data_type_class_init(GArrowFixedWidthDataTypeClass *klass)
+{
+}
+
+/**
+ * garrow_fixed_width_data_type_get_id:
+ * @data_type: A #GArrowFixedWidthDataType.
+ *
+ * Returns: The number of bits for one data.
+ */
+gint
+garrow_fixed_width_data_type_get_bit_width(GArrowFixedWidthDataType *data_type)
+{
+ const auto arrow_data_type =
+ garrow_data_type_get_raw(GARROW_DATA_TYPE(data_type));
+ const auto arrow_fixed_width_type =
+ std::static_pointer_cast<arrow::FixedWidthType>(arrow_data_type);
+ return arrow_fixed_width_type->bit_width();
+}
+
+
G_DEFINE_TYPE(GArrowNullDataType, \
garrow_null_data_type, \
GARROW_TYPE_DATA_TYPE)
@@ -254,7 +285,7 @@ garrow_null_data_type_new(void)
G_DEFINE_TYPE(GArrowBooleanDataType, \
garrow_boolean_data_type, \
- GARROW_TYPE_DATA_TYPE)
+ GARROW_TYPE_FIXED_WIDTH_DATA_TYPE)
static void
garrow_boolean_data_type_init(GArrowBooleanDataType *object)
@@ -1015,12 +1046,15 @@ garrow_data_type_new_raw(std::shared_ptr<arrow::DataType> *arrow_data_type)
case arrow::Type::type::STRUCT:
type = GARROW_TYPE_STRUCT_DATA_TYPE;
break;
+ case arrow::Type::type::DICTIONARY:
+ type = GARROW_TYPE_DICTIONARY_DATA_TYPE;
+ break;
default:
type = GARROW_TYPE_DATA_TYPE;
break;
}
data_type = GARROW_DATA_TYPE(g_object_new(type,
- "data_type", arrow_data_type,
+ "data-type", arrow_data_type,
NULL));
return data_type;
}
diff --git a/c_glib/arrow-glib/basic-data-type.h b/c_glib/arrow-glib/basic-data-type.h
index d3d52c6..bc0192f 100644
--- a/c_glib/arrow-glib/basic-data-type.h
+++ b/c_glib/arrow-glib/basic-data-type.h
@@ -19,57 +19,45 @@
#pragma once
+#include <arrow-glib/gobject-type.h>
#include <arrow-glib/type.h>
G_BEGIN_DECLS
-#define GARROW_TYPE_DATA_TYPE \
- (garrow_data_type_get_type())
-#define GARROW_DATA_TYPE(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_DATA_TYPE, \
- GArrowDataType))
-#define GARROW_DATA_TYPE_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_DATA_TYPE, \
- GArrowDataTypeClass))
-#define GARROW_IS_DATA_TYPE(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_DATA_TYPE))
-#define GARROW_IS_DATA_TYPE_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_DATA_TYPE))
-#define GARROW_DATA_TYPE_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_DATA_TYPE, \
- GArrowDataTypeClass))
-
-typedef struct _GArrowDataType GArrowDataType;
-typedef struct _GArrowDataTypeClass GArrowDataTypeClass;
-
-/**
- * GArrowDataType:
- *
- * It wraps `arrow::DataType`.
- */
-struct _GArrowDataType
-{
- /*< private >*/
- GObject parent_instance;
-};
-
+#define GARROW_TYPE_DATA_TYPE (garrow_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowDataType,
+ garrow_data_type,
+ GARROW,
+ DATA_TYPE,
+ GObject)
struct _GArrowDataTypeClass
{
GObjectClass parent_class;
};
-GType garrow_data_type_get_type (void) G_GNUC_CONST;
gboolean garrow_data_type_equal (GArrowDataType *data_type,
GArrowDataType *other_data_type);
gchar *garrow_data_type_to_string (GArrowDataType *data_type);
GArrowType garrow_data_type_get_id (GArrowDataType *data_type);
+#define GARROW_TYPE_FIXED_WIDTH_DATA_TYPE (garrow_fixed_width_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowFixedWidthDataType,
+ garrow_fixed_width_data_type,
+ GARROW,
+ FIXED_WIDTH_DATA_TYPE,
+ GArrowDataType)
+struct _GArrowFixedWidthDataTypeClass
+{
+ GArrowDataTypeClass parent_class;
+};
+
+gint garrow_fixed_width_data_type_get_bit_width(GArrowFixedWidthDataType *data_type);
+/* TODO:
+GList *garrow_fixed_width_data_type_get_buffer_layout(GArrowFixedWidthDataType *data_type);
+*/
+
+
#define GARROW_TYPE_NULL_DATA_TYPE \
(garrow_null_data_type_get_type())
#define GARROW_NULL_DATA_TYPE(obj) \
@@ -114,47 +102,17 @@ GType garrow_null_data_type_get_type (void) G_GNUC_CONST;
GArrowNullDataType *garrow_null_data_type_new (void);
-#define GARROW_TYPE_BOOLEAN_DATA_TYPE \
- (garrow_boolean_data_type_get_type())
-#define GARROW_BOOLEAN_DATA_TYPE(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), \
- GARROW_TYPE_BOOLEAN_DATA_TYPE, \
- GArrowBooleanDataType))
-#define GARROW_BOOLEAN_DATA_TYPE_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), \
- GARROW_TYPE_BOOLEAN_DATA_TYPE, \
- GArrowBooleanDataTypeClass))
-#define GARROW_IS_BOOLEAN_DATA_TYPE(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
- GARROW_TYPE_BOOLEAN_DATA_TYPE))
-#define GARROW_IS_BOOLEAN_DATA_TYPE_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), \
- GARROW_TYPE_BOOLEAN_DATA_TYPE))
-#define GARROW_BOOLEAN_DATA_TYPE_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), \
- GARROW_TYPE_BOOLEAN_DATA_TYPE, \
- GArrowBooleanDataTypeClass))
-
-typedef struct _GArrowBooleanDataType GArrowBooleanDataType;
-typedef struct _GArrowBooleanDataTypeClass GArrowBooleanDataTypeClass;
-
-/**
- * GArrowBooleanDataType:
- *
- * It wraps `arrow::BooleanType`.
- */
-struct _GArrowBooleanDataType
-{
- /*< private >*/
- GArrowDataType parent_instance;
-};
-
+#define GARROW_TYPE_BOOLEAN_DATA_TYPE (garrow_boolean_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowBooleanDataType,
+ garrow_boolean_data_type,
+ GARROW,
+ BOOLEAN_DATA_TYPE,
+ GArrowFixedWidthDataType)
struct _GArrowBooleanDataTypeClass
{
- GArrowDataTypeClass parent_class;
+ GArrowFixedWidthDataTypeClass parent_class;
};
-GType garrow_boolean_data_type_get_type (void) G_GNUC_CONST;
GArrowBooleanDataType *garrow_boolean_data_type_new (void);
diff --git a/c_glib/arrow-glib/composite-array.cpp b/c_glib/arrow-glib/composite-array.cpp
new file mode 100644
index 0000000..445103d
--- /dev/null
+++ b/c_glib/arrow-glib/composite-array.cpp
@@ -0,0 +1,237 @@
+/*
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <arrow-glib/array.hpp>
+#include <arrow-glib/buffer.hpp>
+#include <arrow-glib/compute.hpp>
+#include <arrow-glib/data-type.hpp>
+#include <arrow-glib/error.hpp>
+#include <arrow-glib/type.hpp>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: composite-array
+ * @section_id: composite-array-classes
+ * @title: Composite array classes
+ * @include: arrow-glib/arrow-glib.h
+ *
+ * #GArrowListArray is a class for list array. It can store zero or
+ * more list data. If you don't have Arrow format data, you need to
+ * use #GArrowListArrayBuilder to create a new array.
+ *
+ * #GArrowStructArray is a class for struct array. It can store zero
+ * or more structs. One struct has zero or more fields. If you don't
+ * have Arrow format data, you need to use #GArrowStructArrayBuilder
+ * to create a new array.
+ */
+
+G_DEFINE_TYPE(GArrowListArray, \
+ garrow_list_array, \
+ GARROW_TYPE_ARRAY)
+
+static void
+garrow_list_array_init(GArrowListArray *object)
+{
+}
+
+static void
+garrow_list_array_class_init(GArrowListArrayClass *klass)
+{
+}
+
+/**
+ * garrow_list_array_new:
+ * @length: The number of elements.
+ * @value_offsets: The offsets of @values in Arrow format.
+ * @values: The values as #GArrowArray.
+ * @null_bitmap: (nullable): The bitmap that shows null elements. The
+ * N-th element is null when the N-th bit is 0, not null otherwise.
+ * If the array has no null elements, the bitmap must be %NULL and
+ * @n_nulls is 0.
+ * @n_nulls: The number of null elements. If -1 is specified, the
+ * number of nulls are computed from @null_bitmap.
+ *
+ * Returns: A newly created #GArrowListArray.
+ *
+ * Since: 0.4.0
+ */
+GArrowListArray *
+garrow_list_array_new(gint64 length,
+ GArrowBuffer *value_offsets,
+ GArrowArray *values,
+ GArrowBuffer *null_bitmap,
+ gint64 n_nulls)
+{
+ const auto arrow_value_offsets = garrow_buffer_get_raw(value_offsets);
+ const auto arrow_values = garrow_array_get_raw(values);
+ const auto arrow_bitmap = garrow_buffer_get_raw(null_bitmap);
+ auto arrow_data_type = arrow::list(arrow_values->type());
+ auto arrow_list_array =
+ std::make_shared<arrow::ListArray>(arrow_data_type,
+ length,
+ arrow_value_offsets,
+ arrow_values,
+ arrow_bitmap,
+ n_nulls);
+ auto arrow_array =
+ std::static_pointer_cast<arrow::Array>(arrow_list_array);
+ return GARROW_LIST_ARRAY(garrow_array_new_raw(&arrow_array));
+}
+
+/**
+ * garrow_list_array_get_value_type:
+ * @array: A #GArrowListArray.
+ *
+ * Returns: (transfer full): The data type of value in each list.
+ */
+GArrowDataType *
+garrow_list_array_get_value_type(GArrowListArray *array)
+{
+ auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
+ auto arrow_list_array =
+ static_cast<arrow::ListArray *>(arrow_array.get());
+ auto arrow_value_type = arrow_list_array->value_type();
+ return garrow_data_type_new_raw(&arrow_value_type);
+}
+
+/**
+ * garrow_list_array_get_value:
+ * @array: A #GArrowListArray.
+ * @i: The index of the target value.
+ *
+ * Returns: (transfer full): The i-th list.
+ */
+GArrowArray *
+garrow_list_array_get_value(GArrowListArray *array,
+ gint64 i)
+{
+ auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
+ auto arrow_list_array =
+ static_cast<arrow::ListArray *>(arrow_array.get());
+ auto arrow_list =
+ arrow_list_array->values()->Slice(arrow_list_array->value_offset(i),
+ arrow_list_array->value_length(i));
+ return garrow_array_new_raw(&arrow_list);
+}
+
+
+G_DEFINE_TYPE(GArrowStructArray, \
+ garrow_struct_array, \
+ GARROW_TYPE_ARRAY)
+
+static void
+garrow_struct_array_init(GArrowStructArray *object)
+{
+}
+
+static void
+garrow_struct_array_class_init(GArrowStructArrayClass *klass)
+{
+}
+
+/**
+ * garrow_struct_array_new:
+ * @data_type: The data type of the struct.
+ * @length: The number of elements.
+ * @children: (element-type GArrowArray): The arrays for each field
+ * as #GList of #GArrowArray.
+ * @null_bitmap: (nullable): The bitmap that shows null elements. The
+ * N-th element is null when the N-th bit is 0, not null otherwise.
+ * If the array has no null elements, the bitmap must be %NULL and
+ * @n_nulls is 0.
+ * @n_nulls: The number of null elements. If -1 is specified, the
+ * number of nulls are computed from @null_bitmap.
+ *
+ * Returns: A newly created #GArrowStructArray.
+ *
+ * Since: 0.4.0
+ */
+GArrowStructArray *
+garrow_struct_array_new(GArrowDataType *data_type,
+ gint64 length,
+ GList *children,
+ GArrowBuffer *null_bitmap,
+ gint64 n_nulls)
+{
+ const auto arrow_data_type = garrow_data_type_get_raw(data_type);
+ std::vector<std::shared_ptr<arrow::Array>> arrow_children;
+ for (GList *node = children; node; node = node->next) {
+ GArrowArray *child = GARROW_ARRAY(node->data);
+ arrow_children.push_back(garrow_array_get_raw(child));
+ }
+ const auto arrow_bitmap = garrow_buffer_get_raw(null_bitmap);
+ auto arrow_struct_array =
+ std::make_shared<arrow::StructArray>(arrow_data_type,
+ length,
+ arrow_children,
+ arrow_bitmap,
+ n_nulls);
+ auto arrow_array =
+ std::static_pointer_cast<arrow::Array>(arrow_struct_array);
+ return GARROW_STRUCT_ARRAY(garrow_array_new_raw(&arrow_array));
+}
+
+/**
+ * garrow_struct_array_get_field
+ * @array: A #GArrowStructArray.
+ * @i: The index of the field in the struct.
+ *
+ * Returns: (transfer full): The i-th field.
+ */
+GArrowArray *
+garrow_struct_array_get_field(GArrowStructArray *array,
+ gint i)
+{
+ auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
+ auto arrow_struct_array =
+ static_cast<arrow::StructArray *>(arrow_array.get());
+ auto arrow_field = arrow_struct_array->field(i);
+ return garrow_array_new_raw(&arrow_field);
+}
+
+/**
+ * garrow_struct_array_get_fields
+ * @array: A #GArrowStructArray.
+ *
+ * Returns: (element-type GArrowArray) (transfer full):
+ * The fields in the struct.
+ */
+GList *
+garrow_struct_array_get_fields(GArrowStructArray *array)
+{
+ const auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
+ const auto arrow_struct_array =
+ static_cast<const arrow::StructArray *>(arrow_array.get());
+
+ GList *fields = NULL;
+ for (int i = 0; i < arrow_struct_array->num_fields(); ++i) {
+ auto arrow_field = arrow_struct_array->field(i);
+ GArrowArray *field = garrow_array_new_raw(&arrow_field);
+ fields = g_list_prepend(fields, field);
+ }
+
+ return g_list_reverse(fields);
+}
+
+G_END_DECLS
diff --git a/c_glib/arrow-glib/composite-array.h b/c_glib/arrow-glib/composite-array.h
new file mode 100644
index 0000000..ebf9554
--- /dev/null
+++ b/c_glib/arrow-glib/composite-array.h
@@ -0,0 +1,132 @@
+/*
+ * 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 <arrow-glib/basic-array.h>
+#include <arrow-glib/data-type.h>
+
+G_BEGIN_DECLS
+
+#define GARROW_TYPE_LIST_ARRAY \
+ (garrow_list_array_get_type())
+#define GARROW_LIST_ARRAY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), \
+ GARROW_TYPE_LIST_ARRAY, \
+ GArrowListArray))
+#define GARROW_LIST_ARRAY_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), \
+ GARROW_TYPE_LIST_ARRAY, \
+ GArrowListArrayClass))
+#define GARROW_IS_LIST_ARRAY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
+ GARROW_TYPE_LIST_ARRAY))
+#define GARROW_IS_LIST_ARRAY_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), \
+ GARROW_TYPE_LIST_ARRAY))
+#define GARROW_LIST_ARRAY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), \
+ GARROW_TYPE_LIST_ARRAY, \
+ GArrowListArrayClass))
+
+typedef struct _GArrowListArray GArrowListArray;
+typedef struct _GArrowListArrayClass GArrowListArrayClass;
+
+/**
+ * GArrowListArray:
+ *
+ * It wraps `arrow::ListArray`.
+ */
+struct _GArrowListArray
+{
+ /*< private >*/
+ GArrowArray parent_instance;
+};
+
+struct _GArrowListArrayClass
+{
+ GArrowArrayClass parent_class;
+};
+
+GType garrow_list_array_get_type(void) G_GNUC_CONST;
+
+GArrowListArray *garrow_list_array_new(gint64 length,
+ GArrowBuffer *value_offsets,
+ GArrowArray *values,
+ GArrowBuffer *null_bitmap,
+ gint64 n_nulls);
+
+GArrowDataType *garrow_list_array_get_value_type(GArrowListArray *array);
+GArrowArray *garrow_list_array_get_value(GArrowListArray *array,
+ gint64 i);
+
+
+#define GARROW_TYPE_STRUCT_ARRAY \
+ (garrow_struct_array_get_type())
+#define GARROW_STRUCT_ARRAY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), \
+ GARROW_TYPE_STRUCT_ARRAY, \
+ GArrowStructArray))
+#define GARROW_STRUCT_ARRAY_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), \
+ GARROW_TYPE_STRUCT_ARRAY, \
+ GArrowStructArrayClass))
+#define GARROW_IS_STRUCT_ARRAY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
+ GARROW_TYPE_STRUCT_ARRAY))
+#define GARROW_IS_STRUCT_ARRAY_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), \
+ GARROW_TYPE_STRUCT_ARRAY))
+#define GARROW_STRUCT_ARRAY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), \
+ GARROW_TYPE_STRUCT_ARRAY, \
+ GArrowStructArrayClass))
+
+typedef struct _GArrowStructArray GArrowStructArray;
+typedef struct _GArrowStructArrayClass GArrowStructArrayClass;
+
+/**
+ * GArrowStructArray:
+ *
+ * It wraps `arrow::StructArray`.
+ */
+struct _GArrowStructArray
+{
+ /*< private >*/
+ GArrowArray parent_instance;
+};
+
+struct _GArrowStructArrayClass
+{
+ GArrowArrayClass parent_class;
+};
+
+GType garrow_struct_array_get_type(void) G_GNUC_CONST;
+
+GArrowStructArray *garrow_struct_array_new(GArrowDataType *data_type,
+ gint64 length,
+ GList *children,
+ GArrowBuffer *null_bitmap,
+ gint64 n_nulls);
+
+GArrowArray *garrow_struct_array_get_field(GArrowStructArray *array,
+ gint i);
+GList *garrow_struct_array_get_fields(GArrowStructArray *array);
+
+G_END_DECLS
diff --git a/c_glib/arrow-glib/composite-data-type.cpp b/c_glib/arrow-glib/composite-data-type.cpp
index ce3d78c..7ce8a97 100644
--- a/c_glib/arrow-glib/composite-data-type.cpp
+++ b/c_glib/arrow-glib/composite-data-type.cpp
@@ -21,6 +21,7 @@
# include <config.h>
#endif
+#include <arrow-glib/basic-array.hpp>
#include <arrow-glib/data-type.hpp>
#include <arrow-glib/enums.h>
#include <arrow-glib/error.hpp>
@@ -38,6 +39,8 @@ G_BEGIN_DECLS
* #GArrowListDataType is a class for list data type.
*
* #GArrowStructDataType is a class for struct data type.
+ *
+ * #GArrowDictionaryDataType is a class for dictionary data type.
*/
G_DEFINE_TYPE(GArrowListDataType, \
@@ -133,4 +136,87 @@ garrow_struct_data_type_new(GList *fields)
return data_type;
}
+
+G_DEFINE_TYPE(GArrowDictionaryDataType, \
+ garrow_dictionary_data_type, \
+ GARROW_TYPE_FIXED_WIDTH_DATA_TYPE)
+
+static void
+garrow_dictionary_data_type_init(GArrowDictionaryDataType *object)
+{
+}
+
+static void
+garrow_dictionary_data_type_class_init(GArrowDictionaryDataTypeClass *klass)
+{
+}
+
+/**
+ * garrow_dictionary_data_type_new:
+ * @index_data_type: The data type of index.
+ * @dictionary: The dictionary.
+ * @ordered: Whether dictionary contents are ordered or not.
+ *
+ * Returns: The newly created dictionary data type.
+ */
+GArrowDictionaryDataType *
+garrow_dictionary_data_type_new(GArrowDataType *index_data_type,
+ GArrowArray *dictionary,
+ gboolean ordered)
+{
+ auto arrow_index_data_type = garrow_data_type_get_raw(index_data_type);
+ auto arrow_dictionary = garrow_array_get_raw(dictionary);
+ auto arrow_data_type = arrow::dictionary(arrow_index_data_type,
+ arrow_dictionary,
+ ordered);
+ return GARROW_DICTIONARY_DATA_TYPE(garrow_data_type_new_raw(&arrow_data_type));
+}
+
+/**
+ * garrow_dictionary_data_type_get_index_data_type:
+ * @data_type: The #GArrowDictionaryDataType.
+ *
+ * Returns: (transfer full): The #GArrowDataType of index.
+ */
+GArrowDataType *
+garrow_dictionary_data_type_get_index_data_type(GArrowDictionaryDataType *data_type)
+{
+ auto arrow_data_type = garrow_data_type_get_raw(GARROW_DATA_TYPE(data_type));
+ auto arrow_dictionary_data_type =
+ std::static_pointer_cast<arrow::DictionaryType>(arrow_data_type);
+ auto arrow_index_data_type = arrow_dictionary_data_type->index_type();
+ return garrow_data_type_new_raw(&arrow_index_data_type);
+}
+
+/**
+ * garrow_dictionary_data_type_get_dictionary:
+ * @data_type: The #GArrowDictionaryDataType.
+ *
+ * Returns: (transfer full): The dictionary as #GArrowArray.
+ */
+GArrowArray *
+garrow_dictionary_data_type_get_dictionary(GArrowDictionaryDataType *data_type)
+{
+ auto arrow_data_type = garrow_data_type_get_raw(GARROW_DATA_TYPE(data_type));
+ auto arrow_dictionary_data_type =
+ std::static_pointer_cast<arrow::DictionaryType>(arrow_data_type);
+ auto arrow_dictionary = arrow_dictionary_data_type->dictionary();
+ return garrow_array_new_raw(&arrow_dictionary);
+}
+
+/**
+ * garrow_dictionary_data_type_is_ordered:
+ * @data_type: The #GArrowDictionaryDataType.
+ *
+ * Returns: Whether dictionary contents are ordered or not.
+ */
+gboolean
+garrow_dictionary_data_type_is_ordered(GArrowDictionaryDataType *data_type)
+{
+ auto arrow_data_type = garrow_data_type_get_raw(GARROW_DATA_TYPE(data_type));
+ auto arrow_dictionary_data_type =
+ std::static_pointer_cast<arrow::DictionaryType>(arrow_data_type);
+ return arrow_dictionary_data_type->ordered();
+}
+
G_END_DECLS
diff --git a/c_glib/arrow-glib/composite-data-type.h b/c_glib/arrow-glib/composite-data-type.h
index 9dac5bd..11b8301 100644
--- a/c_glib/arrow-glib/composite-data-type.h
+++ b/c_glib/arrow-glib/composite-data-type.h
@@ -19,6 +19,7 @@
#pragma once
+#include <arrow-glib/basic-array.h>
#include <arrow-glib/basic-data-type.h>
#include <arrow-glib/field.h>
@@ -112,4 +113,28 @@ struct _GArrowStructDataTypeClass
GType garrow_struct_data_type_get_type (void) G_GNUC_CONST;
GArrowStructDataType *garrow_struct_data_type_new (GList *fields);
+
+#define GARROW_TYPE_DICTIONARY_DATA_TYPE (garrow_dictionary_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowDictionaryDataType,
+ garrow_dictionary_data_type,
+ GARROW,
+ DICTIONARY_DATA_TYPE,
+ GArrowFixedWidthDataType)
+struct _GArrowDictionaryDataTypeClass
+{
+ GArrowFixedWidthDataTypeClass parent_class;
+};
+
+GArrowDictionaryDataType *
+garrow_dictionary_data_type_new(GArrowDataType *index_data_type,
+ GArrowArray *dictionary,
+ gboolean ordered);
+GArrowDataType *
+garrow_dictionary_data_type_get_index_data_type(GArrowDictionaryDataType *data_type);
+GArrowArray *
+garrow_dictionary_data_type_get_dictionary(GArrowDictionaryDataType *data_type);
+gboolean
+garrow_dictionary_data_type_is_ordered(GArrowDictionaryDataType *data_type);
+
+
G_END_DECLS
diff --git a/c_glib/arrow-glib/meson.build b/c_glib/arrow-glib/meson.build
index aeec417..25968e6 100644
--- a/c_glib/arrow-glib/meson.build
+++ b/c_glib/arrow-glib/meson.build
@@ -18,12 +18,13 @@
# under the License.
sources = files(
- 'array.cpp',
'array-builder.cpp',
+ 'basic-array.cpp',
'basic-data-type.cpp',
'buffer.cpp',
'chunked-array.cpp',
'column.cpp',
+ 'composite-array.cpp',
'composite-data-type.cpp',
'error.cpp',
'field.cpp',
@@ -59,10 +60,12 @@ c_headers = files(
'array.h',
'array-builder.h',
'arrow-glib.h',
+ 'basic-array.h',
'basic-data-type.h',
'buffer.h',
'chunked-array.h',
'column.h',
+ 'composite-array.h',
'composite-data-type.h',
'data-type.h',
'error.h',
@@ -102,6 +105,7 @@ cpp_headers = files(
'array.hpp',
'array-builder.hpp',
'arrow-glib.hpp',
+ 'basic-array.hpp',
'basic-data-type.hpp',
'buffer.hpp',
'chunked-array.hpp',
diff --git a/c_glib/doc/reference/arrow-glib-docs.xml b/c_glib/doc/reference/arrow-glib-docs.xml
index e267ea2..51e7b2a 100644
--- a/c_glib/doc/reference/arrow-glib-docs.xml
+++ b/c_glib/doc/reference/arrow-glib-docs.xml
@@ -40,7 +40,8 @@
<title>Data</title>
<chapter id="array">
<title>Array</title>
- <xi:include href="xml/array.xml"/>
+ <xi:include href="xml/basic-array.xml"/>
+ <xi:include href="xml/composite-array.xml"/>
</chapter>
<chapter id="array-builder">
<title>Array builder</title>
diff --git a/c_glib/test/test-dictionary-data-type.rb b/c_glib/test/test-dictionary-data-type.rb
new file mode 100644
index 0000000..5530a04
--- /dev/null
+++ b/c_glib/test/test-dictionary-data-type.rb
@@ -0,0 +1,56 @@
+# 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.
+
+class TestDictionaryDataType < Test::Unit::TestCase
+ include Helper::Buildable
+
+ def setup
+ @index_data_type = Arrow::Int32DataType.new
+ @dictionary = build_string_array(["C", "C++", "Ruby"])
+ @ordered = true
+ @data_type = Arrow::DictionaryDataType.new(@index_data_type,
+ @dictionary,
+ @ordered)
+ end
+
+ def test_type
+ assert_equal(Arrow::Type::DICTIONARY, @data_type.id)
+ end
+
+ def test_to_s
+ assert_equal("dictionary<values=string, indices=int32, ordered=1>",
+ @data_type.to_s)
+ end
+
+ def test_bit_width
+ assert_equal(32, @data_type.bit_width)
+ end
+
+ def test_index_data_type
+ assert_equal(@index_data_type, @data_type.index_data_type)
+ end
+
+ def test_dictionary
+ assert_equal(@dictionary, @data_type.dictionary)
+ end
+
+ def test_ordered?
+ assert do
+ @data_type.ordered?
+ end
+ end
+end
--
To stop receiving notification emails like this one, please contact
['"commits@arrow.apache.org" <co...@arrow.apache.org>'].