blob: 443347b503ecf967aba975631272e3403b551137 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#pragma once
#include <arrow-glib/basic-array.h>
#include <arrow-glib/basic-data-type.h>
#include <arrow-glib/field.h>
#include <arrow-glib/version.h>
G_BEGIN_DECLS
#define GARROW_TYPE_LIST_DATA_TYPE (garrow_list_data_type_get_type())
G_DECLARE_DERIVABLE_TYPE(GArrowListDataType,
garrow_list_data_type,
GARROW,
LIST_DATA_TYPE,
GArrowDataType)
struct _GArrowListDataTypeClass
{
GArrowDataTypeClass parent_class;
};
GArrowListDataType *garrow_list_data_type_new (GArrowField *field);
#ifndef GARROW_DISABLE_DEPRECATED
GARROW_DEPRECATED_IN_0_13_FOR(garrow_list_data_type_get_field)
GArrowField *garrow_list_data_type_get_value_field (GArrowListDataType *list_data_type);
#endif
GARROW_AVAILABLE_IN_0_13
GArrowField *garrow_list_data_type_get_field (GArrowListDataType *list_data_type);
#define GARROW_TYPE_LARGE_LIST_DATA_TYPE (garrow_large_list_data_type_get_type())
G_DECLARE_DERIVABLE_TYPE(GArrowLargeListDataType,
garrow_large_list_data_type,
GARROW,
LARGE_LIST_DATA_TYPE,
GArrowDataType)
struct _GArrowLargeListDataTypeClass
{
GArrowDataTypeClass parent_class;
};
GARROW_AVAILABLE_IN_0_16
GArrowLargeListDataType *garrow_large_list_data_type_new(GArrowField *field);
GARROW_AVAILABLE_IN_0_16
GArrowField *garrow_large_list_data_type_get_field(GArrowLargeListDataType *large_list_data_type);
#define GARROW_TYPE_STRUCT_DATA_TYPE (garrow_struct_data_type_get_type())
G_DECLARE_DERIVABLE_TYPE(GArrowStructDataType,
garrow_struct_data_type,
GARROW,
STRUCT_DATA_TYPE,
GArrowDataType)
struct _GArrowStructDataTypeClass
{
GArrowDataTypeClass parent_class;
};
GArrowStructDataType *garrow_struct_data_type_new (GList *fields);
gint
garrow_struct_data_type_get_n_fields(GArrowStructDataType *struct_data_type);
GList *
garrow_struct_data_type_get_fields(GArrowStructDataType *struct_data_type);
GArrowField *
garrow_struct_data_type_get_field(GArrowStructDataType *struct_data_type,
gint i);
GArrowField *
garrow_struct_data_type_get_field_by_name(GArrowStructDataType *struct_data_type,
const gchar *name);
gint
garrow_struct_data_type_get_field_index(GArrowStructDataType *struct_data_type,
const gchar *name);
#define GARROW_TYPE_MAP_DATA_TYPE (garrow_map_data_type_get_type())
G_DECLARE_DERIVABLE_TYPE(GArrowMapDataType,
garrow_map_data_type,
GARROW,
MAP_DATA_TYPE,
GArrowListDataType)
struct _GArrowMapDataTypeClass
{
GArrowListDataTypeClass parent_class;
};
GARROW_AVAILABLE_IN_0_17
GArrowMapDataType *
garrow_map_data_type_new(GArrowDataType *key_type,
GArrowDataType *item_type);
GARROW_AVAILABLE_IN_0_17
GArrowDataType *
garrow_map_data_type_get_key_type(GArrowMapDataType *map_data_type);
GARROW_AVAILABLE_IN_0_17
GArrowDataType *
garrow_map_data_type_get_item_type(GArrowMapDataType *map_data_type);
#define GARROW_TYPE_UNION_DATA_TYPE (garrow_union_data_type_get_type())
G_DECLARE_DERIVABLE_TYPE(GArrowUnionDataType,
garrow_union_data_type,
GARROW,
UNION_DATA_TYPE,
GArrowDataType)
struct _GArrowUnionDataTypeClass
{
GArrowDataTypeClass parent_class;
};
gint
garrow_union_data_type_get_n_fields(GArrowUnionDataType *union_data_type);
GList *
garrow_union_data_type_get_fields(GArrowUnionDataType *union_data_type);
GArrowField *
garrow_union_data_type_get_field(GArrowUnionDataType *union_data_type,
gint i);
gint8 *
garrow_union_data_type_get_type_codes(GArrowUnionDataType *union_data_type,
gsize *n_type_codes);
#define GARROW_TYPE_SPARSE_UNION_DATA_TYPE \
(garrow_sparse_union_data_type_get_type())
G_DECLARE_DERIVABLE_TYPE(GArrowSparseUnionDataType,
garrow_sparse_union_data_type,
GARROW,
SPARSE_UNION_DATA_TYPE,
GArrowUnionDataType)
struct _GArrowSparseUnionDataTypeClass
{
GArrowUnionDataTypeClass parent_class;
};
GArrowSparseUnionDataType *
garrow_sparse_union_data_type_new(GList *fields,
gint8 *type_codes,
gsize n_type_codes);
#define GARROW_TYPE_DENSE_UNION_DATA_TYPE \
(garrow_dense_union_data_type_get_type())
G_DECLARE_DERIVABLE_TYPE(GArrowDenseUnionDataType,
garrow_dense_union_data_type,
GARROW,
DENSE_UNION_DATA_TYPE,
GArrowUnionDataType)
struct _GArrowDenseUnionDataTypeClass
{
GArrowUnionDataTypeClass parent_class;
};
GArrowDenseUnionDataType *
garrow_dense_union_data_type_new(GList *fields,
gint8 *type_codes,
gsize n_type_codes);
#define GARROW_TYPE_DICTIONARY_DATA_TYPE (garrow_dictionary_data_type_get_type())
G_DECLARE_DERIVABLE_TYPE(GArrowDictionaryDataType,
garrow_dictionary_data_type,
GARROW,
DICTIONARY_DATA_TYPE,
GArrowFixedWidthDataType)
struct _GArrowDictionaryDataTypeClass
{
GArrowFixedWidthDataTypeClass parent_class;
};
GArrowDictionaryDataType *
garrow_dictionary_data_type_new(GArrowDataType *index_data_type,
GArrowDataType *value_data_type,
gboolean ordered);
GArrowDataType *
garrow_dictionary_data_type_get_index_data_type(GArrowDictionaryDataType *dictionary_data_type);
GARROW_AVAILABLE_IN_0_14
GArrowDataType *
garrow_dictionary_data_type_get_value_data_type(GArrowDictionaryDataType *dictionary_data_type);
gboolean
garrow_dictionary_data_type_is_ordered(GArrowDictionaryDataType *dictionary_data_type);
G_END_DECLS