blob: a16f26c656cc05d20c45a6de2290cb7402f65178 [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/arrow-glib.h>
#include <gandiva-glib/version.h>
G_BEGIN_DECLS
#define GGANDIVA_TYPE_NODE (ggandiva_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaNode,
ggandiva_node,
GGANDIVA,
NODE,
GObject)
struct _GGandivaNodeClass
{
GObjectClass parent_class;
};
gchar *ggandiva_node_to_string(GGandivaNode *node);
#define GGANDIVA_TYPE_FIELD_NODE (ggandiva_field_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaFieldNode,
ggandiva_field_node,
GGANDIVA,
FIELD_NODE,
GGandivaNode)
struct _GGandivaFieldNodeClass
{
GGandivaNodeClass parent_class;
};
GGandivaFieldNode *ggandiva_field_node_new(GArrowField *field);
#define GGANDIVA_TYPE_FUNCTION_NODE (ggandiva_function_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaFunctionNode,
ggandiva_function_node,
GGANDIVA,
FUNCTION_NODE,
GGandivaNode)
struct _GGandivaFunctionNodeClass
{
GGandivaNodeClass parent_class;
};
GGandivaFunctionNode *
ggandiva_function_node_new(const gchar *name,
GList *parameters,
GArrowDataType *return_type);
GList *
ggandiva_function_node_get_parameters(GGandivaFunctionNode *node);
#define GGANDIVA_TYPE_LITERAL_NODE (ggandiva_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaLiteralNode,
ggandiva_literal_node,
GGANDIVA,
LITERAL_NODE,
GGandivaNode)
struct _GGandivaLiteralNodeClass
{
GGandivaNodeClass parent_class;
};
#define GGANDIVA_TYPE_NULL_LITERAL_NODE (ggandiva_null_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaNullLiteralNode,
ggandiva_null_literal_node,
GGANDIVA,
NULL_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaNullLiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaNullLiteralNode *
ggandiva_null_literal_node_new(GArrowDataType *return_type,
GError **error);
#define GGANDIVA_TYPE_BOOLEAN_LITERAL_NODE (ggandiva_boolean_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaBooleanLiteralNode,
ggandiva_boolean_literal_node,
GGANDIVA,
BOOLEAN_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaBooleanLiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaBooleanLiteralNode *
ggandiva_boolean_literal_node_new(gboolean value);
gboolean
ggandiva_boolean_literal_node_get_value(GGandivaBooleanLiteralNode *node);
#define GGANDIVA_TYPE_INT8_LITERAL_NODE (ggandiva_int8_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaInt8LiteralNode,
ggandiva_int8_literal_node,
GGANDIVA,
INT8_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaInt8LiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaInt8LiteralNode *
ggandiva_int8_literal_node_new(gint8 value);
gint8
ggandiva_int8_literal_node_get_value(GGandivaInt8LiteralNode *node);
#define GGANDIVA_TYPE_UINT8_LITERAL_NODE (ggandiva_uint8_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaUInt8LiteralNode,
ggandiva_uint8_literal_node,
GGANDIVA,
UINT8_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaUInt8LiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaUInt8LiteralNode *
ggandiva_uint8_literal_node_new(guint8 value);
guint8
ggandiva_uint8_literal_node_get_value(GGandivaUInt8LiteralNode *node);
#define GGANDIVA_TYPE_INT16_LITERAL_NODE (ggandiva_int16_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaInt16LiteralNode,
ggandiva_int16_literal_node,
GGANDIVA,
INT16_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaInt16LiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaInt16LiteralNode *
ggandiva_int16_literal_node_new(gint16 value);
gint16
ggandiva_int16_literal_node_get_value(GGandivaInt16LiteralNode *node);
#define GGANDIVA_TYPE_UINT16_LITERAL_NODE (ggandiva_uint16_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaUInt16LiteralNode,
ggandiva_uint16_literal_node,
GGANDIVA,
UINT16_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaUInt16LiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaUInt16LiteralNode *
ggandiva_uint16_literal_node_new(guint16 value);
guint16
ggandiva_uint16_literal_node_get_value(GGandivaUInt16LiteralNode *node);
#define GGANDIVA_TYPE_INT32_LITERAL_NODE (ggandiva_int32_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaInt32LiteralNode,
ggandiva_int32_literal_node,
GGANDIVA,
INT32_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaInt32LiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaInt32LiteralNode *
ggandiva_int32_literal_node_new(gint32 value);
gint32
ggandiva_int32_literal_node_get_value(GGandivaInt32LiteralNode *node);
#define GGANDIVA_TYPE_UINT32_LITERAL_NODE (ggandiva_uint32_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaUInt32LiteralNode,
ggandiva_uint32_literal_node,
GGANDIVA,
UINT32_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaUInt32LiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaUInt32LiteralNode *
ggandiva_uint32_literal_node_new(guint32 value);
guint32
ggandiva_uint32_literal_node_get_value(GGandivaUInt32LiteralNode *node);
#define GGANDIVA_TYPE_INT64_LITERAL_NODE (ggandiva_int64_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaInt64LiteralNode,
ggandiva_int64_literal_node,
GGANDIVA,
INT64_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaInt64LiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaInt64LiteralNode *
ggandiva_int64_literal_node_new(gint64 value);
gint64
ggandiva_int64_literal_node_get_value(GGandivaInt64LiteralNode *node);
#define GGANDIVA_TYPE_UINT64_LITERAL_NODE (ggandiva_uint64_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaUInt64LiteralNode,
ggandiva_uint64_literal_node,
GGANDIVA,
UINT64_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaUInt64LiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaUInt64LiteralNode *
ggandiva_uint64_literal_node_new(guint64 value);
guint64
ggandiva_uint64_literal_node_get_value(GGandivaUInt64LiteralNode *node);
#define GGANDIVA_TYPE_FLOAT_LITERAL_NODE (ggandiva_float_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaFloatLiteralNode,
ggandiva_float_literal_node,
GGANDIVA,
FLOAT_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaFloatLiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaFloatLiteralNode *
ggandiva_float_literal_node_new(gfloat value);
gfloat
ggandiva_float_literal_node_get_value(GGandivaFloatLiteralNode *node);
#define GGANDIVA_TYPE_DOUBLE_LITERAL_NODE (ggandiva_double_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaDoubleLiteralNode,
ggandiva_double_literal_node,
GGANDIVA,
DOUBLE_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaDoubleLiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaDoubleLiteralNode *
ggandiva_double_literal_node_new(gdouble value);
gdouble
ggandiva_double_literal_node_get_value(GGandivaDoubleLiteralNode *node);
#define GGANDIVA_TYPE_BINARY_LITERAL_NODE (ggandiva_binary_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaBinaryLiteralNode,
ggandiva_binary_literal_node,
GGANDIVA,
BINARY_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaBinaryLiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaBinaryLiteralNode *
ggandiva_binary_literal_node_new(const guint8 *value,
gsize size);
GGandivaBinaryLiteralNode *
ggandiva_binary_literal_node_new_bytes(GBytes *value);
GBytes *
ggandiva_binary_literal_node_get_value(GGandivaBinaryLiteralNode *node);
#define GGANDIVA_TYPE_STRING_LITERAL_NODE (ggandiva_string_literal_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaStringLiteralNode,
ggandiva_string_literal_node,
GGANDIVA,
STRING_LITERAL_NODE,
GGandivaLiteralNode)
struct _GGandivaStringLiteralNodeClass
{
GGandivaLiteralNodeClass parent_class;
};
GGandivaStringLiteralNode *
ggandiva_string_literal_node_new(const gchar *value);
const gchar *
ggandiva_string_literal_node_get_value(GGandivaStringLiteralNode *node);
#define GGANDIVA_TYPE_IF_NODE (ggandiva_if_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaIfNode,
ggandiva_if_node,
GGANDIVA,
IF_NODE,
GGandivaNode)
struct _GGandivaIfNodeClass
{
GGandivaNodeClass parent_class;
};
GGandivaIfNode *
ggandiva_if_node_new(GGandivaNode *condition_node,
GGandivaNode *then_node,
GGandivaNode *else_node,
GArrowDataType *return_type,
GError **error);
#define GGANDIVA_TYPE_BOOLEAN_NODE (ggandiva_boolean_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaBooleanNode,
ggandiva_boolean_node,
GGANDIVA,
BOOLEAN_NODE,
GGandivaNode)
struct _GGandivaBooleanNodeClass
{
GGandivaNodeClass parent_class;
};
GGANDIVA_AVAILABLE_IN_0_17
GList *
ggandiva_boolean_node_get_children(GGandivaBooleanNode *node);
#define GGANDIVA_TYPE_AND_NODE (ggandiva_and_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaAndNode,
ggandiva_and_node,
GGANDIVA,
AND_NODE,
GGandivaBooleanNode)
struct _GGandivaAndNodeClass
{
GGandivaBooleanNodeClass parent_class;
};
GGANDIVA_AVAILABLE_IN_0_17
GGandivaAndNode *
ggandiva_and_node_new(GList *children);
#define GGANDIVA_TYPE_OR_NODE (ggandiva_or_node_get_type())
G_DECLARE_DERIVABLE_TYPE(GGandivaOrNode,
ggandiva_or_node,
GGANDIVA,
OR_NODE,
GGandivaBooleanNode)
struct _GGandivaOrNodeClass
{
GGandivaBooleanNodeClass parent_class;
};
GGANDIVA_AVAILABLE_IN_0_17
GGandivaOrNode *
ggandiva_or_node_new(GList *children);
G_END_DECLS