arrow-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From w...@apache.org
Subject [3/9] arrow git commit: ARROW-631: [GLib] Import
Date Fri, 17 Mar 2017 01:09:50 GMT
http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/table.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/table.h b/c_glib/arrow-glib/table.h
new file mode 100644
index 0000000..34a89a7
--- /dev/null
+++ b/c_glib/arrow-glib/table.h
@@ -0,0 +1,80 @@
+/*
+ * 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/column.h>
+#include <arrow-glib/schema.h>
+
+G_BEGIN_DECLS
+
+#define GARROW_TYPE_TABLE                       \
+  (garrow_table_get_type())
+#define GARROW_TABLE(obj)                               \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),                    \
+                              GARROW_TYPE_TABLE,        \
+                              GArrowTable))
+#define GARROW_TABLE_CLASS(klass)               \
+  (G_TYPE_CHECK_CLASS_CAST((klass),             \
+                           GARROW_TYPE_TABLE,   \
+                           GArrowTableClass))
+#define GARROW_IS_TABLE(obj)                            \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                    \
+                              GARROW_TYPE_TABLE))
+#define GARROW_IS_TABLE_CLASS(klass)            \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),             \
+                           GARROW_TYPE_TABLE))
+#define GARROW_TABLE_GET_CLASS(obj)             \
+  (G_TYPE_INSTANCE_GET_CLASS((obj),             \
+                             GARROW_TYPE_TABLE, \
+                             GArrowTableClass))
+
+typedef struct _GArrowTable         GArrowTable;
+typedef struct _GArrowTableClass    GArrowTableClass;
+
+/**
+ * GArrowTable:
+ *
+ * It wraps `arrow::Table`.
+ */
+struct _GArrowTable
+{
+  /*< private >*/
+  GObject parent_instance;
+};
+
+struct _GArrowTableClass
+{
+  GObjectClass parent_class;
+};
+
+GType           garrow_table_get_type      (void) G_GNUC_CONST;
+
+GArrowTable    *garrow_table_new           (const gchar *name,
+                                            GArrowSchema *schema,
+                                            GList *columns);
+
+const gchar    *garrow_table_get_name      (GArrowTable *table);
+GArrowSchema   *garrow_table_get_schema    (GArrowTable *table);
+GArrowColumn   *garrow_table_get_column    (GArrowTable *table,
+                                            guint i);
+guint           garrow_table_get_n_columns (GArrowTable *table);
+guint64         garrow_table_get_n_rows    (GArrowTable *table);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/table.hpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/table.hpp b/c_glib/arrow-glib/table.hpp
new file mode 100644
index 0000000..22b0fad
--- /dev/null
+++ b/c_glib/arrow-glib/table.hpp
@@ -0,0 +1,27 @@
+/*
+ * 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/api.h>
+
+#include <arrow-glib/table.h>
+
+GArrowTable *garrow_table_new_raw(std::shared_ptr<arrow::Table> *arrow_table);
+std::shared_ptr<arrow::Table> garrow_table_get_raw(GArrowTable *table);

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/type.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/type.cpp b/c_glib/arrow-glib/type.cpp
new file mode 100644
index 0000000..56cbc21
--- /dev/null
+++ b/c_glib/arrow-glib/type.cpp
@@ -0,0 +1,90 @@
+/*
+ * 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/type.hpp>
+
+/**
+ * SECTION: type
+ * @title: GArrowType
+ * @short_description: Type mapping between Arrow and arrow-glib
+ *
+ * #GArrowType provides types corresponding to `arrow::Type::type`
+ * values.
+ */
+
+GArrowType
+garrow_type_from_raw(arrow::Type::type type)
+{
+  switch (type) {
+  case arrow::Type::type::NA:
+    return GARROW_TYPE_NA;
+  case arrow::Type::type::BOOL:
+    return GARROW_TYPE_BOOL;
+  case arrow::Type::type::UINT8:
+    return GARROW_TYPE_UINT8;
+  case arrow::Type::type::INT8:
+    return GARROW_TYPE_INT8;
+  case arrow::Type::type::UINT16:
+    return GARROW_TYPE_UINT16;
+  case arrow::Type::type::INT16:
+    return GARROW_TYPE_INT16;
+  case arrow::Type::type::UINT32:
+    return GARROW_TYPE_UINT32;
+  case arrow::Type::type::INT32:
+    return GARROW_TYPE_INT32;
+  case arrow::Type::type::UINT64:
+    return GARROW_TYPE_UINT64;
+  case arrow::Type::type::INT64:
+    return GARROW_TYPE_INT64;
+  case arrow::Type::type::HALF_FLOAT:
+    return GARROW_TYPE_HALF_FLOAT;
+  case arrow::Type::type::FLOAT:
+    return GARROW_TYPE_FLOAT;
+  case arrow::Type::type::DOUBLE:
+    return GARROW_TYPE_DOUBLE;
+  case arrow::Type::type::STRING:
+    return GARROW_TYPE_STRING;
+  case arrow::Type::type::BINARY:
+    return GARROW_TYPE_BINARY;
+  case arrow::Type::type::DATE:
+    return GARROW_TYPE_DATE;
+  case arrow::Type::type::TIMESTAMP:
+    return GARROW_TYPE_TIMESTAMP;
+  case arrow::Type::type::TIME:
+    return GARROW_TYPE_TIME;
+  case arrow::Type::type::INTERVAL:
+    return GARROW_TYPE_INTERVAL;
+  case arrow::Type::type::DECIMAL:
+    return GARROW_TYPE_DECIMAL;
+  case arrow::Type::type::LIST:
+    return GARROW_TYPE_LIST;
+  case arrow::Type::type::STRUCT:
+    return GARROW_TYPE_STRUCT;
+  case arrow::Type::type::UNION:
+    return GARROW_TYPE_UNION;
+  case arrow::Type::type::DICTIONARY:
+    return GARROW_TYPE_DICTIONARY;
+  default:
+    return GARROW_TYPE_NA;
+  }
+}

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/type.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/type.h b/c_glib/arrow-glib/type.h
new file mode 100644
index 0000000..48d2801
--- /dev/null
+++ b/c_glib/arrow-glib/type.h
@@ -0,0 +1,84 @@
+/*
+ * 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 <glib-object.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GArrowType:
+ * @GARROW_TYPE_NA: A degenerate NULL type represented as 0 bytes/bits.
+ * @GARROW_TYPE_BOOL: A boolean value represented as 1 bit.
+ * @GARROW_TYPE_UINT8: Little-endian 8bit unsigned integer.
+ * @GARROW_TYPE_INT8: Little-endian 8bit signed integer.
+ * @GARROW_TYPE_UINT16: Little-endian 16bit unsigned integer.
+ * @GARROW_TYPE_INT16: Little-endian 16bit signed integer.
+ * @GARROW_TYPE_UINT32: Little-endian 32bit unsigned integer.
+ * @GARROW_TYPE_INT32: Little-endian 32bit signed integer.
+ * @GARROW_TYPE_UINT64: Little-endian 64bit unsigned integer.
+ * @GARROW_TYPE_INT64: Little-endian 64bit signed integer.
+ * @GARROW_TYPE_HALF_FLOAT: 2-byte floating point value.
+ * @GARROW_TYPE_FLOAT: 4-byte floating point value.
+ * @GARROW_TYPE_DOUBLE: 8-byte floating point value.
+ * @GARROW_TYPE_STRING: UTF-8 variable-length string.
+ * @GARROW_TYPE_BINARY: Variable-length bytes (no guarantee of UTF-8-ness).
+ * @GARROW_TYPE_DATE: By default, int32 days since the UNIX epoch.
+ * @GARROW_TYPE_TIMESTAMP: Exact timestamp encoded with int64 since UNIX epoch.
+ *   Default unit millisecond.
+ * @GARROW_TYPE_TIME: Exact time encoded with int64, default unit millisecond.
+ * @GARROW_TYPE_INTERVAL: YEAR_MONTH or DAY_TIME interval in SQL style.
+ * @GARROW_TYPE_DECIMAL: Precision- and scale-based decimal
+ *   type. Storage type depends on the parameters.
+ * @GARROW_TYPE_LIST: A list of some logical data type.
+ * @GARROW_TYPE_STRUCT: Struct of logical types.
+ * @GARROW_TYPE_UNION: Unions of logical types.
+ * @GARROW_TYPE_DICTIONARY: Dictionary aka Category type.
+ *
+ * They are corresponding to `arrow::Type::type` values.
+ */
+typedef enum {
+  GARROW_TYPE_NA,
+  GARROW_TYPE_BOOL,
+  GARROW_TYPE_UINT8,
+  GARROW_TYPE_INT8,
+  GARROW_TYPE_UINT16,
+  GARROW_TYPE_INT16,
+  GARROW_TYPE_UINT32,
+  GARROW_TYPE_INT32,
+  GARROW_TYPE_UINT64,
+  GARROW_TYPE_INT64,
+  GARROW_TYPE_HALF_FLOAT,
+  GARROW_TYPE_FLOAT,
+  GARROW_TYPE_DOUBLE,
+  GARROW_TYPE_STRING,
+  GARROW_TYPE_BINARY,
+  GARROW_TYPE_DATE,
+  GARROW_TYPE_TIMESTAMP,
+  GARROW_TYPE_TIME,
+  GARROW_TYPE_INTERVAL,
+  GARROW_TYPE_DECIMAL,
+  GARROW_TYPE_LIST,
+  GARROW_TYPE_STRUCT,
+  GARROW_TYPE_UNION,
+  GARROW_TYPE_DICTIONARY
+} GArrowType;
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/type.hpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/type.hpp b/c_glib/arrow-glib/type.hpp
new file mode 100644
index 0000000..2a452be
--- /dev/null
+++ b/c_glib/arrow-glib/type.hpp
@@ -0,0 +1,26 @@
+/*
+ * 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/api.h>
+
+#include <arrow-glib/type.h>
+
+GArrowType garrow_type_from_raw(arrow::Type::type type);

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint16-array-builder.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint16-array-builder.cpp b/c_glib/arrow-glib/uint16-array-builder.cpp
new file mode 100644
index 0000000..bfade2d
--- /dev/null
+++ b/c_glib/arrow-glib/uint16-array-builder.cpp
@@ -0,0 +1,120 @@
+/*
+ * 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-builder.hpp>
+#include <arrow-glib/error.hpp>
+#include <arrow-glib/uint16-array-builder.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint16-array-builder
+ * @short_description: 16-bit unsigned integer array builder class
+ *
+ * #GArrowUInt16ArrayBuilder is the class to create a new
+ * #GArrowUInt16Array.
+ */
+
+G_DEFINE_TYPE(GArrowUInt16ArrayBuilder,
+              garrow_uint16_array_builder,
+              GARROW_TYPE_ARRAY_BUILDER)
+
+static void
+garrow_uint16_array_builder_init(GArrowUInt16ArrayBuilder *builder)
+{
+}
+
+static void
+garrow_uint16_array_builder_class_init(GArrowUInt16ArrayBuilderClass *klass)
+{
+}
+
+/**
+ * garrow_uint16_array_builder_new:
+ *
+ * Returns: A newly created #GArrowUInt16ArrayBuilder.
+ */
+GArrowUInt16ArrayBuilder *
+garrow_uint16_array_builder_new(void)
+{
+  auto memory_pool = arrow::default_memory_pool();
+  auto arrow_builder =
+    std::make_shared<arrow::UInt16Builder>(memory_pool, arrow::uint16());
+  auto builder =
+    GARROW_UINT16_ARRAY_BUILDER(g_object_new(GARROW_TYPE_UINT16_ARRAY_BUILDER,
+                                            "array-builder", &arrow_builder,
+                                            NULL));
+  return builder;
+}
+
+/**
+ * garrow_uint16_array_builder_append:
+ * @builder: A #GArrowUInt16ArrayBuilder.
+ * @value: An uint16 value.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ */
+gboolean
+garrow_uint16_array_builder_append(GArrowUInt16ArrayBuilder *builder,
+                                  guint16 value,
+                                  GError **error)
+{
+  auto arrow_builder =
+    static_cast<arrow::UInt16Builder *>(
+      garrow_array_builder_get_raw(GARROW_ARRAY_BUILDER(builder)).get());
+
+  auto status = arrow_builder->Append(value);
+  if (status.ok()) {
+    return TRUE;
+  } else {
+    garrow_error_set(error, status, "[uint16-array-builder][append]");
+    return FALSE;
+  }
+}
+
+/**
+ * garrow_uint16_array_builder_append_null:
+ * @builder: A #GArrowUInt16ArrayBuilder.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ */
+gboolean
+garrow_uint16_array_builder_append_null(GArrowUInt16ArrayBuilder *builder,
+                                       GError **error)
+{
+  auto arrow_builder =
+    static_cast<arrow::UInt16Builder *>(
+      garrow_array_builder_get_raw(GARROW_ARRAY_BUILDER(builder)).get());
+
+  auto status = arrow_builder->AppendNull();
+  if (status.ok()) {
+    return TRUE;
+  } else {
+    garrow_error_set(error, status, "[uint16-array-builder][append-null]");
+    return FALSE;
+  }
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint16-array-builder.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint16-array-builder.h b/c_glib/arrow-glib/uint16-array-builder.h
new file mode 100644
index 0000000..c08966e
--- /dev/null
+++ b/c_glib/arrow-glib/uint16-array-builder.h
@@ -0,0 +1,76 @@
+/*
+ * 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/array-builder.h>
+
+G_BEGIN_DECLS
+
+#define GARROW_TYPE_UINT16_ARRAY_BUILDER         \
+  (garrow_uint16_array_builder_get_type())
+#define GARROW_UINT16_ARRAY_BUILDER(obj)                         \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
+                              GARROW_TYPE_UINT16_ARRAY_BUILDER,  \
+                              GArrowUInt16ArrayBuilder))
+#define GARROW_UINT16_ARRAY_BUILDER_CLASS(klass)                 \
+  (G_TYPE_CHECK_CLASS_CAST((klass),                             \
+                           GARROW_TYPE_UINT16_ARRAY_BUILDER,     \
+                           GArrowUInt16ArrayBuilderClass))
+#define GARROW_IS_UINT16_ARRAY_BUILDER(obj)                      \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
+                              GARROW_TYPE_UINT16_ARRAY_BUILDER))
+#define GARROW_IS_UINT16_ARRAY_BUILDER_CLASS(klass)              \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
+                           GARROW_TYPE_UINT16_ARRAY_BUILDER))
+#define GARROW_UINT16_ARRAY_BUILDER_GET_CLASS(obj)               \
+  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
+                             GARROW_TYPE_UINT16_ARRAY_BUILDER,   \
+                             GArrowUInt16ArrayBuilderClass))
+
+typedef struct _GArrowUInt16ArrayBuilder         GArrowUInt16ArrayBuilder;
+typedef struct _GArrowUInt16ArrayBuilderClass    GArrowUInt16ArrayBuilderClass;
+
+/**
+ * GArrowUInt16ArrayBuilder:
+ *
+ * It wraps `arrow::UInt16Builder`.
+ */
+struct _GArrowUInt16ArrayBuilder
+{
+  /*< private >*/
+  GArrowArrayBuilder parent_instance;
+};
+
+struct _GArrowUInt16ArrayBuilderClass
+{
+  GArrowArrayBuilderClass parent_class;
+};
+
+GType garrow_uint16_array_builder_get_type(void) G_GNUC_CONST;
+
+GArrowUInt16ArrayBuilder *garrow_uint16_array_builder_new(void);
+
+gboolean garrow_uint16_array_builder_append(GArrowUInt16ArrayBuilder *builder,
+                                           guint16 value,
+                                           GError **error);
+gboolean garrow_uint16_array_builder_append_null(GArrowUInt16ArrayBuilder *builder,
+                                                GError **error);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint16-array.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint16-array.cpp b/c_glib/arrow-glib/uint16-array.cpp
new file mode 100644
index 0000000..6c416c6
--- /dev/null
+++ b/c_glib/arrow-glib/uint16-array.cpp
@@ -0,0 +1,69 @@
+/*
+ * 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/uint16-array.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint16-array
+ * @short_description: 16-bit unsigned integer array class
+ *
+ * #GArrowUInt16Array is a class for 16-bit unsigned integer array. It
+ * can store zero or more 16-bit unsigned integer data.
+ *
+ * #GArrowUInt16Array is immutable. You need to use
+ * #GArrowUInt16ArrayBuilder to create a new array.
+ */
+
+G_DEFINE_TYPE(GArrowUInt16Array,               \
+              garrow_uint16_array,             \
+              GARROW_TYPE_ARRAY)
+
+static void
+garrow_uint16_array_init(GArrowUInt16Array *object)
+{
+}
+
+static void
+garrow_uint16_array_class_init(GArrowUInt16ArrayClass *klass)
+{
+}
+
+/**
+ * garrow_uint16_array_get_value:
+ * @array: A #GArrowUInt16Array.
+ * @i: The index of the target value.
+ *
+ * Returns: The i-th value.
+ */
+guint16
+garrow_uint16_array_get_value(GArrowUInt16Array *array,
+                             gint64 i)
+{
+  auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
+  return static_cast<arrow::UInt16Array *>(arrow_array.get())->Value(i);
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint16-array.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint16-array.h b/c_glib/arrow-glib/uint16-array.h
new file mode 100644
index 0000000..4472551
--- /dev/null
+++ b/c_glib/arrow-glib/uint16-array.h
@@ -0,0 +1,71 @@
+/*
+ * 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/array.h>
+
+G_BEGIN_DECLS
+
+#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 >*/
+  GArrowArray parent_instance;
+};
+
+struct _GArrowUInt16ArrayClass
+{
+  GArrowArrayClass parent_class;
+};
+
+GType garrow_uint16_array_get_type(void) G_GNUC_CONST;
+
+guint16 garrow_uint16_array_get_value(GArrowUInt16Array *array,
+                                    gint64 i);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint16-data-type.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint16-data-type.cpp b/c_glib/arrow-glib/uint16-data-type.cpp
new file mode 100644
index 0000000..918b75d
--- /dev/null
+++ b/c_glib/arrow-glib/uint16-data-type.cpp
@@ -0,0 +1,67 @@
+/*
+ * 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/data-type.hpp>
+#include <arrow-glib/uint16-data-type.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint16-data-type
+ * @short_description: 16-bit unsigned integer data type
+ *
+ * #GArrowUInt16DataType is a class for 16-bit unsigned integer data type.
+ */
+
+G_DEFINE_TYPE(GArrowUInt16DataType,                \
+              garrow_uint16_data_type,             \
+              GARROW_TYPE_DATA_TYPE)
+
+static void
+garrow_uint16_data_type_init(GArrowUInt16DataType *object)
+{
+}
+
+static void
+garrow_uint16_data_type_class_init(GArrowUInt16DataTypeClass *klass)
+{
+}
+
+/**
+ * garrow_uint16_data_type_new:
+ *
+ * Returns: The newly created 16-bit unsigned integer data type.
+ */
+GArrowUInt16DataType *
+garrow_uint16_data_type_new(void)
+{
+  auto arrow_data_type = arrow::uint16();
+
+  GArrowUInt16DataType *data_type =
+    GARROW_UINT16_DATA_TYPE(g_object_new(GARROW_TYPE_UINT16_DATA_TYPE,
+                                         "data-type", &arrow_data_type,
+                                         NULL));
+  return data_type;
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint16-data-type.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint16-data-type.h b/c_glib/arrow-glib/uint16-data-type.h
new file mode 100644
index 0000000..b65189d
--- /dev/null
+++ b/c_glib/arrow-glib/uint16-data-type.h
@@ -0,0 +1,69 @@
+/*
+ * 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/data-type.h>
+
+G_BEGIN_DECLS
+
+#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;
+};
+
+struct _GArrowUInt16DataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GType                 garrow_uint16_data_type_get_type (void) G_GNUC_CONST;
+GArrowUInt16DataType *garrow_uint16_data_type_new      (void);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint32-array-builder.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint32-array-builder.cpp b/c_glib/arrow-glib/uint32-array-builder.cpp
new file mode 100644
index 0000000..35b1893
--- /dev/null
+++ b/c_glib/arrow-glib/uint32-array-builder.cpp
@@ -0,0 +1,120 @@
+/*
+ * 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-builder.hpp>
+#include <arrow-glib/error.hpp>
+#include <arrow-glib/uint32-array-builder.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint32-array-builder
+ * @short_description: 32-bit unsigned integer array builder class
+ *
+ * #GArrowUInt32ArrayBuilder is the class to create a new
+ * #GArrowUInt32Array.
+ */
+
+G_DEFINE_TYPE(GArrowUInt32ArrayBuilder,
+              garrow_uint32_array_builder,
+              GARROW_TYPE_ARRAY_BUILDER)
+
+static void
+garrow_uint32_array_builder_init(GArrowUInt32ArrayBuilder *builder)
+{
+}
+
+static void
+garrow_uint32_array_builder_class_init(GArrowUInt32ArrayBuilderClass *klass)
+{
+}
+
+/**
+ * garrow_uint32_array_builder_new:
+ *
+ * Returns: A newly created #GArrowUInt32ArrayBuilder.
+ */
+GArrowUInt32ArrayBuilder *
+garrow_uint32_array_builder_new(void)
+{
+  auto memory_pool = arrow::default_memory_pool();
+  auto arrow_builder =
+    std::make_shared<arrow::UInt32Builder>(memory_pool, arrow::uint32());
+  auto builder =
+    GARROW_UINT32_ARRAY_BUILDER(g_object_new(GARROW_TYPE_UINT32_ARRAY_BUILDER,
+                                            "array-builder", &arrow_builder,
+                                            NULL));
+  return builder;
+}
+
+/**
+ * garrow_uint32_array_builder_append:
+ * @builder: A #GArrowUInt32ArrayBuilder.
+ * @value: An uint32 value.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ */
+gboolean
+garrow_uint32_array_builder_append(GArrowUInt32ArrayBuilder *builder,
+                                  guint32 value,
+                                  GError **error)
+{
+  auto arrow_builder =
+    static_cast<arrow::UInt32Builder *>(
+      garrow_array_builder_get_raw(GARROW_ARRAY_BUILDER(builder)).get());
+
+  auto status = arrow_builder->Append(value);
+  if (status.ok()) {
+    return TRUE;
+  } else {
+    garrow_error_set(error, status, "[uint32-array-builder][append]");
+    return FALSE;
+  }
+}
+
+/**
+ * garrow_uint32_array_builder_append_null:
+ * @builder: A #GArrowUInt32ArrayBuilder.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ */
+gboolean
+garrow_uint32_array_builder_append_null(GArrowUInt32ArrayBuilder *builder,
+                                       GError **error)
+{
+  auto arrow_builder =
+    static_cast<arrow::UInt32Builder *>(
+      garrow_array_builder_get_raw(GARROW_ARRAY_BUILDER(builder)).get());
+
+  auto status = arrow_builder->AppendNull();
+  if (status.ok()) {
+    return TRUE;
+  } else {
+    garrow_error_set(error, status, "[uint32-array-builder][append-null]");
+    return FALSE;
+  }
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint32-array-builder.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint32-array-builder.h b/c_glib/arrow-glib/uint32-array-builder.h
new file mode 100644
index 0000000..4881d3b
--- /dev/null
+++ b/c_glib/arrow-glib/uint32-array-builder.h
@@ -0,0 +1,76 @@
+/*
+ * 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/array-builder.h>
+
+G_BEGIN_DECLS
+
+#define GARROW_TYPE_UINT32_ARRAY_BUILDER         \
+  (garrow_uint32_array_builder_get_type())
+#define GARROW_UINT32_ARRAY_BUILDER(obj)                         \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
+                              GARROW_TYPE_UINT32_ARRAY_BUILDER,  \
+                              GArrowUInt32ArrayBuilder))
+#define GARROW_UINT32_ARRAY_BUILDER_CLASS(klass)                 \
+  (G_TYPE_CHECK_CLASS_CAST((klass),                             \
+                           GARROW_TYPE_UINT32_ARRAY_BUILDER,     \
+                           GArrowUInt32ArrayBuilderClass))
+#define GARROW_IS_UINT32_ARRAY_BUILDER(obj)                      \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
+                              GARROW_TYPE_UINT32_ARRAY_BUILDER))
+#define GARROW_IS_UINT32_ARRAY_BUILDER_CLASS(klass)              \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
+                           GARROW_TYPE_UINT32_ARRAY_BUILDER))
+#define GARROW_UINT32_ARRAY_BUILDER_GET_CLASS(obj)               \
+  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
+                             GARROW_TYPE_UINT32_ARRAY_BUILDER,   \
+                             GArrowUInt32ArrayBuilderClass))
+
+typedef struct _GArrowUInt32ArrayBuilder         GArrowUInt32ArrayBuilder;
+typedef struct _GArrowUInt32ArrayBuilderClass    GArrowUInt32ArrayBuilderClass;
+
+/**
+ * GArrowUInt32ArrayBuilder:
+ *
+ * It wraps `arrow::UInt32Builder`.
+ */
+struct _GArrowUInt32ArrayBuilder
+{
+  /*< private >*/
+  GArrowArrayBuilder parent_instance;
+};
+
+struct _GArrowUInt32ArrayBuilderClass
+{
+  GArrowArrayBuilderClass parent_class;
+};
+
+GType garrow_uint32_array_builder_get_type(void) G_GNUC_CONST;
+
+GArrowUInt32ArrayBuilder *garrow_uint32_array_builder_new(void);
+
+gboolean garrow_uint32_array_builder_append(GArrowUInt32ArrayBuilder *builder,
+                                           guint32 value,
+                                           GError **error);
+gboolean garrow_uint32_array_builder_append_null(GArrowUInt32ArrayBuilder *builder,
+                                                GError **error);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint32-array.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint32-array.cpp b/c_glib/arrow-glib/uint32-array.cpp
new file mode 100644
index 0000000..d10f100
--- /dev/null
+++ b/c_glib/arrow-glib/uint32-array.cpp
@@ -0,0 +1,69 @@
+/*
+ * 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/uint32-array.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint32-array
+ * @short_description: 32-bit unsigned integer array class
+ *
+ * #GArrowUInt32Array is a class for 32-bit unsigned integer array. It
+ * can store zero or more 32-bit unsigned integer data.
+ *
+ * #GArrowUInt32Array is immutable. You need to use
+ * #GArrowUInt32ArrayBuilder to create a new array.
+ */
+
+G_DEFINE_TYPE(GArrowUInt32Array,               \
+              garrow_uint32_array,             \
+              GARROW_TYPE_ARRAY)
+
+static void
+garrow_uint32_array_init(GArrowUInt32Array *object)
+{
+}
+
+static void
+garrow_uint32_array_class_init(GArrowUInt32ArrayClass *klass)
+{
+}
+
+/**
+ * garrow_uint32_array_get_value:
+ * @array: A #GArrowUInt32Array.
+ * @i: The index of the target value.
+ *
+ * Returns: The i-th value.
+ */
+guint32
+garrow_uint32_array_get_value(GArrowUInt32Array *array,
+                             gint64 i)
+{
+  auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
+  return static_cast<arrow::UInt32Array *>(arrow_array.get())->Value(i);
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint32-array.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint32-array.h b/c_glib/arrow-glib/uint32-array.h
new file mode 100644
index 0000000..57d4bea
--- /dev/null
+++ b/c_glib/arrow-glib/uint32-array.h
@@ -0,0 +1,71 @@
+/*
+ * 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/array.h>
+
+G_BEGIN_DECLS
+
+#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 >*/
+  GArrowArray parent_instance;
+};
+
+struct _GArrowUInt32ArrayClass
+{
+  GArrowArrayClass parent_class;
+};
+
+GType garrow_uint32_array_get_type(void) G_GNUC_CONST;
+
+guint32 garrow_uint32_array_get_value(GArrowUInt32Array *array,
+                                    gint64 i);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint32-data-type.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint32-data-type.cpp b/c_glib/arrow-glib/uint32-data-type.cpp
new file mode 100644
index 0000000..fde14f3
--- /dev/null
+++ b/c_glib/arrow-glib/uint32-data-type.cpp
@@ -0,0 +1,67 @@
+/*
+ * 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/data-type.hpp>
+#include <arrow-glib/uint32-data-type.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint32-data-type
+ * @short_description: 32-bit unsigned integer data type
+ *
+ * #GArrowUInt32DataType is a class for 32-bit unsigned integer data type.
+ */
+
+G_DEFINE_TYPE(GArrowUInt32DataType,                \
+              garrow_uint32_data_type,             \
+              GARROW_TYPE_DATA_TYPE)
+
+static void
+garrow_uint32_data_type_init(GArrowUInt32DataType *object)
+{
+}
+
+static void
+garrow_uint32_data_type_class_init(GArrowUInt32DataTypeClass *klass)
+{
+}
+
+/**
+ * garrow_uint32_data_type_new:
+ *
+ * Returns: The newly created 32-bit unsigned integer data type.
+ */
+GArrowUInt32DataType *
+garrow_uint32_data_type_new(void)
+{
+  auto arrow_data_type = arrow::uint32();
+
+  GArrowUInt32DataType *data_type =
+    GARROW_UINT32_DATA_TYPE(g_object_new(GARROW_TYPE_UINT32_DATA_TYPE,
+                                         "data-type", &arrow_data_type,
+                                         NULL));
+  return data_type;
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint32-data-type.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint32-data-type.h b/c_glib/arrow-glib/uint32-data-type.h
new file mode 100644
index 0000000..4fe60cd
--- /dev/null
+++ b/c_glib/arrow-glib/uint32-data-type.h
@@ -0,0 +1,69 @@
+/*
+ * 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/data-type.h>
+
+G_BEGIN_DECLS
+
+#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;
+};
+
+struct _GArrowUInt32DataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GType                 garrow_uint32_data_type_get_type (void) G_GNUC_CONST;
+GArrowUInt32DataType *garrow_uint32_data_type_new      (void);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint64-array-builder.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint64-array-builder.cpp b/c_glib/arrow-glib/uint64-array-builder.cpp
new file mode 100644
index 0000000..85d24ca
--- /dev/null
+++ b/c_glib/arrow-glib/uint64-array-builder.cpp
@@ -0,0 +1,120 @@
+/*
+ * 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-builder.hpp>
+#include <arrow-glib/error.hpp>
+#include <arrow-glib/uint64-array-builder.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint64-array-builder
+ * @short_description: 64-bit unsigned integer array builder class
+ *
+ * #GArrowUInt64ArrayBuilder is the class to create a new
+ * #GArrowUInt64Array.
+ */
+
+G_DEFINE_TYPE(GArrowUInt64ArrayBuilder,
+              garrow_uint64_array_builder,
+              GARROW_TYPE_ARRAY_BUILDER)
+
+static void
+garrow_uint64_array_builder_init(GArrowUInt64ArrayBuilder *builder)
+{
+}
+
+static void
+garrow_uint64_array_builder_class_init(GArrowUInt64ArrayBuilderClass *klass)
+{
+}
+
+/**
+ * garrow_uint64_array_builder_new:
+ *
+ * Returns: A newly created #GArrowUInt64ArrayBuilder.
+ */
+GArrowUInt64ArrayBuilder *
+garrow_uint64_array_builder_new(void)
+{
+  auto memory_pool = arrow::default_memory_pool();
+  auto arrow_builder =
+    std::make_shared<arrow::UInt64Builder>(memory_pool, arrow::uint64());
+  auto builder =
+    GARROW_UINT64_ARRAY_BUILDER(g_object_new(GARROW_TYPE_UINT64_ARRAY_BUILDER,
+                                            "array-builder", &arrow_builder,
+                                            NULL));
+  return builder;
+}
+
+/**
+ * garrow_uint64_array_builder_append:
+ * @builder: A #GArrowUInt64ArrayBuilder.
+ * @value: An uint64 value.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ */
+gboolean
+garrow_uint64_array_builder_append(GArrowUInt64ArrayBuilder *builder,
+                                  guint64 value,
+                                  GError **error)
+{
+  auto arrow_builder =
+    static_cast<arrow::UInt64Builder *>(
+      garrow_array_builder_get_raw(GARROW_ARRAY_BUILDER(builder)).get());
+
+  auto status = arrow_builder->Append(value);
+  if (status.ok()) {
+    return TRUE;
+  } else {
+    garrow_error_set(error, status, "[uint64-array-builder][append]");
+    return FALSE;
+  }
+}
+
+/**
+ * garrow_uint64_array_builder_append_null:
+ * @builder: A #GArrowUInt64ArrayBuilder.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ */
+gboolean
+garrow_uint64_array_builder_append_null(GArrowUInt64ArrayBuilder *builder,
+                                       GError **error)
+{
+  auto arrow_builder =
+    static_cast<arrow::UInt64Builder *>(
+      garrow_array_builder_get_raw(GARROW_ARRAY_BUILDER(builder)).get());
+
+  auto status = arrow_builder->AppendNull();
+  if (status.ok()) {
+    return TRUE;
+  } else {
+    garrow_error_set(error, status, "[uint64-array-builder][append-null]");
+    return FALSE;
+  }
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint64-array-builder.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint64-array-builder.h b/c_glib/arrow-glib/uint64-array-builder.h
new file mode 100644
index 0000000..c51d1e2
--- /dev/null
+++ b/c_glib/arrow-glib/uint64-array-builder.h
@@ -0,0 +1,76 @@
+/*
+ * 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/array-builder.h>
+
+G_BEGIN_DECLS
+
+#define GARROW_TYPE_UINT64_ARRAY_BUILDER         \
+  (garrow_uint64_array_builder_get_type())
+#define GARROW_UINT64_ARRAY_BUILDER(obj)                         \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
+                              GARROW_TYPE_UINT64_ARRAY_BUILDER,  \
+                              GArrowUInt64ArrayBuilder))
+#define GARROW_UINT64_ARRAY_BUILDER_CLASS(klass)                 \
+  (G_TYPE_CHECK_CLASS_CAST((klass),                             \
+                           GARROW_TYPE_UINT64_ARRAY_BUILDER,     \
+                           GArrowUInt64ArrayBuilderClass))
+#define GARROW_IS_UINT64_ARRAY_BUILDER(obj)                      \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
+                              GARROW_TYPE_UINT64_ARRAY_BUILDER))
+#define GARROW_IS_UINT64_ARRAY_BUILDER_CLASS(klass)              \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
+                           GARROW_TYPE_UINT64_ARRAY_BUILDER))
+#define GARROW_UINT64_ARRAY_BUILDER_GET_CLASS(obj)               \
+  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
+                             GARROW_TYPE_UINT64_ARRAY_BUILDER,   \
+                             GArrowUInt64ArrayBuilderClass))
+
+typedef struct _GArrowUInt64ArrayBuilder         GArrowUInt64ArrayBuilder;
+typedef struct _GArrowUInt64ArrayBuilderClass    GArrowUInt64ArrayBuilderClass;
+
+/**
+ * GArrowUInt64ArrayBuilder:
+ *
+ * It wraps `arrow::UInt64Builder`.
+ */
+struct _GArrowUInt64ArrayBuilder
+{
+  /*< private >*/
+  GArrowArrayBuilder parent_instance;
+};
+
+struct _GArrowUInt64ArrayBuilderClass
+{
+  GArrowArrayBuilderClass parent_class;
+};
+
+GType garrow_uint64_array_builder_get_type(void) G_GNUC_CONST;
+
+GArrowUInt64ArrayBuilder *garrow_uint64_array_builder_new(void);
+
+gboolean garrow_uint64_array_builder_append(GArrowUInt64ArrayBuilder *builder,
+                                           guint64 value,
+                                           GError **error);
+gboolean garrow_uint64_array_builder_append_null(GArrowUInt64ArrayBuilder *builder,
+                                                GError **error);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint64-array.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint64-array.cpp b/c_glib/arrow-glib/uint64-array.cpp
new file mode 100644
index 0000000..1f90084
--- /dev/null
+++ b/c_glib/arrow-glib/uint64-array.cpp
@@ -0,0 +1,69 @@
+/*
+ * 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/uint64-array.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint64-array
+ * @short_description: 64-bit unsigned integer array class
+ *
+ * #GArrowUInt64Array is a class for 64-bit unsigned integer array. It
+ * can store zero or more 64-bit unsigned integer data.
+ *
+ * #GArrowUInt64Array is immutable. You need to use
+ * #GArrowUInt64ArrayBuilder to create a new array.
+ */
+
+G_DEFINE_TYPE(GArrowUInt64Array,               \
+              garrow_uint64_array,             \
+              GARROW_TYPE_ARRAY)
+
+static void
+garrow_uint64_array_init(GArrowUInt64Array *object)
+{
+}
+
+static void
+garrow_uint64_array_class_init(GArrowUInt64ArrayClass *klass)
+{
+}
+
+/**
+ * garrow_uint64_array_get_value:
+ * @array: A #GArrowUInt64Array.
+ * @i: The index of the target value.
+ *
+ * Returns: The i-th value.
+ */
+guint64
+garrow_uint64_array_get_value(GArrowUInt64Array *array,
+                             gint64 i)
+{
+  auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
+  return static_cast<arrow::UInt64Array *>(arrow_array.get())->Value(i);
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint64-array.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint64-array.h b/c_glib/arrow-glib/uint64-array.h
new file mode 100644
index 0000000..b5abde5
--- /dev/null
+++ b/c_glib/arrow-glib/uint64-array.h
@@ -0,0 +1,71 @@
+/*
+ * 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/array.h>
+
+G_BEGIN_DECLS
+
+#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 >*/
+  GArrowArray parent_instance;
+};
+
+struct _GArrowUInt64ArrayClass
+{
+  GArrowArrayClass parent_class;
+};
+
+GType garrow_uint64_array_get_type(void) G_GNUC_CONST;
+
+guint64 garrow_uint64_array_get_value(GArrowUInt64Array *array,
+                                    gint64 i);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint64-data-type.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint64-data-type.cpp b/c_glib/arrow-glib/uint64-data-type.cpp
new file mode 100644
index 0000000..7c18b36
--- /dev/null
+++ b/c_glib/arrow-glib/uint64-data-type.cpp
@@ -0,0 +1,67 @@
+/*
+ * 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/data-type.hpp>
+#include <arrow-glib/uint64-data-type.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint64-data-type
+ * @short_description: 64-bit unsigned integer data type
+ *
+ * #GArrowUInt64DataType is a class for 64-bit unsigned integer data type.
+ */
+
+G_DEFINE_TYPE(GArrowUInt64DataType,                \
+              garrow_uint64_data_type,             \
+              GARROW_TYPE_DATA_TYPE)
+
+static void
+garrow_uint64_data_type_init(GArrowUInt64DataType *object)
+{
+}
+
+static void
+garrow_uint64_data_type_class_init(GArrowUInt64DataTypeClass *klass)
+{
+}
+
+/**
+ * garrow_uint64_data_type_new:
+ *
+ * Returns: The newly created 64-bit unsigned integer data type.
+ */
+GArrowUInt64DataType *
+garrow_uint64_data_type_new(void)
+{
+  auto arrow_data_type = arrow::uint64();
+
+  GArrowUInt64DataType *data_type =
+    GARROW_UINT64_DATA_TYPE(g_object_new(GARROW_TYPE_UINT64_DATA_TYPE,
+                                         "data-type", &arrow_data_type,
+                                         NULL));
+  return data_type;
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint64-data-type.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint64-data-type.h b/c_glib/arrow-glib/uint64-data-type.h
new file mode 100644
index 0000000..221023c
--- /dev/null
+++ b/c_glib/arrow-glib/uint64-data-type.h
@@ -0,0 +1,69 @@
+/*
+ * 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/data-type.h>
+
+G_BEGIN_DECLS
+
+#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;
+};
+
+struct _GArrowUInt64DataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GType                 garrow_uint64_data_type_get_type (void) G_GNUC_CONST;
+GArrowUInt64DataType *garrow_uint64_data_type_new      (void);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint8-array-builder.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint8-array-builder.cpp b/c_glib/arrow-glib/uint8-array-builder.cpp
new file mode 100644
index 0000000..2f49693
--- /dev/null
+++ b/c_glib/arrow-glib/uint8-array-builder.cpp
@@ -0,0 +1,120 @@
+/*
+ * 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-builder.hpp>
+#include <arrow-glib/error.hpp>
+#include <arrow-glib/uint8-array-builder.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint8-array-builder
+ * @short_description: 8-bit unsigned integer array builder class
+ *
+ * #GArrowUInt8ArrayBuilder is the class to create a new
+ * #GArrowUInt8Array.
+ */
+
+G_DEFINE_TYPE(GArrowUInt8ArrayBuilder,
+              garrow_uint8_array_builder,
+              GARROW_TYPE_ARRAY_BUILDER)
+
+static void
+garrow_uint8_array_builder_init(GArrowUInt8ArrayBuilder *builder)
+{
+}
+
+static void
+garrow_uint8_array_builder_class_init(GArrowUInt8ArrayBuilderClass *klass)
+{
+}
+
+/**
+ * garrow_uint8_array_builder_new:
+ *
+ * Returns: A newly created #GArrowUInt8ArrayBuilder.
+ */
+GArrowUInt8ArrayBuilder *
+garrow_uint8_array_builder_new(void)
+{
+  auto memory_pool = arrow::default_memory_pool();
+  auto arrow_builder =
+    std::make_shared<arrow::UInt8Builder>(memory_pool, arrow::uint8());
+  auto builder =
+    GARROW_UINT8_ARRAY_BUILDER(g_object_new(GARROW_TYPE_UINT8_ARRAY_BUILDER,
+                                            "array-builder", &arrow_builder,
+                                            NULL));
+  return builder;
+}
+
+/**
+ * garrow_uint8_array_builder_append:
+ * @builder: A #GArrowUInt8ArrayBuilder.
+ * @value: An uint8 value.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ */
+gboolean
+garrow_uint8_array_builder_append(GArrowUInt8ArrayBuilder *builder,
+                                  guint8 value,
+                                  GError **error)
+{
+  auto arrow_builder =
+    static_cast<arrow::UInt8Builder *>(
+      garrow_array_builder_get_raw(GARROW_ARRAY_BUILDER(builder)).get());
+
+  auto status = arrow_builder->Append(value);
+  if (status.ok()) {
+    return TRUE;
+  } else {
+    garrow_error_set(error, status, "[uint8-array-builder][append]");
+    return FALSE;
+  }
+}
+
+/**
+ * garrow_uint8_array_builder_append_null:
+ * @builder: A #GArrowUInt8ArrayBuilder.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ */
+gboolean
+garrow_uint8_array_builder_append_null(GArrowUInt8ArrayBuilder *builder,
+                                       GError **error)
+{
+  auto arrow_builder =
+    static_cast<arrow::UInt8Builder *>(
+      garrow_array_builder_get_raw(GARROW_ARRAY_BUILDER(builder)).get());
+
+  auto status = arrow_builder->AppendNull();
+  if (status.ok()) {
+    return TRUE;
+  } else {
+    garrow_error_set(error, status, "[uint8-array-builder][append-null]");
+    return FALSE;
+  }
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint8-array-builder.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint8-array-builder.h b/c_glib/arrow-glib/uint8-array-builder.h
new file mode 100644
index 0000000..e721693
--- /dev/null
+++ b/c_glib/arrow-glib/uint8-array-builder.h
@@ -0,0 +1,76 @@
+/*
+ * 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/array-builder.h>
+
+G_BEGIN_DECLS
+
+#define GARROW_TYPE_UINT8_ARRAY_BUILDER         \
+  (garrow_uint8_array_builder_get_type())
+#define GARROW_UINT8_ARRAY_BUILDER(obj)                         \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),                            \
+                              GARROW_TYPE_UINT8_ARRAY_BUILDER,  \
+                              GArrowUInt8ArrayBuilder))
+#define GARROW_UINT8_ARRAY_BUILDER_CLASS(klass)                 \
+  (G_TYPE_CHECK_CLASS_CAST((klass),                             \
+                           GARROW_TYPE_UINT8_ARRAY_BUILDER,     \
+                           GArrowUInt8ArrayBuilderClass))
+#define GARROW_IS_UINT8_ARRAY_BUILDER(obj)                      \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),                            \
+                              GARROW_TYPE_UINT8_ARRAY_BUILDER))
+#define GARROW_IS_UINT8_ARRAY_BUILDER_CLASS(klass)              \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),                             \
+                           GARROW_TYPE_UINT8_ARRAY_BUILDER))
+#define GARROW_UINT8_ARRAY_BUILDER_GET_CLASS(obj)               \
+  (G_TYPE_INSTANCE_GET_CLASS((obj),                             \
+                             GARROW_TYPE_UINT8_ARRAY_BUILDER,   \
+                             GArrowUInt8ArrayBuilderClass))
+
+typedef struct _GArrowUInt8ArrayBuilder         GArrowUInt8ArrayBuilder;
+typedef struct _GArrowUInt8ArrayBuilderClass    GArrowUInt8ArrayBuilderClass;
+
+/**
+ * GArrowUInt8ArrayBuilder:
+ *
+ * It wraps `arrow::UInt8Builder`.
+ */
+struct _GArrowUInt8ArrayBuilder
+{
+  /*< private >*/
+  GArrowArrayBuilder parent_instance;
+};
+
+struct _GArrowUInt8ArrayBuilderClass
+{
+  GArrowArrayBuilderClass parent_class;
+};
+
+GType garrow_uint8_array_builder_get_type(void) G_GNUC_CONST;
+
+GArrowUInt8ArrayBuilder *garrow_uint8_array_builder_new(void);
+
+gboolean garrow_uint8_array_builder_append(GArrowUInt8ArrayBuilder *builder,
+                                           guint8 value,
+                                           GError **error);
+gboolean garrow_uint8_array_builder_append_null(GArrowUInt8ArrayBuilder *builder,
+                                                GError **error);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint8-array.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint8-array.cpp b/c_glib/arrow-glib/uint8-array.cpp
new file mode 100644
index 0000000..b5a2595
--- /dev/null
+++ b/c_glib/arrow-glib/uint8-array.cpp
@@ -0,0 +1,69 @@
+/*
+ * 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/uint8-array.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint8-array
+ * @short_description: 8-bit unsigned integer array class
+ *
+ * #GArrowUInt8Array is a class for 8-bit unsigned integer array. It
+ * can store zero or more 8-bit unsigned integer data.
+ *
+ * #GArrowUInt8Array is immutable. You need to use
+ * #GArrowUInt8ArrayBuilder to create a new array.
+ */
+
+G_DEFINE_TYPE(GArrowUInt8Array,               \
+              garrow_uint8_array,             \
+              GARROW_TYPE_ARRAY)
+
+static void
+garrow_uint8_array_init(GArrowUInt8Array *object)
+{
+}
+
+static void
+garrow_uint8_array_class_init(GArrowUInt8ArrayClass *klass)
+{
+}
+
+/**
+ * garrow_uint8_array_get_value:
+ * @array: A #GArrowUInt8Array.
+ * @i: The index of the target value.
+ *
+ * Returns: The i-th value.
+ */
+guint8
+garrow_uint8_array_get_value(GArrowUInt8Array *array,
+                             gint64 i)
+{
+  auto arrow_array = garrow_array_get_raw(GARROW_ARRAY(array));
+  return static_cast<arrow::UInt8Array *>(arrow_array.get())->Value(i);
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint8-array.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint8-array.h b/c_glib/arrow-glib/uint8-array.h
new file mode 100644
index 0000000..a572bc5
--- /dev/null
+++ b/c_glib/arrow-glib/uint8-array.h
@@ -0,0 +1,71 @@
+/*
+ * 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/array.h>
+
+G_BEGIN_DECLS
+
+#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 >*/
+  GArrowArray parent_instance;
+};
+
+struct _GArrowUInt8ArrayClass
+{
+  GArrowArrayClass parent_class;
+};
+
+GType garrow_uint8_array_get_type(void) G_GNUC_CONST;
+
+guint8 garrow_uint8_array_get_value(GArrowUInt8Array *array,
+                                    gint64 i);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint8-data-type.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint8-data-type.cpp b/c_glib/arrow-glib/uint8-data-type.cpp
new file mode 100644
index 0000000..7c93e45
--- /dev/null
+++ b/c_glib/arrow-glib/uint8-data-type.cpp
@@ -0,0 +1,67 @@
+/*
+ * 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/data-type.hpp>
+#include <arrow-glib/uint8-data-type.h>
+
+G_BEGIN_DECLS
+
+/**
+ * SECTION: uint8-data-type
+ * @short_description: 8-bit unsigned integer data type
+ *
+ * #GArrowUInt8DataType is a class for 8-bit unsigned integer data type.
+ */
+
+G_DEFINE_TYPE(GArrowUInt8DataType,                \
+              garrow_uint8_data_type,             \
+              GARROW_TYPE_DATA_TYPE)
+
+static void
+garrow_uint8_data_type_init(GArrowUInt8DataType *object)
+{
+}
+
+static void
+garrow_uint8_data_type_class_init(GArrowUInt8DataTypeClass *klass)
+{
+}
+
+/**
+ * garrow_uint8_data_type_new:
+ *
+ * Returns: The newly created 8-bit unsigned integer data type.
+ */
+GArrowUInt8DataType *
+garrow_uint8_data_type_new(void)
+{
+  auto arrow_data_type = arrow::uint8();
+
+  GArrowUInt8DataType *data_type =
+    GARROW_UINT8_DATA_TYPE(g_object_new(GARROW_TYPE_UINT8_DATA_TYPE,
+                                         "data-type", &arrow_data_type,
+                                         NULL));
+  return data_type;
+}
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/arrow-glib/uint8-data-type.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/uint8-data-type.h b/c_glib/arrow-glib/uint8-data-type.h
new file mode 100644
index 0000000..6e05852
--- /dev/null
+++ b/c_glib/arrow-glib/uint8-data-type.h
@@ -0,0 +1,69 @@
+/*
+ * 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/data-type.h>
+
+G_BEGIN_DECLS
+
+#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;
+};
+
+struct _GArrowUInt8DataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GType                 garrow_uint8_data_type_get_type (void) G_GNUC_CONST;
+GArrowUInt8DataType *garrow_uint8_data_type_new      (void);
+
+G_END_DECLS

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/autogen.sh
----------------------------------------------------------------------
diff --git a/c_glib/autogen.sh b/c_glib/autogen.sh
new file mode 100755
index 0000000..08e33e6
--- /dev/null
+++ b/c_glib/autogen.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# 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.
+
+set -u
+set -e
+
+ruby \
+    -e 'print ARGF.read.scan(/^  <version>(.+?)<\/version>/)[0][0]' \
+    ../java/pom.xml > \
+    version
+
+mkdir -p m4
+
+gtkdocize --copy --docdir doc/reference
+autoreconf --install

http://git-wip-us.apache.org/repos/asf/arrow/blob/39c7274f/c_glib/configure.ac
----------------------------------------------------------------------
diff --git a/c_glib/configure.ac b/c_glib/configure.ac
new file mode 100644
index 0000000..85f7eec
--- /dev/null
+++ b/c_glib/configure.ac
@@ -0,0 +1,76 @@
+# 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.
+
+AC_PREREQ(2.65)
+
+m4_define([arrow_glib_version], m4_include(version))
+AC_INIT([arrow-glib], arrow_glib_version, [kou@clear-code.com])
+AC_CONFIG_AUX_DIR([config])
+AC_CONFIG_MACRO_DIR([m4])
+
+AC_CONFIG_SRCDIR([arrow-glib/arrow-glib.h])
+AC_CONFIG_HEADERS([config.h])
+
+AM_INIT_AUTOMAKE([1.13 foreign])
+AM_SILENT_RULES([yes])
+
+AC_PROG_CC
+AC_PROG_CXX
+AX_CXX_COMPILE_STDCXX_11([ext], [mandatory])
+LT_INIT
+
+GARROW_CFLAGS="-Wall -Wconversion"
+GARROW_CXXFLAGS="-Wall -Wconversion"
+AC_ARG_ENABLE(debug,
+  [AS_HELP_STRING([--enable-debug],
+                  [Use debug flags (default=no)])],
+  [GARROW_DEBUG="$enableval"],
+  [GARROW_DEBUG="no"])
+if test "x$GARROW_DEBUG" != "xno"; then
+  GARROW_DEBUG="yes"
+  if test "$CLANG" = "yes"; then
+    CFLAGS="$CFLAGS -O0 -g"
+    CXXFLAGS="$CXXFLAGS -O0 -g"
+  elif test "$GCC" = "yes"; then
+    CFLAGS="$CFLAGS -O0 -g3"
+    CXXFLAGS="$CXXFLAGS -O0 -g3"
+  fi
+fi
+AC_SUBST(GARROW_CFLAGS)
+AC_SUBST(GARROW_CXXFLAGS)
+
+AM_PATH_GLIB_2_0([2.32.4], [], [], [gobject])
+
+GOBJECT_INTROSPECTION_REQUIRE([1.32.1])
+GTK_DOC_CHECK([1.18-2])
+
+PKG_CHECK_MODULES([ARROW], [arrow])
+PKG_CHECK_MODULES([ARROW_IO], [arrow-io])
+PKG_CHECK_MODULES([ARROW_IPC], [arrow-ipc])
+
+AC_CONFIG_FILES([
+  Makefile
+  arrow-glib/Makefile
+  arrow-glib/arrow-glib.pc
+  arrow-glib/arrow-io-glib.pc
+  arrow-glib/arrow-ipc-glib.pc
+  doc/Makefile
+  doc/reference/Makefile
+  example/Makefile
+])
+
+AC_OUTPUT


Mime
View raw message