[ 
https://issues.apache.org/jira/browse/ARROW-2289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16392386#comment-16392386
 ] 

ASF GitHub Bot commented on ARROW-2289:
---------------------------------------

wesm closed pull request #1726: ARROW-2289: [GLib] Add Numeric, Integer, 
FloatingPoint data types
URL: https://github.com/apache/arrow/pull/1726
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/c_glib/arrow-glib/basic-data-type.cpp 
b/c_glib/arrow-glib/basic-data-type.cpp
index a5f7aed1b..82abfa35c 100644
--- a/c_glib/arrow-glib/basic-data-type.cpp
+++ b/c_glib/arrow-glib/basic-data-type.cpp
@@ -315,9 +315,39 @@ garrow_boolean_data_type_new(void)
 }
 
 
+G_DEFINE_ABSTRACT_TYPE(GArrowNumericDataType,                    \
+                       garrow_numeric_data_type,                 \
+                       GARROW_TYPE_FIXED_WIDTH_DATA_TYPE)
+
+static void
+garrow_numeric_data_type_init(GArrowNumericDataType *object)
+{
+}
+
+static void
+garrow_numeric_data_type_class_init(GArrowNumericDataTypeClass *klass)
+{
+}
+
+
+G_DEFINE_ABSTRACT_TYPE(GArrowIntegerDataType,                    \
+                       garrow_integer_data_type,                 \
+                       GARROW_TYPE_NUMERIC_DATA_TYPE)
+
+static void
+garrow_integer_data_type_init(GArrowIntegerDataType *object)
+{
+}
+
+static void
+garrow_integer_data_type_class_init(GArrowIntegerDataTypeClass *klass)
+{
+}
+
+
 G_DEFINE_TYPE(GArrowInt8DataType,                \
               garrow_int8_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_INTEGER_DATA_TYPE)
 
 static void
 garrow_int8_data_type_init(GArrowInt8DataType *object)
@@ -349,7 +379,7 @@ garrow_int8_data_type_new(void)
 
 G_DEFINE_TYPE(GArrowUInt8DataType,                \
               garrow_uint8_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_INTEGER_DATA_TYPE)
 
 static void
 garrow_uint8_data_type_init(GArrowUInt8DataType *object)
@@ -381,7 +411,7 @@ garrow_uint8_data_type_new(void)
 
 G_DEFINE_TYPE(GArrowInt16DataType,                \
               garrow_int16_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_INTEGER_DATA_TYPE)
 
 static void
 garrow_int16_data_type_init(GArrowInt16DataType *object)
@@ -413,7 +443,7 @@ garrow_int16_data_type_new(void)
 
 G_DEFINE_TYPE(GArrowUInt16DataType,                \
               garrow_uint16_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_INTEGER_DATA_TYPE)
 
 static void
 garrow_uint16_data_type_init(GArrowUInt16DataType *object)
@@ -445,7 +475,7 @@ garrow_uint16_data_type_new(void)
 
 G_DEFINE_TYPE(GArrowInt32DataType,                \
               garrow_int32_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_INTEGER_DATA_TYPE)
 
 static void
 garrow_int32_data_type_init(GArrowInt32DataType *object)
@@ -477,7 +507,7 @@ garrow_int32_data_type_new(void)
 
 G_DEFINE_TYPE(GArrowUInt32DataType,                \
               garrow_uint32_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_INTEGER_DATA_TYPE)
 
 static void
 garrow_uint32_data_type_init(GArrowUInt32DataType *object)
@@ -509,7 +539,7 @@ garrow_uint32_data_type_new(void)
 
 G_DEFINE_TYPE(GArrowInt64DataType,                \
               garrow_int64_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_INTEGER_DATA_TYPE)
 
 static void
 garrow_int64_data_type_init(GArrowInt64DataType *object)
@@ -541,7 +571,7 @@ garrow_int64_data_type_new(void)
 
 G_DEFINE_TYPE(GArrowUInt64DataType,                \
               garrow_uint64_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_INTEGER_DATA_TYPE)
 
 static void
 garrow_uint64_data_type_init(GArrowUInt64DataType *object)
@@ -571,9 +601,24 @@ garrow_uint64_data_type_new(void)
 }
 
 
+G_DEFINE_ABSTRACT_TYPE(GArrowFloatingPointDataType,                    \
+                       garrow_floating_point_data_type,                \
+                       GARROW_TYPE_NUMERIC_DATA_TYPE)
+
+static void
+garrow_floating_point_data_type_init(GArrowFloatingPointDataType *object)
+{
+}
+
+static void
+garrow_floating_point_data_type_class_init(GArrowFloatingPointDataTypeClass 
*klass)
+{
+}
+
+
 G_DEFINE_TYPE(GArrowFloatDataType,                \
               garrow_float_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_FLOATING_POINT_DATA_TYPE)
 
 static void
 garrow_float_data_type_init(GArrowFloatDataType *object)
@@ -605,7 +650,7 @@ garrow_float_data_type_new(void)
 
 G_DEFINE_TYPE(GArrowDoubleDataType,                \
               garrow_double_data_type,             \
-              GARROW_TYPE_DATA_TYPE)
+              GARROW_TYPE_FLOATING_POINT_DATA_TYPE)
 
 static void
 garrow_double_data_type_init(GArrowDoubleDataType *object)
diff --git a/c_glib/arrow-glib/basic-data-type.h 
b/c_glib/arrow-glib/basic-data-type.h
index 469590191..478c905e9 100644
--- a/c_glib/arrow-glib/basic-data-type.h
+++ b/c_glib/arrow-glib/basic-data-type.h
@@ -116,443 +116,180 @@ struct _GArrowBooleanDataTypeClass
 GArrowBooleanDataType *garrow_boolean_data_type_new      (void);
 
 
-#define GARROW_TYPE_INT8_DATA_TYPE            \
-  (garrow_int8_data_type_get_type())
-#define GARROW_INT8_DATA_TYPE(obj)                            \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                          \
-                              GARROW_TYPE_INT8_DATA_TYPE,     \
-                              GArrowInt8DataType))
-#define GARROW_INT8_DATA_TYPE_CLASS(klass)                    \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                           \
-                           GARROW_TYPE_INT8_DATA_TYPE,        \
-                           GArrowInt8DataTypeClass))
-#define GARROW_IS_INT8_DATA_TYPE(obj)                         \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                          \
-                              GARROW_TYPE_INT8_DATA_TYPE))
-#define GARROW_IS_INT8_DATA_TYPE_CLASS(klass)                 \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                           \
-                           GARROW_TYPE_INT8_DATA_TYPE))
-#define GARROW_INT8_DATA_TYPE_GET_CLASS(obj)                  \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                           \
-                             GARROW_TYPE_INT8_DATA_TYPE,      \
-                             GArrowInt8DataTypeClass))
-
-typedef struct _GArrowInt8DataType         GArrowInt8DataType;
-typedef struct _GArrowInt8DataTypeClass    GArrowInt8DataTypeClass;
+#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;
+};
 
-/**
- * GArrowInt8DataType:
- *
- * It wraps `arrow::Int8Type`.
- */
-struct _GArrowInt8DataType
+
+#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
 {
-  /*< private >*/
-  GArrowDataType parent_instance;
+  GArrowNumericDataTypeClass parent_class;
 };
 
+
+#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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowIntegerDataTypeClass parent_class;
 };
 
-GType                 garrow_int8_data_type_get_type (void) G_GNUC_CONST;
 GArrowInt8DataType   *garrow_int8_data_type_new      (void);
 
 
-#define GARROW_TYPE_UINT8_DATA_TYPE            \
-  (garrow_uint8_data_type_get_type())
-#define GARROW_UINT8_DATA_TYPE(obj)                            \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                           \
-                              GARROW_TYPE_UINT8_DATA_TYPE,     \
-                              GArrowUInt8DataType))
-#define GARROW_UINT8_DATA_TYPE_CLASS(klass)                    \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                            \
-                           GARROW_TYPE_UINT8_DATA_TYPE,        \
-                           GArrowUInt8DataTypeClass))
-#define GARROW_IS_UINT8_DATA_TYPE(obj)                         \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                           \
-                              GARROW_TYPE_UINT8_DATA_TYPE))
-#define GARROW_IS_UINT8_DATA_TYPE_CLASS(klass)                 \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                            \
-                           GARROW_TYPE_UINT8_DATA_TYPE))
-#define GARROW_UINT8_DATA_TYPE_GET_CLASS(obj)                  \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                            \
-                             GARROW_TYPE_UINT8_DATA_TYPE,      \
-                             GArrowUInt8DataTypeClass))
-
-typedef struct _GArrowUInt8DataType         GArrowUInt8DataType;
-typedef struct _GArrowUInt8DataTypeClass    GArrowUInt8DataTypeClass;
-
-/**
- * GArrowUInt8DataType:
- *
- * It wraps `arrow::UInt8Type`.
- */
-struct _GArrowUInt8DataType
-{
-  /*< private >*/
-  GArrowDataType parent_instance;
-};
-
+#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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowIntegerDataTypeClass parent_class;
 };
 
-GType                 garrow_uint8_data_type_get_type (void) G_GNUC_CONST;
 GArrowUInt8DataType  *garrow_uint8_data_type_new      (void);
 
 
-#define GARROW_TYPE_INT16_DATA_TYPE            \
-  (garrow_int16_data_type_get_type())
-#define GARROW_INT16_DATA_TYPE(obj)                            \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                           \
-                              GARROW_TYPE_INT16_DATA_TYPE,     \
-                              GArrowInt16DataType))
-#define GARROW_INT16_DATA_TYPE_CLASS(klass)                    \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                            \
-                           GARROW_TYPE_INT16_DATA_TYPE,        \
-                           GArrowInt16DataTypeClass))
-#define GARROW_IS_INT16_DATA_TYPE(obj)                         \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                           \
-                              GARROW_TYPE_INT16_DATA_TYPE))
-#define GARROW_IS_INT16_DATA_TYPE_CLASS(klass)                 \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                            \
-                           GARROW_TYPE_INT16_DATA_TYPE))
-#define GARROW_INT16_DATA_TYPE_GET_CLASS(obj)                  \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                            \
-                             GARROW_TYPE_INT16_DATA_TYPE,      \
-                             GArrowInt16DataTypeClass))
-
-typedef struct _GArrowInt16DataType         GArrowInt16DataType;
-typedef struct _GArrowInt16DataTypeClass    GArrowInt16DataTypeClass;
-
-/**
- * GArrowInt16DataType:
- *
- * It wraps `arrow::Int16Type`.
- */
-struct _GArrowInt16DataType
-{
-  /*< private >*/
-  GArrowDataType parent_instance;
-};
-
+#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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowIntegerDataTypeClass parent_class;
 };
 
-GType                 garrow_int16_data_type_get_type (void) G_GNUC_CONST;
 GArrowInt16DataType  *garrow_int16_data_type_new      (void);
 
 
-#define GARROW_TYPE_UINT16_DATA_TYPE            \
-  (garrow_uint16_data_type_get_type())
-#define GARROW_UINT16_DATA_TYPE(obj)                            \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
-                              GARROW_TYPE_UINT16_DATA_TYPE,     \
-                              GArrowUInt16DataType))
-#define GARROW_UINT16_DATA_TYPE_CLASS(klass)                    \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                             \
-                           GARROW_TYPE_UINT16_DATA_TYPE,        \
-                           GArrowUInt16DataTypeClass))
-#define GARROW_IS_UINT16_DATA_TYPE(obj)                         \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
-                              GARROW_TYPE_UINT16_DATA_TYPE))
-#define GARROW_IS_UINT16_DATA_TYPE_CLASS(klass)                 \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
-                           GARROW_TYPE_UINT16_DATA_TYPE))
-#define GARROW_UINT16_DATA_TYPE_GET_CLASS(obj)                  \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
-                             GARROW_TYPE_UINT16_DATA_TYPE,      \
-                             GArrowUInt16DataTypeClass))
-
-typedef struct _GArrowUInt16DataType         GArrowUInt16DataType;
-typedef struct _GArrowUInt16DataTypeClass    GArrowUInt16DataTypeClass;
-
-/**
- * GArrowUInt16DataType:
- *
- * It wraps `arrow::UInt16Type`.
- */
-struct _GArrowUInt16DataType
-{
-  /*< private >*/
-  GArrowDataType parent_instance;
-};
-
+#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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowIntegerDataTypeClass parent_class;
 };
 
-GType                 garrow_uint16_data_type_get_type (void) G_GNUC_CONST;
 GArrowUInt16DataType *garrow_uint16_data_type_new      (void);
 
 
-#define GARROW_TYPE_INT32_DATA_TYPE            \
-  (garrow_int32_data_type_get_type())
-#define GARROW_INT32_DATA_TYPE(obj)                             \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
-                              GARROW_TYPE_INT32_DATA_TYPE,      \
-                              GArrowInt32DataType))
-#define GARROW_INT32_DATA_TYPE_CLASS(klass)             \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                     \
-                           GARROW_TYPE_INT32_DATA_TYPE, \
-                           GArrowInt32DataTypeClass))
-#define GARROW_IS_INT32_DATA_TYPE(obj)                          \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
-                              GARROW_TYPE_INT32_DATA_TYPE))
-#define GARROW_IS_INT32_DATA_TYPE_CLASS(klass)                  \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
-                           GARROW_TYPE_INT32_DATA_TYPE))
-#define GARROW_INT32_DATA_TYPE_GET_CLASS(obj)                   \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
-                             GARROW_TYPE_INT32_DATA_TYPE,       \
-                             GArrowInt32DataTypeClass))
-
-typedef struct _GArrowInt32DataType         GArrowInt32DataType;
-typedef struct _GArrowInt32DataTypeClass    GArrowInt32DataTypeClass;
-
-/**
- * GArrowInt32DataType:
- *
- * It wraps `arrow::Int32Type`.
- */
-struct _GArrowInt32DataType
-{
-  /*< private >*/
-  GArrowDataType parent_instance;
-};
-
+#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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowIntegerDataTypeClass parent_class;
 };
 
-GType                 garrow_int32_data_type_get_type (void) G_GNUC_CONST;
 GArrowInt32DataType  *garrow_int32_data_type_new      (void);
 
 
-#define GARROW_TYPE_UINT32_DATA_TYPE            \
-  (garrow_uint32_data_type_get_type())
-#define GARROW_UINT32_DATA_TYPE(obj)                            \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
-                              GARROW_TYPE_UINT32_DATA_TYPE,     \
-                              GArrowUInt32DataType))
-#define GARROW_UINT32_DATA_TYPE_CLASS(klass)                    \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                             \
-                           GARROW_TYPE_UINT32_DATA_TYPE,        \
-                           GArrowUInt32DataTypeClass))
-#define GARROW_IS_UINT32_DATA_TYPE(obj)                         \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
-                              GARROW_TYPE_UINT32_DATA_TYPE))
-#define GARROW_IS_UINT32_DATA_TYPE_CLASS(klass)                 \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
-                           GARROW_TYPE_UINT32_DATA_TYPE))
-#define GARROW_UINT32_DATA_TYPE_GET_CLASS(obj)                  \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
-                             GARROW_TYPE_UINT32_DATA_TYPE,      \
-                             GArrowUInt32DataTypeClass))
-
-typedef struct _GArrowUInt32DataType         GArrowUInt32DataType;
-typedef struct _GArrowUInt32DataTypeClass    GArrowUInt32DataTypeClass;
-
-/**
- * GArrowUInt32DataType:
- *
- * It wraps `arrow::UInt32Type`.
- */
-struct _GArrowUInt32DataType
-{
-  /*< private >*/
-  GArrowDataType parent_instance;
-};
-
+#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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowIntegerDataTypeClass parent_class;
 };
 
-GType                 garrow_uint32_data_type_get_type (void) G_GNUC_CONST;
 GArrowUInt32DataType *garrow_uint32_data_type_new      (void);
 
 
-#define GARROW_TYPE_INT64_DATA_TYPE            \
-  (garrow_int64_data_type_get_type())
-#define GARROW_INT64_DATA_TYPE(obj)                             \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
-                              GARROW_TYPE_INT64_DATA_TYPE,      \
-                              GArrowInt64DataType))
-#define GARROW_INT64_DATA_TYPE_CLASS(klass)             \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                     \
-                           GARROW_TYPE_INT64_DATA_TYPE, \
-                           GArrowInt64DataTypeClass))
-#define GARROW_IS_INT64_DATA_TYPE(obj)                          \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
-                              GARROW_TYPE_INT64_DATA_TYPE))
-#define GARROW_IS_INT64_DATA_TYPE_CLASS(klass)                  \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
-                           GARROW_TYPE_INT64_DATA_TYPE))
-#define GARROW_INT64_DATA_TYPE_GET_CLASS(obj)                   \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
-                             GARROW_TYPE_INT64_DATA_TYPE,       \
-                             GArrowInt64DataTypeClass))
-
-typedef struct _GArrowInt64DataType         GArrowInt64DataType;
-typedef struct _GArrowInt64DataTypeClass    GArrowInt64DataTypeClass;
-
-/**
- * GArrowInt64DataType:
- *
- * It wraps `arrow::Int64Type`.
- */
-struct _GArrowInt64DataType
-{
-  /*< private >*/
-  GArrowDataType parent_instance;
-};
-
+#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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowIntegerDataTypeClass parent_class;
 };
 
-GType                 garrow_int64_data_type_get_type (void) G_GNUC_CONST;
 GArrowInt64DataType  *garrow_int64_data_type_new      (void);
 
 
-#define GARROW_TYPE_UINT64_DATA_TYPE            \
-  (garrow_uint64_data_type_get_type())
-#define GARROW_UINT64_DATA_TYPE(obj)                            \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
-                              GARROW_TYPE_UINT64_DATA_TYPE,     \
-                              GArrowUInt64DataType))
-#define GARROW_UINT64_DATA_TYPE_CLASS(klass)                    \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                             \
-                           GARROW_TYPE_UINT64_DATA_TYPE,        \
-                           GArrowUInt64DataTypeClass))
-#define GARROW_IS_UINT64_DATA_TYPE(obj)                         \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
-                              GARROW_TYPE_UINT64_DATA_TYPE))
-#define GARROW_IS_UINT64_DATA_TYPE_CLASS(klass)                 \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
-                           GARROW_TYPE_UINT64_DATA_TYPE))
-#define GARROW_UINT64_DATA_TYPE_GET_CLASS(obj)                  \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
-                             GARROW_TYPE_UINT64_DATA_TYPE,      \
-                             GArrowUInt64DataTypeClass))
-
-typedef struct _GArrowUInt64DataType         GArrowUInt64DataType;
-typedef struct _GArrowUInt64DataTypeClass    GArrowUInt64DataTypeClass;
-
-/**
- * GArrowUInt64DataType:
- *
- * It wraps `arrow::UInt64Type`.
- */
-struct _GArrowUInt64DataType
-{
-  /*< private >*/
-  GArrowDataType parent_instance;
-};
-
+#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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowIntegerDataTypeClass parent_class;
 };
 
-GType                 garrow_uint64_data_type_get_type (void) G_GNUC_CONST;
 GArrowUInt64DataType *garrow_uint64_data_type_new      (void);
 
 
-#define GARROW_TYPE_FLOAT_DATA_TYPE           \
-  (garrow_float_data_type_get_type())
-#define GARROW_FLOAT_DATA_TYPE(obj)                           \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                          \
-                              GARROW_TYPE_FLOAT_DATA_TYPE,    \
-                              GArrowFloatDataType))
-#define GARROW_FLOAT_DATA_TYPE_CLASS(klass)                   \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                           \
-                           GARROW_TYPE_FLOAT_DATA_TYPE,       \
-                           GArrowFloatDataTypeClass))
-#define GARROW_IS_FLOAT_DATA_TYPE(obj)                        \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                          \
-                              GARROW_TYPE_FLOAT_DATA_TYPE))
-#define GARROW_IS_FLOAT_DATA_TYPE_CLASS(klass)                \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                           \
-                           GARROW_TYPE_FLOAT_DATA_TYPE))
-#define GARROW_FLOAT_DATA_TYPE_GET_CLASS(obj)                 \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                           \
-                             GARROW_TYPE_FLOAT_DATA_TYPE,     \
-                             GArrowFloatDataTypeClass))
-
-typedef struct _GArrowFloatDataType         GArrowFloatDataType;
-typedef struct _GArrowFloatDataTypeClass    GArrowFloatDataTypeClass;
-
-/**
- * GArrowFloatDataType:
- *
- * It wraps `arrow::FloatType`.
- */
-struct _GArrowFloatDataType
+#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
 {
-  /*< private >*/
-  GArrowDataType parent_instance;
+  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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowFloatingPointDataTypeClass parent_class;
 };
 
-GType                garrow_float_data_type_get_type (void) G_GNUC_CONST;
 GArrowFloatDataType *garrow_float_data_type_new      (void);
 
 
-#define GARROW_TYPE_DOUBLE_DATA_TYPE           \
-  (garrow_double_data_type_get_type())
-#define GARROW_DOUBLE_DATA_TYPE(obj)                            \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
-                              GARROW_TYPE_DOUBLE_DATA_TYPE,     \
-                              GArrowDoubleDataType))
-#define GARROW_DOUBLE_DATA_TYPE_CLASS(klass)                    \
-  (G_TYPE_CHECK_CLASS_CAST((klass),                             \
-                           GARROW_TYPE_DOUBLE_DATA_TYPE,        \
-                           GArrowDoubleDataTypeClass))
-#define GARROW_IS_DOUBLE_DATA_TYPE(obj)                         \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
-                              GARROW_TYPE_DOUBLE_DATA_TYPE))
-#define GARROW_IS_DOUBLE_DATA_TYPE_CLASS(klass)                 \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
-                           GARROW_TYPE_DOUBLE_DATA_TYPE))
-#define GARROW_DOUBLE_DATA_TYPE_GET_CLASS(obj)                  \
-  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
-                             GARROW_TYPE_DOUBLE_DATA_TYPE,      \
-                             GArrowDoubleDataTypeClass))
-
-typedef struct _GArrowDoubleDataType         GArrowDoubleDataType;
-typedef struct _GArrowDoubleDataTypeClass    GArrowDoubleDataTypeClass;
-
-/**
- * GArrowDoubleDataType:
- *
- * It wraps `arrow::DoubleType`.
- */
-struct _GArrowDoubleDataType
-{
-  /*< private >*/
-  GArrowDataType parent_instance;
-};
-
+#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
 {
-  GArrowDataTypeClass parent_class;
+  GArrowFloatingPointDataTypeClass parent_class;
 };
 
-GType                 garrow_double_data_type_get_type (void) G_GNUC_CONST;
 GArrowDoubleDataType *garrow_double_data_type_new      (void);
 
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> [GLib] Add  Numeric, Integer and FloatingPoint data types
> ---------------------------------------------------------
>
>                 Key: ARROW-2289
>                 URL: https://issues.apache.org/jira/browse/ARROW-2289
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: GLib
>    Affects Versions: 0.8.0
>            Reporter: Kouhei Sutou
>            Assignee: Kouhei Sutou
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 0.9.0
>
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to