]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/arrow/c_glib/arrow-glib/basic-data-type.h
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / c_glib / arrow-glib / basic-data-type.h
diff --git a/ceph/src/arrow/c_glib/arrow-glib/basic-data-type.h b/ceph/src/arrow/c_glib/arrow-glib/basic-data-type.h
new file mode 100644 (file)
index 0000000..f56a8b2
--- /dev/null
@@ -0,0 +1,596 @@
+/*
+ * 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/decimal.h>
+#include <arrow-glib/type.h>
+#include <arrow-glib/version.h>
+
+G_BEGIN_DECLS
+
+#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;
+};
+
+GARROW_AVAILABLE_IN_6_0
+GArrowDataType *
+garrow_data_type_import(gpointer c_abi_schema,
+                        GError **error);
+
+GARROW_AVAILABLE_IN_6_0
+gpointer
+garrow_data_type_export(GArrowDataType *data_type,
+                        GError **error);
+
+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);
+GARROW_AVAILABLE_IN_3_0
+gchar *
+garrow_data_type_get_name(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())
+G_DECLARE_DERIVABLE_TYPE(GArrowNullDataType,
+                         garrow_null_data_type,
+                         GARROW,
+                         NULL_DATA_TYPE,
+                         GArrowDataType)
+struct _GArrowNullDataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GArrowNullDataType *garrow_null_data_type_new      (void);
+
+
+#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
+{
+  GArrowFixedWidthDataTypeClass parent_class;
+};
+
+GArrowBooleanDataType *garrow_boolean_data_type_new      (void);
+
+
+#define GARROW_TYPE_NUMERIC_DATA_TYPE (garrow_numeric_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowNumericDataType,
+                         garrow_numeric_data_type,
+                         GARROW,
+                         NUMERIC_DATA_TYPE,
+                         GArrowFixedWidthDataType)
+struct _GArrowNumericDataTypeClass
+{
+  GArrowFixedWidthDataTypeClass parent_class;
+};
+
+
+#define GARROW_TYPE_INTEGER_DATA_TYPE (garrow_integer_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowIntegerDataType,
+                         garrow_integer_data_type,
+                         GARROW,
+                         INTEGER_DATA_TYPE,
+                         GArrowNumericDataType)
+struct _GArrowIntegerDataTypeClass
+{
+  GArrowNumericDataTypeClass parent_class;
+};
+
+GARROW_AVAILABLE_IN_0_16
+gboolean garrow_integer_data_type_is_signed(GArrowIntegerDataType *data_type);
+
+#define GARROW_TYPE_INT8_DATA_TYPE (garrow_int8_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowInt8DataType,
+                         garrow_int8_data_type,
+                         GARROW,
+                         INT8_DATA_TYPE,
+                         GArrowIntegerDataType)
+struct _GArrowInt8DataTypeClass
+{
+  GArrowIntegerDataTypeClass parent_class;
+};
+
+GArrowInt8DataType   *garrow_int8_data_type_new      (void);
+
+
+#define GARROW_TYPE_UINT8_DATA_TYPE (garrow_uint8_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowUInt8DataType,
+                         garrow_uint8_data_type,
+                         GARROW,
+                         UINT8_DATA_TYPE,
+                         GArrowIntegerDataType)
+struct _GArrowUInt8DataTypeClass
+{
+  GArrowIntegerDataTypeClass parent_class;
+};
+
+GArrowUInt8DataType  *garrow_uint8_data_type_new      (void);
+
+
+#define GARROW_TYPE_INT16_DATA_TYPE (garrow_int16_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowInt16DataType,
+                         garrow_int16_data_type,
+                         GARROW,
+                         INT16_DATA_TYPE,
+                         GArrowIntegerDataType)
+struct _GArrowInt16DataTypeClass
+{
+  GArrowIntegerDataTypeClass parent_class;
+};
+
+GArrowInt16DataType  *garrow_int16_data_type_new      (void);
+
+
+#define GARROW_TYPE_UINT16_DATA_TYPE (garrow_uint16_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowUInt16DataType,
+                         garrow_uint16_data_type,
+                         GARROW,
+                         UINT16_DATA_TYPE,
+                         GArrowIntegerDataType)
+struct _GArrowUInt16DataTypeClass
+{
+  GArrowIntegerDataTypeClass parent_class;
+};
+
+GArrowUInt16DataType *garrow_uint16_data_type_new      (void);
+
+
+#define GARROW_TYPE_INT32_DATA_TYPE (garrow_int32_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowInt32DataType,
+                         garrow_int32_data_type,
+                         GARROW,
+                         INT32_DATA_TYPE,
+                         GArrowIntegerDataType)
+struct _GArrowInt32DataTypeClass
+{
+  GArrowIntegerDataTypeClass parent_class;
+};
+
+GArrowInt32DataType  *garrow_int32_data_type_new      (void);
+
+
+#define GARROW_TYPE_UINT32_DATA_TYPE (garrow_uint32_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowUInt32DataType,
+                         garrow_uint32_data_type,
+                         GARROW,
+                         UINT32_DATA_TYPE,
+                         GArrowIntegerDataType)
+struct _GArrowUInt32DataTypeClass
+{
+  GArrowIntegerDataTypeClass parent_class;
+};
+
+GArrowUInt32DataType *garrow_uint32_data_type_new      (void);
+
+
+#define GARROW_TYPE_INT64_DATA_TYPE (garrow_int64_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowInt64DataType,
+                         garrow_int64_data_type,
+                         GARROW,
+                         INT64_DATA_TYPE,
+                         GArrowIntegerDataType)
+struct _GArrowInt64DataTypeClass
+{
+  GArrowIntegerDataTypeClass parent_class;
+};
+
+GArrowInt64DataType  *garrow_int64_data_type_new      (void);
+
+
+#define GARROW_TYPE_UINT64_DATA_TYPE (garrow_uint64_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowUInt64DataType,
+                         garrow_uint64_data_type,
+                         GARROW,
+                         UINT64_DATA_TYPE,
+                         GArrowIntegerDataType)
+struct _GArrowUInt64DataTypeClass
+{
+  GArrowIntegerDataTypeClass parent_class;
+};
+
+GArrowUInt64DataType *garrow_uint64_data_type_new      (void);
+
+
+#define GARROW_TYPE_FLOATING_POINT_DATA_TYPE    \
+  (garrow_floating_point_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowFloatingPointDataType,
+                         garrow_floating_point_data_type,
+                         GARROW,
+                         FLOATING_POINT_DATA_TYPE,
+                         GArrowNumericDataType)
+struct _GArrowFloatingPointDataTypeClass
+{
+  GArrowNumericDataTypeClass parent_class;
+};
+
+
+#define GARROW_TYPE_FLOAT_DATA_TYPE (garrow_float_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowFloatDataType,
+                         garrow_float_data_type,
+                         GARROW,
+                         FLOAT_DATA_TYPE,
+                         GArrowFloatingPointDataType)
+struct _GArrowFloatDataTypeClass
+{
+  GArrowFloatingPointDataTypeClass parent_class;
+};
+
+GArrowFloatDataType *garrow_float_data_type_new      (void);
+
+
+#define GARROW_TYPE_DOUBLE_DATA_TYPE (garrow_double_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowDoubleDataType,
+                         garrow_double_data_type,
+                         GARROW,
+                         DOUBLE_DATA_TYPE,
+                         GArrowFloatingPointDataType)
+struct _GArrowDoubleDataTypeClass
+{
+  GArrowFloatingPointDataTypeClass parent_class;
+};
+
+GArrowDoubleDataType *garrow_double_data_type_new      (void);
+
+
+#define GARROW_TYPE_BINARY_DATA_TYPE (garrow_binary_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowBinaryDataType,
+                         garrow_binary_data_type,
+                         GARROW,
+                         BINARY_DATA_TYPE,
+                         GArrowDataType)
+struct _GArrowBinaryDataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GArrowBinaryDataType *garrow_binary_data_type_new      (void);
+
+
+#define GARROW_TYPE_FIXED_SIZE_BINARY_DATA_TYPE (garrow_fixed_size_binary_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowFixedSizeBinaryDataType,
+                         garrow_fixed_size_binary_data_type,
+                         GARROW,
+                         FIXED_SIZE_BINARY_DATA_TYPE,
+                         GArrowDataType)
+struct _GArrowFixedSizeBinaryDataTypeClass
+{
+  GArrowFixedWidthDataTypeClass parent_class;
+};
+
+GARROW_AVAILABLE_IN_0_12
+GArrowFixedSizeBinaryDataType *
+garrow_fixed_size_binary_data_type_new(gint32 byte_width);
+GARROW_AVAILABLE_IN_0_12
+gint32
+garrow_fixed_size_binary_data_type_get_byte_width(GArrowFixedSizeBinaryDataType *data_type);
+
+
+#define GARROW_TYPE_LARGE_BINARY_DATA_TYPE (garrow_large_binary_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowLargeBinaryDataType,
+                         garrow_large_binary_data_type,
+                         GARROW,
+                         LARGE_BINARY_DATA_TYPE,
+                         GArrowDataType)
+struct _GArrowLargeBinaryDataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GARROW_AVAILABLE_IN_0_17
+GArrowLargeBinaryDataType *garrow_large_binary_data_type_new(void);
+
+
+#define GARROW_TYPE_STRING_DATA_TYPE (garrow_string_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowStringDataType,
+                         garrow_string_data_type,
+                         GARROW,
+                         STRING_DATA_TYPE,
+                         GArrowBinaryDataType)
+struct _GArrowStringDataTypeClass
+{
+  GArrowBinaryDataTypeClass parent_class;
+};
+
+GArrowStringDataType *garrow_string_data_type_new      (void);
+
+
+#define GARROW_TYPE_LARGE_STRING_DATA_TYPE (garrow_large_string_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowLargeStringDataType,
+                         garrow_large_string_data_type,
+                         GARROW,
+                         LARGE_STRING_DATA_TYPE,
+                         GArrowLargeBinaryDataType)
+struct _GArrowLargeStringDataTypeClass
+{
+  GArrowLargeBinaryDataTypeClass parent_class;
+};
+
+GARROW_AVAILABLE_IN_0_17
+GArrowLargeStringDataType *garrow_large_string_data_type_new(void);
+
+
+#define GARROW_TYPE_DATE32_DATA_TYPE (garrow_date32_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowDate32DataType,
+                         garrow_date32_data_type,
+                         GARROW,
+                         DATE32_DATA_TYPE,
+                         GArrowDataType)
+struct _GArrowDate32DataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GArrowDate32DataType *garrow_date32_data_type_new      (void);
+
+
+#define GARROW_TYPE_DATE64_DATA_TYPE (garrow_date64_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowDate64DataType,
+                         garrow_date64_data_type,
+                         GARROW,
+                         DATE64_DATA_TYPE,
+                         GArrowDataType)
+struct _GArrowDate64DataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GArrowDate64DataType *garrow_date64_data_type_new      (void);
+
+
+#define GARROW_TYPE_TIMESTAMP_DATA_TYPE (garrow_timestamp_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowTimestampDataType,
+                         garrow_timestamp_data_type,
+                         GARROW,
+                         TIMESTAMP_DATA_TYPE,
+                         GArrowDataType)
+struct _GArrowTimestampDataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GArrowTimestampDataType *garrow_timestamp_data_type_new   (GArrowTimeUnit unit);
+GArrowTimeUnit
+garrow_timestamp_data_type_get_unit (GArrowTimestampDataType *timestamp_data_type);
+
+
+#define GARROW_TYPE_TIME_DATA_TYPE (garrow_time_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowTimeDataType,
+                         garrow_time_data_type,
+                         GARROW,
+                         TIME_DATA_TYPE,
+                         GArrowDataType)
+struct _GArrowTimeDataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GArrowTimeUnit garrow_time_data_type_get_unit (GArrowTimeDataType *time_data_type);
+
+
+#define GARROW_TYPE_TIME32_DATA_TYPE (garrow_time32_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowTime32DataType,
+                         garrow_time32_data_type,
+                         GARROW,
+                         TIME32_DATA_TYPE,
+                         GArrowTimeDataType)
+struct _GArrowTime32DataTypeClass
+{
+  GArrowTimeDataTypeClass parent_class;
+};
+
+GArrowTime32DataType *garrow_time32_data_type_new      (GArrowTimeUnit unit,
+                                                        GError **error);
+
+
+#define GARROW_TYPE_TIME64_DATA_TYPE (garrow_time64_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowTime64DataType,
+                         garrow_time64_data_type,
+                         GARROW,
+                         TIME64_DATA_TYPE,
+                         GArrowTimeDataType)
+struct _GArrowTime64DataTypeClass
+{
+  GArrowTimeDataTypeClass parent_class;
+};
+
+GArrowTime64DataType *garrow_time64_data_type_new      (GArrowTimeUnit unit,
+                                                        GError **error);
+
+
+#define GARROW_TYPE_DECIMAL_DATA_TYPE (garrow_decimal_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowDecimalDataType,
+                         garrow_decimal_data_type,
+                         GARROW,
+                         DECIMAL_DATA_TYPE,
+                         GArrowFixedSizeBinaryDataType)
+struct _GArrowDecimalDataTypeClass
+{
+  GArrowFixedSizeBinaryDataTypeClass parent_class;
+};
+
+#ifndef GARROW_DISABLE_DEPRECATED
+GARROW_DEPRECATED_IN_0_12_FOR(garrow_decimal128_data_type_new)
+GArrowDecimalDataType *
+garrow_decimal_data_type_new(gint32 precision, gint32 scale);
+#endif
+gint32 garrow_decimal_data_type_get_precision(GArrowDecimalDataType *decimal_data_type);
+gint32 garrow_decimal_data_type_get_scale(GArrowDecimalDataType *decimal_data_type);
+
+
+#define GARROW_TYPE_DECIMAL128_DATA_TYPE (garrow_decimal128_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowDecimal128DataType,
+                         garrow_decimal128_data_type,
+                         GARROW,
+                         DECIMAL128_DATA_TYPE,
+                         GArrowDecimalDataType)
+struct _GArrowDecimal128DataTypeClass
+{
+  GArrowDecimalDataTypeClass parent_class;
+};
+
+GARROW_AVAILABLE_IN_3_0
+gint32
+garrow_decimal128_data_type_max_precision();
+
+GARROW_AVAILABLE_IN_0_12
+GArrowDecimal128DataType *
+garrow_decimal128_data_type_new(gint32 precision, gint32 scale);
+
+
+#define GARROW_TYPE_DECIMAL256_DATA_TYPE (garrow_decimal256_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowDecimal256DataType,
+                         garrow_decimal256_data_type,
+                         GARROW,
+                         DECIMAL256_DATA_TYPE,
+                         GArrowDecimalDataType)
+struct _GArrowDecimal256DataTypeClass
+{
+  GArrowDecimalDataTypeClass parent_class;
+};
+
+GARROW_AVAILABLE_IN_3_0
+gint32
+garrow_decimal256_data_type_max_precision();
+
+GARROW_AVAILABLE_IN_3_0
+GArrowDecimal256DataType *
+garrow_decimal256_data_type_new(gint32 precision, gint32 scale);
+
+#define GARROW_TYPE_EXTENSION_DATA_TYPE (garrow_extension_data_type_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowExtensionDataType,
+                         garrow_extension_data_type,
+                         GARROW,
+                         EXTENSION_DATA_TYPE,
+                         GArrowDataType)
+/**
+ * GArrowExtensionDataTypeClass:
+ * @get_extension_name: It must returns the name of this extension data type.
+ * @equal: It must returns %TRUE only when the both data types equal, %FALSE
+ *   otherwise.
+ * @deserialize: It must returns a serialized #GArrowDataType from the given
+ *   `serialized_data`.
+ * @serialize: It must returns a serialized data of this extension data type
+ *   to deserialize later.
+ * @get_array_gtype: It must returns #GType for corresponding extension array
+ *   class.
+ *
+ * Since: 3.0.0
+ */
+struct _GArrowExtensionDataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+
+  gchar *(*get_extension_name)(GArrowExtensionDataType *data_type);
+  gboolean (*equal)(GArrowExtensionDataType *data_type,
+                    GArrowExtensionDataType *other_data_type);
+  GArrowDataType *(*deserialize)(GArrowExtensionDataType *data_type,
+                                 GArrowDataType *storage_data_type,
+                                 GBytes *serialized_data,
+                                 GError **error);
+  GBytes *(*serialize)(GArrowExtensionDataType *data_type);
+  GType (*get_array_gtype)(GArrowExtensionDataType *data_type);
+};
+
+GARROW_AVAILABLE_IN_3_0
+gchar *
+garrow_extension_data_type_get_extension_name(GArrowExtensionDataType *data_type);
+
+typedef struct _GArrowArray GArrowArray;
+typedef struct _GArrowExtensionArray GArrowExtensionArray;
+
+GARROW_AVAILABLE_IN_3_0
+GArrowExtensionArray *
+garrow_extension_data_type_wrap_array(GArrowExtensionDataType *data_type,
+                                      GArrowArray *storage);
+
+typedef struct _GArrowChunkedArray GArrowChunkedArray;
+
+GARROW_AVAILABLE_IN_3_0
+GArrowChunkedArray *
+garrow_extension_data_type_wrap_chunked_array(GArrowExtensionDataType *data_type,
+                                              GArrowChunkedArray *storage);
+
+
+#define GARROW_TYPE_EXTENSION_DATA_TYPE_REGISTRY        \
+  (garrow_extension_data_type_registry_get_type())
+G_DECLARE_DERIVABLE_TYPE(GArrowExtensionDataTypeRegistry,
+                         garrow_extension_data_type_registry,
+                         GARROW,
+                         EXTENSION_DATA_TYPE_REGISTRY,
+                         GObject)
+struct _GArrowExtensionDataTypeRegistryClass
+{
+  GObjectClass parent_class;
+};
+
+GARROW_AVAILABLE_IN_3_0
+GArrowExtensionDataTypeRegistry *
+garrow_extension_data_type_registry_default(void);
+
+GARROW_AVAILABLE_IN_3_0
+gboolean
+garrow_extension_data_type_registry_register(
+  GArrowExtensionDataTypeRegistry *registry,
+  GArrowExtensionDataType *data_type,
+  GError **error);
+GARROW_AVAILABLE_IN_3_0
+gboolean
+garrow_extension_data_type_registry_unregister(
+  GArrowExtensionDataTypeRegistry *registry,
+  const gchar *name,
+  GError **error);
+GARROW_AVAILABLE_IN_3_0
+GArrowExtensionDataType *
+garrow_extension_data_type_registry_lookup(
+  GArrowExtensionDataTypeRegistry *registry,
+  const gchar *name);
+
+G_END_DECLS