kou commented on code in PR #46305:
URL: https://github.com/apache/arrow/pull/46305#discussion_r2074763992
##########
c_glib/arrow-glib/basic-data-type.cpp:
##########
@@ -2267,6 +2271,73 @@ garrow_string_view_data_type_new(void)
return data_type;
}
+G_DEFINE_TYPE(GArrowFixedShapeTensorDataType,
+ garrow_fixed_shape_tensor_data_type,
+ GARROW_TYPE_EXTENSION_DATA_TYPE)
+
+static void
+garrow_fixed_shape_tensor_data_type_init(GArrowFixedShapeTensorDataType
*object)
+{
+}
+
+static void
+garrow_fixed_shape_tensor_data_type_class_init(GArrowFixedShapeTensorDataTypeClass
*klass)
+{
+}
+
+/**
+ * garrow_fixed_shape_tensor_data_type_new:
+ * @value_type: A #GArrowDataType.
+ * @size: The length of `shape`.
+ * @psize: The length of `permutation`.
+ * @shape: (array length=size): shape.
+ * @permutation: (array length=psize): permutation.
+ * @dim_name: (array length=size): dim_names.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: The newly created fixed shape tensor data type.
+ */
+GArrowFixedShapeTensorDataType *
+garrow_fixed_shape_tensor_data_type_new(GArrowDataType *value_type,
+ gint32 size,
+ gint32 psize,
+ const gint64 *shape,
+ const gint64 *permutation,
+ const gchar **dim_name,
+ GError **error)
+{
+ std::vector<int64_t> arrow_shape;
+ std::vector<int64_t> arrow_permutation;
+ std::vector<std::string> arrow_dim_names;
+
+ auto arrow_value_type = garrow_data_type_get_raw(value_type);
+
+ for (int i = 0; i < psize; i++) {
+ arrow_shape.push_back(permutation[i]);
Review Comment:
`arrow_permutation`?
##########
c_glib/arrow-glib/basic-data-type.cpp:
##########
@@ -2267,6 +2271,73 @@ garrow_string_view_data_type_new(void)
return data_type;
}
+G_DEFINE_TYPE(GArrowFixedShapeTensorDataType,
+ garrow_fixed_shape_tensor_data_type,
+ GARROW_TYPE_EXTENSION_DATA_TYPE)
+
+static void
+garrow_fixed_shape_tensor_data_type_init(GArrowFixedShapeTensorDataType
*object)
+{
+}
+
+static void
+garrow_fixed_shape_tensor_data_type_class_init(GArrowFixedShapeTensorDataTypeClass
*klass)
+{
+}
+
+/**
+ * garrow_fixed_shape_tensor_data_type_new:
+ * @value_type: A #GArrowDataType.
+ * @size: The length of `shape`.
+ * @psize: The length of `permutation`.
+ * @shape: (array length=size): shape.
+ * @permutation: (array length=psize): permutation.
+ * @dim_name: (array length=size): dim_names.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: The newly created fixed shape tensor data type.
+ */
+GArrowFixedShapeTensorDataType *
+garrow_fixed_shape_tensor_data_type_new(GArrowDataType *value_type,
+ gint32 size,
+ gint32 psize,
+ const gint64 *shape,
+ const gint64 *permutation,
+ const gchar **dim_name,
+ GError **error)
+{
+ std::vector<int64_t> arrow_shape;
+ std::vector<int64_t> arrow_permutation;
+ std::vector<std::string> arrow_dim_names;
+
+ auto arrow_value_type = garrow_data_type_get_raw(value_type);
+
+ for (int i = 0; i < psize; i++) {
+ arrow_shape.push_back(permutation[i]);
+ }
+
+ for (int i = 0; i < size; i++) {
+ arrow_shape.push_back(shape[i]);
+ arrow_dim_names.push_back(dim_name[i]);
+ }
+
+ auto arrow_data_type =
arrow::extension::FixedShapeTensorType::Make(arrow_value_type,
+
arrow_shape,
+
arrow_permutation,
+
arrow_dim_names);
+
+ if (!garrow::check(error, arrow_data_type, "[fixed-shape-tensor][new]")) {
+ return NULL;
+ }
+
+ GArrowFixedShapeTensorDataType *data_type =
GARROW_FIXED_SHAPE_TENSOR_DATA_TYPE(
+ g_object_new(GARROW_TYPE_FIXED_SHAPE_TENSOR_DATA_TYPE,
+ "data-type",
+ &arrow_data_type.ValueUnsafe(),
Review Comment:
```suggestion
auto arrow_data_type = *arrow_data_type_result;
g_object_new(GARROW_TYPE_FIXED_SHAPE_TENSOR_DATA_TYPE,
"data-type",
&arrow_data_type,
```
##########
c_glib/arrow-glib/basic-data-type.cpp:
##########
@@ -2267,6 +2271,73 @@ garrow_string_view_data_type_new(void)
return data_type;
}
+G_DEFINE_TYPE(GArrowFixedShapeTensorDataType,
+ garrow_fixed_shape_tensor_data_type,
+ GARROW_TYPE_EXTENSION_DATA_TYPE)
+
+static void
+garrow_fixed_shape_tensor_data_type_init(GArrowFixedShapeTensorDataType
*object)
+{
+}
+
+static void
+garrow_fixed_shape_tensor_data_type_class_init(GArrowFixedShapeTensorDataTypeClass
*klass)
+{
+}
+
+/**
+ * garrow_fixed_shape_tensor_data_type_new:
+ * @value_type: A #GArrowDataType.
+ * @size: The length of `shape`.
+ * @psize: The length of `permutation`.
+ * @shape: (array length=size): shape.
+ * @permutation: (array length=psize): permutation.
+ * @dim_name: (array length=size): dim_names.
Review Comment:
`permutation` and `dim_names` can be `NULL`. So we can't share the same
length argument.
```suggestion
* @shape: (array length=shape_length): A physical shape of the contained
tensors as an array.
* @shape_length: The length of `shape`.
* @permutation: (array length=permutation_length): An indices of the
desired ordering of the original
* dimensions, defined as an array. This must be `NULL` or the same
length array of `shape`.
* @permutation_length: The length of `permutation`.
* @dim_names: (array length=n_dim_names): Explicit names to tensor
dimensions as an array.
* This must be `NULL` or the same length array of `shape`.
* @n_dim_names. The length of `dim_names`.
```
##########
c_glib/arrow-glib/basic-data-type.cpp:
##########
@@ -2267,6 +2271,73 @@ garrow_string_view_data_type_new(void)
return data_type;
}
+G_DEFINE_TYPE(GArrowFixedShapeTensorDataType,
+ garrow_fixed_shape_tensor_data_type,
+ GARROW_TYPE_EXTENSION_DATA_TYPE)
+
+static void
+garrow_fixed_shape_tensor_data_type_init(GArrowFixedShapeTensorDataType
*object)
+{
+}
+
+static void
+garrow_fixed_shape_tensor_data_type_class_init(GArrowFixedShapeTensorDataTypeClass
*klass)
+{
+}
+
+/**
+ * garrow_fixed_shape_tensor_data_type_new:
+ * @value_type: A #GArrowDataType.
+ * @size: The length of `shape`.
+ * @psize: The length of `permutation`.
+ * @shape: (array length=size): shape.
+ * @permutation: (array length=psize): permutation.
+ * @dim_name: (array length=size): dim_names.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: The newly created fixed shape tensor data type.
+ */
+GArrowFixedShapeTensorDataType *
+garrow_fixed_shape_tensor_data_type_new(GArrowDataType *value_type,
+ gint32 size,
+ gint32 psize,
+ const gint64 *shape,
+ const gint64 *permutation,
+ const gchar **dim_name,
+ GError **error)
+{
+ std::vector<int64_t> arrow_shape;
+ std::vector<int64_t> arrow_permutation;
+ std::vector<std::string> arrow_dim_names;
+
+ auto arrow_value_type = garrow_data_type_get_raw(value_type);
+
+ for (int i = 0; i < psize; i++) {
+ arrow_shape.push_back(permutation[i]);
+ }
+
+ for (int i = 0; i < size; i++) {
+ arrow_shape.push_back(shape[i]);
+ arrow_dim_names.push_back(dim_name[i]);
+ }
+
+ auto arrow_data_type =
arrow::extension::FixedShapeTensorType::Make(arrow_value_type,
+
arrow_shape,
+
arrow_permutation,
+
arrow_dim_names);
+
+ if (!garrow::check(error, arrow_data_type, "[fixed-shape-tensor][new]")) {
Review Comment:
```suggestion
auto arrow_data_type_result =
arrow::extension::FixedShapeTensorType::Make(arrow_value_type,
arrow_shape,
arrow_permutation,
arrow_dim_names);
if (!garrow::check(error, arrow_data_type_result,
"[fixed-shape-tensor][new]")) {
```
##########
c_glib/arrow-glib/basic-data-type.cpp:
##########
@@ -2267,6 +2271,73 @@ garrow_string_view_data_type_new(void)
return data_type;
}
+G_DEFINE_TYPE(GArrowFixedShapeTensorDataType,
+ garrow_fixed_shape_tensor_data_type,
+ GARROW_TYPE_EXTENSION_DATA_TYPE)
+
+static void
+garrow_fixed_shape_tensor_data_type_init(GArrowFixedShapeTensorDataType
*object)
+{
+}
+
+static void
+garrow_fixed_shape_tensor_data_type_class_init(GArrowFixedShapeTensorDataTypeClass
*klass)
+{
+}
+
+/**
+ * garrow_fixed_shape_tensor_data_type_new:
+ * @value_type: A #GArrowDataType.
Review Comment:
```suggestion
* @value_type: A #GArrowDataType of individual tensor elements.
```
##########
c_glib/arrow-glib/basic-data-type.cpp:
##########
@@ -2267,6 +2271,73 @@ garrow_string_view_data_type_new(void)
return data_type;
}
+G_DEFINE_TYPE(GArrowFixedShapeTensorDataType,
+ garrow_fixed_shape_tensor_data_type,
+ GARROW_TYPE_EXTENSION_DATA_TYPE)
+
+static void
+garrow_fixed_shape_tensor_data_type_init(GArrowFixedShapeTensorDataType
*object)
+{
+}
+
+static void
+garrow_fixed_shape_tensor_data_type_class_init(GArrowFixedShapeTensorDataTypeClass
*klass)
+{
+}
+
+/**
+ * garrow_fixed_shape_tensor_data_type_new:
+ * @value_type: A #GArrowDataType.
+ * @size: The length of `shape`.
+ * @psize: The length of `permutation`.
+ * @shape: (array length=size): shape.
+ * @permutation: (array length=psize): permutation.
+ * @dim_name: (array length=size): dim_names.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: The newly created fixed shape tensor data type.
+ */
+GArrowFixedShapeTensorDataType *
+garrow_fixed_shape_tensor_data_type_new(GArrowDataType *value_type,
+ gint32 size,
+ gint32 psize,
+ const gint64 *shape,
+ const gint64 *permutation,
+ const gchar **dim_name,
+ GError **error)
+{
+ std::vector<int64_t> arrow_shape;
+ std::vector<int64_t> arrow_permutation;
+ std::vector<std::string> arrow_dim_names;
+
+ auto arrow_value_type = garrow_data_type_get_raw(value_type);
+
+ for (int i = 0; i < psize; i++) {
+ arrow_shape.push_back(permutation[i]);
+ }
+
+ for (int i = 0; i < size; i++) {
+ arrow_shape.push_back(shape[i]);
+ arrow_dim_names.push_back(dim_name[i]);
+ }
+
+ auto arrow_data_type =
arrow::extension::FixedShapeTensorType::Make(arrow_value_type,
+
arrow_shape,
+
arrow_permutation,
+
arrow_dim_names);
+
+ if (!garrow::check(error, arrow_data_type, "[fixed-shape-tensor][new]")) {
+ return NULL;
+ }
+
+ GArrowFixedShapeTensorDataType *data_type =
GARROW_FIXED_SHAPE_TENSOR_DATA_TYPE(
Review Comment:
```suggestion
auto data_type = GARROW_FIXED_SHAPE_TENSOR_DATA_TYPE(
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]