/* gcalc.h generated by valac 0.46.2, the Vala compiler, do not modify */

#ifndef __GCALC_GCALC_H__
#define __GCALC_GCALC_H__

#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gee.h>
#include <float.h>
#include <math.h>
#include <gio/gio.h>

G_BEGIN_DECLS

#define GCALC_TYPE_ASSIGN (gcalc_assign_get_type ())
#define GCALC_ASSIGN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_ASSIGN, GCalcAssign))
#define GCALC_IS_ASSIGN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_ASSIGN))
#define GCALC_ASSIGN_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_ASSIGN, GCalcAssignIface))

typedef struct _GCalcAssign GCalcAssign;
typedef struct _GCalcAssignIface GCalcAssignIface;

#define GCALC_TYPE_EXPRESSION (gcalc_expression_get_type ())
#define GCALC_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_EXPRESSION, GCalcExpression))
#define GCALC_IS_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_EXPRESSION))
#define GCALC_EXPRESSION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_EXPRESSION, GCalcExpressionIface))

typedef struct _GCalcExpression GCalcExpression;
typedef struct _GCalcExpressionIface GCalcExpressionIface;

#define GCALC_TYPE_RESULT (gcalc_result_get_type ())
#define GCALC_RESULT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_RESULT, GCalcResult))
#define GCALC_IS_RESULT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_RESULT))
#define GCALC_RESULT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_RESULT, GCalcResultIface))

typedef struct _GCalcResult GCalcResult;
typedef struct _GCalcResultIface GCalcResultIface;

#define GCALC_TYPE_EXPRESSION_CONTAINER (gcalc_expression_container_get_type ())
#define GCALC_EXPRESSION_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_EXPRESSION_CONTAINER, GCalcExpressionContainer))
#define GCALC_EXPRESSION_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_EXPRESSION_CONTAINER, GCalcExpressionContainerClass))
#define GCALC_IS_EXPRESSION_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_EXPRESSION_CONTAINER))
#define GCALC_IS_EXPRESSION_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_EXPRESSION_CONTAINER))
#define GCALC_EXPRESSION_CONTAINER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_EXPRESSION_CONTAINER, GCalcExpressionContainerClass))

typedef struct _GCalcExpressionContainer GCalcExpressionContainer;
typedef struct _GCalcExpressionContainerClass GCalcExpressionContainerClass;

#define GCALC_TYPE_OPERATOR (gcalc_operator_get_type ())
#define GCALC_OPERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_OPERATOR, GCalcOperator))
#define GCALC_IS_OPERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_OPERATOR))
#define GCALC_OPERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_OPERATOR, GCalcOperatorIface))

typedef struct _GCalcOperator GCalcOperator;
typedef struct _GCalcOperatorIface GCalcOperatorIface;

#define GCALC_TYPE_BINARY_OPERATOR (gcalc_binary_operator_get_type ())
#define GCALC_BINARY_OPERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_BINARY_OPERATOR, GCalcBinaryOperator))
#define GCALC_IS_BINARY_OPERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_BINARY_OPERATOR))
#define GCALC_BINARY_OPERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_BINARY_OPERATOR, GCalcBinaryOperatorIface))

typedef struct _GCalcBinaryOperator GCalcBinaryOperator;
typedef struct _GCalcBinaryOperatorIface GCalcBinaryOperatorIface;

#define GCALC_TYPE_CONSTANT (gcalc_constant_get_type ())
#define GCALC_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_CONSTANT, GCalcConstant))
#define GCALC_IS_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_CONSTANT))
#define GCALC_CONSTANT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_CONSTANT, GCalcConstantIface))

typedef struct _GCalcConstant GCalcConstant;
typedef struct _GCalcConstantIface GCalcConstantIface;

#define GCALC_TYPE_DIVISION (gcalc_division_get_type ())
#define GCALC_DIVISION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_DIVISION, GCalcDivision))
#define GCALC_IS_DIVISION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_DIVISION))
#define GCALC_DIVISION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_DIVISION, GCalcDivisionIface))

typedef struct _GCalcDivision GCalcDivision;
typedef struct _GCalcDivisionIface GCalcDivisionIface;

#define GCALC_TYPE_ERROR_EXPRESSION (gcalc_error_expression_get_type ())
#define GCALC_ERROR_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_ERROR_EXPRESSION, GCalcErrorExpression))
#define GCALC_IS_ERROR_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_ERROR_EXPRESSION))
#define GCALC_ERROR_EXPRESSION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_ERROR_EXPRESSION, GCalcErrorExpressionIface))

typedef struct _GCalcErrorExpression GCalcErrorExpression;
typedef struct _GCalcErrorExpressionIface GCalcErrorExpressionIface;
typedef struct _GCalcExpressionContainerPrivate GCalcExpressionContainerPrivate;

#define GCALC_TYPE_EXPRESSION_HASH_MAP (gcalc_expression_hash_map_get_type ())
#define GCALC_EXPRESSION_HASH_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_EXPRESSION_HASH_MAP, GCalcExpressionHashMap))
#define GCALC_EXPRESSION_HASH_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_EXPRESSION_HASH_MAP, GCalcExpressionHashMapClass))
#define GCALC_IS_EXPRESSION_HASH_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_EXPRESSION_HASH_MAP))
#define GCALC_IS_EXPRESSION_HASH_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_EXPRESSION_HASH_MAP))
#define GCALC_EXPRESSION_HASH_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_EXPRESSION_HASH_MAP, GCalcExpressionHashMapClass))

typedef struct _GCalcExpressionHashMap GCalcExpressionHashMap;
typedef struct _GCalcExpressionHashMapClass GCalcExpressionHashMapClass;
typedef struct _GCalcExpressionHashMapPrivate GCalcExpressionHashMapPrivate;

#define GCALC_TYPE_FUNCTION (gcalc_function_get_type ())
#define GCALC_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_FUNCTION, GCalcFunction))
#define GCALC_IS_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_FUNCTION))
#define GCALC_FUNCTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_FUNCTION, GCalcFunctionIface))

typedef struct _GCalcFunction GCalcFunction;
typedef struct _GCalcFunctionIface GCalcFunctionIface;

#define GCALC_TYPE_GEXPRESSION (gcalc_gexpression_get_type ())
#define GCALC_GEXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GEXPRESSION, GCalcGExpression))
#define GCALC_GEXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GEXPRESSION, GCalcGExpressionClass))
#define GCALC_IS_GEXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GEXPRESSION))
#define GCALC_IS_GEXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GEXPRESSION))
#define GCALC_GEXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GEXPRESSION, GCalcGExpressionClass))

typedef struct _GCalcGExpression GCalcGExpression;
typedef struct _GCalcGExpressionClass GCalcGExpressionClass;
typedef struct _GCalcGExpressionPrivate GCalcGExpressionPrivate;

#define GCALC_TYPE_HASHABLE (gcalc_hashable_get_type ())
#define GCALC_HASHABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_HASHABLE, GCalcHashable))
#define GCALC_IS_HASHABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_HASHABLE))
#define GCALC_HASHABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_HASHABLE, GCalcHashableIface))

typedef struct _GCalcHashable GCalcHashable;
typedef struct _GCalcHashableIface GCalcHashableIface;

#define GCALC_TYPE_GFUNCTION (gcalc_gfunction_get_type ())
#define GCALC_GFUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION, GCalcGFunction))
#define GCALC_GFUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION, GCalcGFunctionClass))
#define GCALC_IS_GFUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION))
#define GCALC_IS_GFUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION))
#define GCALC_GFUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION, GCalcGFunctionClass))

typedef struct _GCalcGFunction GCalcGFunction;
typedef struct _GCalcGFunctionClass GCalcGFunctionClass;
typedef struct _GCalcGFunctionPrivate GCalcGFunctionPrivate;

#define GCALC_TYPE_GFUNCTION_ACOS (gcalc_gfunction_acos_get_type ())
#define GCALC_GFUNCTION_ACOS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_ACOS, GCalcGFunctionAcos))
#define GCALC_GFUNCTION_ACOS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_ACOS, GCalcGFunctionAcosClass))
#define GCALC_IS_GFUNCTION_ACOS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_ACOS))
#define GCALC_IS_GFUNCTION_ACOS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_ACOS))
#define GCALC_GFUNCTION_ACOS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_ACOS, GCalcGFunctionAcosClass))

typedef struct _GCalcGFunctionAcos GCalcGFunctionAcos;
typedef struct _GCalcGFunctionAcosClass GCalcGFunctionAcosClass;
typedef struct _GCalcGFunctionAcosPrivate GCalcGFunctionAcosPrivate;

#define GCALC_TYPE_GFUNCTION_ACOSH (gcalc_gfunction_acosh_get_type ())
#define GCALC_GFUNCTION_ACOSH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_ACOSH, GCalcGFunctionAcosh))
#define GCALC_GFUNCTION_ACOSH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_ACOSH, GCalcGFunctionAcoshClass))
#define GCALC_IS_GFUNCTION_ACOSH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_ACOSH))
#define GCALC_IS_GFUNCTION_ACOSH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_ACOSH))
#define GCALC_GFUNCTION_ACOSH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_ACOSH, GCalcGFunctionAcoshClass))

typedef struct _GCalcGFunctionAcosh GCalcGFunctionAcosh;
typedef struct _GCalcGFunctionAcoshClass GCalcGFunctionAcoshClass;
typedef struct _GCalcGFunctionAcoshPrivate GCalcGFunctionAcoshPrivate;

#define GCALC_TYPE_GFUNCTION_ASIN (gcalc_gfunction_asin_get_type ())
#define GCALC_GFUNCTION_ASIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_ASIN, GCalcGFunctionAsin))
#define GCALC_GFUNCTION_ASIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_ASIN, GCalcGFunctionAsinClass))
#define GCALC_IS_GFUNCTION_ASIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_ASIN))
#define GCALC_IS_GFUNCTION_ASIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_ASIN))
#define GCALC_GFUNCTION_ASIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_ASIN, GCalcGFunctionAsinClass))

typedef struct _GCalcGFunctionAsin GCalcGFunctionAsin;
typedef struct _GCalcGFunctionAsinClass GCalcGFunctionAsinClass;
typedef struct _GCalcGFunctionAsinPrivate GCalcGFunctionAsinPrivate;

#define GCALC_TYPE_GFUNCTION_ASINH (gcalc_gfunction_asinh_get_type ())
#define GCALC_GFUNCTION_ASINH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_ASINH, GCalcGFunctionAsinh))
#define GCALC_GFUNCTION_ASINH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_ASINH, GCalcGFunctionAsinhClass))
#define GCALC_IS_GFUNCTION_ASINH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_ASINH))
#define GCALC_IS_GFUNCTION_ASINH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_ASINH))
#define GCALC_GFUNCTION_ASINH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_ASINH, GCalcGFunctionAsinhClass))

typedef struct _GCalcGFunctionAsinh GCalcGFunctionAsinh;
typedef struct _GCalcGFunctionAsinhClass GCalcGFunctionAsinhClass;
typedef struct _GCalcGFunctionAsinhPrivate GCalcGFunctionAsinhPrivate;

#define GCALC_TYPE_GFUNCTION_ATAN (gcalc_gfunction_atan_get_type ())
#define GCALC_GFUNCTION_ATAN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_ATAN, GCalcGFunctionAtan))
#define GCALC_GFUNCTION_ATAN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_ATAN, GCalcGFunctionAtanClass))
#define GCALC_IS_GFUNCTION_ATAN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_ATAN))
#define GCALC_IS_GFUNCTION_ATAN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_ATAN))
#define GCALC_GFUNCTION_ATAN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_ATAN, GCalcGFunctionAtanClass))

typedef struct _GCalcGFunctionAtan GCalcGFunctionAtan;
typedef struct _GCalcGFunctionAtanClass GCalcGFunctionAtanClass;
typedef struct _GCalcGFunctionAtanPrivate GCalcGFunctionAtanPrivate;

#define GCALC_TYPE_GFUNCTION_ATANH (gcalc_gfunction_atanh_get_type ())
#define GCALC_GFUNCTION_ATANH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_ATANH, GCalcGFunctionAtanh))
#define GCALC_GFUNCTION_ATANH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_ATANH, GCalcGFunctionAtanhClass))
#define GCALC_IS_GFUNCTION_ATANH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_ATANH))
#define GCALC_IS_GFUNCTION_ATANH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_ATANH))
#define GCALC_GFUNCTION_ATANH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_ATANH, GCalcGFunctionAtanhClass))

typedef struct _GCalcGFunctionAtanh GCalcGFunctionAtanh;
typedef struct _GCalcGFunctionAtanhClass GCalcGFunctionAtanhClass;
typedef struct _GCalcGFunctionAtanhPrivate GCalcGFunctionAtanhPrivate;

#define GCALC_TYPE_GFUNCTION_COS (gcalc_gfunction_cos_get_type ())
#define GCALC_GFUNCTION_COS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_COS, GCalcGFunctionCos))
#define GCALC_GFUNCTION_COS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_COS, GCalcGFunctionCosClass))
#define GCALC_IS_GFUNCTION_COS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_COS))
#define GCALC_IS_GFUNCTION_COS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_COS))
#define GCALC_GFUNCTION_COS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_COS, GCalcGFunctionCosClass))

typedef struct _GCalcGFunctionCos GCalcGFunctionCos;
typedef struct _GCalcGFunctionCosClass GCalcGFunctionCosClass;
typedef struct _GCalcGFunctionCosPrivate GCalcGFunctionCosPrivate;

#define GCALC_TYPE_GFUNCTION_COSH (gcalc_gfunction_cosh_get_type ())
#define GCALC_GFUNCTION_COSH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_COSH, GCalcGFunctionCosh))
#define GCALC_GFUNCTION_COSH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_COSH, GCalcGFunctionCoshClass))
#define GCALC_IS_GFUNCTION_COSH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_COSH))
#define GCALC_IS_GFUNCTION_COSH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_COSH))
#define GCALC_GFUNCTION_COSH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_COSH, GCalcGFunctionCoshClass))

typedef struct _GCalcGFunctionCosh GCalcGFunctionCosh;
typedef struct _GCalcGFunctionCoshClass GCalcGFunctionCoshClass;
typedef struct _GCalcGFunctionCoshPrivate GCalcGFunctionCoshPrivate;

#define GCALC_TYPE_GFUNCTION_EXP (gcalc_gfunction_exp_get_type ())
#define GCALC_GFUNCTION_EXP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_EXP, GCalcGFunctionExp))
#define GCALC_GFUNCTION_EXP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_EXP, GCalcGFunctionExpClass))
#define GCALC_IS_GFUNCTION_EXP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_EXP))
#define GCALC_IS_GFUNCTION_EXP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_EXP))
#define GCALC_GFUNCTION_EXP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_EXP, GCalcGFunctionExpClass))

typedef struct _GCalcGFunctionExp GCalcGFunctionExp;
typedef struct _GCalcGFunctionExpClass GCalcGFunctionExpClass;
typedef struct _GCalcGFunctionExpPrivate GCalcGFunctionExpPrivate;

#define GCALC_TYPE_GFUNCTION_LOG (gcalc_gfunction_log_get_type ())
#define GCALC_GFUNCTION_LOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_LOG, GCalcGFunctionLog))
#define GCALC_GFUNCTION_LOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_LOG, GCalcGFunctionLogClass))
#define GCALC_IS_GFUNCTION_LOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_LOG))
#define GCALC_IS_GFUNCTION_LOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_LOG))
#define GCALC_GFUNCTION_LOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_LOG, GCalcGFunctionLogClass))

typedef struct _GCalcGFunctionLog GCalcGFunctionLog;
typedef struct _GCalcGFunctionLogClass GCalcGFunctionLogClass;
typedef struct _GCalcGFunctionLogPrivate GCalcGFunctionLogPrivate;

#define GCALC_TYPE_GFUNCTION_SIN (gcalc_gfunction_sin_get_type ())
#define GCALC_GFUNCTION_SIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_SIN, GCalcGFunctionSin))
#define GCALC_GFUNCTION_SIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_SIN, GCalcGFunctionSinClass))
#define GCALC_IS_GFUNCTION_SIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_SIN))
#define GCALC_IS_GFUNCTION_SIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_SIN))
#define GCALC_GFUNCTION_SIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_SIN, GCalcGFunctionSinClass))

typedef struct _GCalcGFunctionSin GCalcGFunctionSin;
typedef struct _GCalcGFunctionSinClass GCalcGFunctionSinClass;
typedef struct _GCalcGFunctionSinPrivate GCalcGFunctionSinPrivate;

#define GCALC_TYPE_GFUNCTION_SINH (gcalc_gfunction_sinh_get_type ())
#define GCALC_GFUNCTION_SINH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_SINH, GCalcGFunctionSinh))
#define GCALC_GFUNCTION_SINH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_SINH, GCalcGFunctionSinhClass))
#define GCALC_IS_GFUNCTION_SINH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_SINH))
#define GCALC_IS_GFUNCTION_SINH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_SINH))
#define GCALC_GFUNCTION_SINH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_SINH, GCalcGFunctionSinhClass))

typedef struct _GCalcGFunctionSinh GCalcGFunctionSinh;
typedef struct _GCalcGFunctionSinhClass GCalcGFunctionSinhClass;
typedef struct _GCalcGFunctionSinhPrivate GCalcGFunctionSinhPrivate;

#define GCALC_TYPE_GFUNCTION_SQRT (gcalc_gfunction_sqrt_get_type ())
#define GCALC_GFUNCTION_SQRT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_SQRT, GCalcGFunctionSqrt))
#define GCALC_GFUNCTION_SQRT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_SQRT, GCalcGFunctionSqrtClass))
#define GCALC_IS_GFUNCTION_SQRT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_SQRT))
#define GCALC_IS_GFUNCTION_SQRT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_SQRT))
#define GCALC_GFUNCTION_SQRT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_SQRT, GCalcGFunctionSqrtClass))

typedef struct _GCalcGFunctionSqrt GCalcGFunctionSqrt;
typedef struct _GCalcGFunctionSqrtClass GCalcGFunctionSqrtClass;
typedef struct _GCalcGFunctionSqrtPrivate GCalcGFunctionSqrtPrivate;

#define GCALC_TYPE_GFUNCTION_TAN (gcalc_gfunction_tan_get_type ())
#define GCALC_GFUNCTION_TAN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_TAN, GCalcGFunctionTan))
#define GCALC_GFUNCTION_TAN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_TAN, GCalcGFunctionTanClass))
#define GCALC_IS_GFUNCTION_TAN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_TAN))
#define GCALC_IS_GFUNCTION_TAN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_TAN))
#define GCALC_GFUNCTION_TAN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_TAN, GCalcGFunctionTanClass))

typedef struct _GCalcGFunctionTan GCalcGFunctionTan;
typedef struct _GCalcGFunctionTanClass GCalcGFunctionTanClass;
typedef struct _GCalcGFunctionTanPrivate GCalcGFunctionTanPrivate;

#define GCALC_TYPE_GFUNCTION_TANH (gcalc_gfunction_tanh_get_type ())
#define GCALC_GFUNCTION_TANH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GFUNCTION_TANH, GCalcGFunctionTanh))
#define GCALC_GFUNCTION_TANH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GFUNCTION_TANH, GCalcGFunctionTanhClass))
#define GCALC_IS_GFUNCTION_TANH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GFUNCTION_TANH))
#define GCALC_IS_GFUNCTION_TANH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GFUNCTION_TANH))
#define GCALC_GFUNCTION_TANH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GFUNCTION_TANH, GCalcGFunctionTanhClass))

typedef struct _GCalcGFunctionTanh GCalcGFunctionTanh;
typedef struct _GCalcGFunctionTanhClass GCalcGFunctionTanhClass;
typedef struct _GCalcGFunctionTanhPrivate GCalcGFunctionTanhPrivate;

#define GCALC_TYPE_ERROR_RESULT (gcalc_error_result_get_type ())
#define GCALC_ERROR_RESULT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_ERROR_RESULT, GCalcErrorResult))
#define GCALC_IS_ERROR_RESULT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_ERROR_RESULT))
#define GCALC_ERROR_RESULT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_ERROR_RESULT, GCalcErrorResultIface))

typedef struct _GCalcErrorResult GCalcErrorResult;
typedef struct _GCalcErrorResultIface GCalcErrorResultIface;

#define GCALC_TYPE_GERROR_EXPRESSION (gcalc_gerror_expression_get_type ())
#define GCALC_GERROR_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GERROR_EXPRESSION, GCalcGErrorExpression))
#define GCALC_GERROR_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GERROR_EXPRESSION, GCalcGErrorExpressionClass))
#define GCALC_IS_GERROR_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GERROR_EXPRESSION))
#define GCALC_IS_GERROR_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GERROR_EXPRESSION))
#define GCALC_GERROR_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GERROR_EXPRESSION, GCalcGErrorExpressionClass))

typedef struct _GCalcGErrorExpression GCalcGErrorExpression;
typedef struct _GCalcGErrorExpressionClass GCalcGErrorExpressionClass;
typedef struct _GCalcGErrorExpressionPrivate GCalcGErrorExpressionPrivate;

#define GCALC_TYPE_GASSIGN (gcalc_gassign_get_type ())
#define GCALC_GASSIGN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GASSIGN, GCalcGAssign))
#define GCALC_GASSIGN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GASSIGN, GCalcGAssignClass))
#define GCALC_IS_GASSIGN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GASSIGN))
#define GCALC_IS_GASSIGN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GASSIGN))
#define GCALC_GASSIGN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GASSIGN, GCalcGAssignClass))

typedef struct _GCalcGAssign GCalcGAssign;
typedef struct _GCalcGAssignClass GCalcGAssignClass;
typedef struct _GCalcGAssignPrivate GCalcGAssignPrivate;

#define GCALC_TYPE_GCONSTANT (gcalc_gconstant_get_type ())
#define GCALC_GCONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GCONSTANT, GCalcGConstant))
#define GCALC_GCONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GCONSTANT, GCalcGConstantClass))
#define GCALC_IS_GCONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GCONSTANT))
#define GCALC_IS_GCONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GCONSTANT))
#define GCALC_GCONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GCONSTANT, GCalcGConstantClass))

typedef struct _GCalcGConstant GCalcGConstant;
typedef struct _GCalcGConstantClass GCalcGConstantClass;
typedef struct _GCalcGConstantPrivate GCalcGConstantPrivate;

#define GCALC_TYPE_GDIVISION (gcalc_gdivision_get_type ())
#define GCALC_GDIVISION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GDIVISION, GCalcGDivision))
#define GCALC_GDIVISION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GDIVISION, GCalcGDivisionClass))
#define GCALC_IS_GDIVISION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GDIVISION))
#define GCALC_IS_GDIVISION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GDIVISION))
#define GCALC_GDIVISION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GDIVISION, GCalcGDivisionClass))

typedef struct _GCalcGDivision GCalcGDivision;
typedef struct _GCalcGDivisionClass GCalcGDivisionClass;
typedef struct _GCalcGDivisionPrivate GCalcGDivisionPrivate;

#define GCALC_TYPE_GERROR_RESULT (gcalc_gerror_result_get_type ())
#define GCALC_GERROR_RESULT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GERROR_RESULT, GCalcGErrorResult))
#define GCALC_GERROR_RESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GERROR_RESULT, GCalcGErrorResultClass))
#define GCALC_IS_GERROR_RESULT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GERROR_RESULT))
#define GCALC_IS_GERROR_RESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GERROR_RESULT))
#define GCALC_GERROR_RESULT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GERROR_RESULT, GCalcGErrorResultClass))

typedef struct _GCalcGErrorResult GCalcGErrorResult;
typedef struct _GCalcGErrorResultClass GCalcGErrorResultClass;
typedef struct _GCalcGErrorResultPrivate GCalcGErrorResultPrivate;

#define GCALC_TYPE_MATH_EQUATION (gcalc_math_equation_get_type ())
#define GCALC_MATH_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_MATH_EQUATION, GCalcMathEquation))
#define GCALC_IS_MATH_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_MATH_EQUATION))
#define GCALC_MATH_EQUATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_MATH_EQUATION, GCalcMathEquationIface))

typedef struct _GCalcMathEquation GCalcMathEquation;
typedef struct _GCalcMathEquationIface GCalcMathEquationIface;

#define GCALC_TYPE_GMATH_EQUATION (gcalc_gmath_equation_get_type ())
#define GCALC_GMATH_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GMATH_EQUATION, GCalcGMathEquation))
#define GCALC_GMATH_EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GMATH_EQUATION, GCalcGMathEquationClass))
#define GCALC_IS_GMATH_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GMATH_EQUATION))
#define GCALC_IS_GMATH_EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GMATH_EQUATION))
#define GCALC_GMATH_EQUATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GMATH_EQUATION, GCalcGMathEquationClass))

typedef struct _GCalcGMathEquation GCalcGMathEquation;
typedef struct _GCalcGMathEquationClass GCalcGMathEquationClass;
typedef struct _GCalcGMathEquationPrivate GCalcGMathEquationPrivate;

#define GCALC_TYPE_MATH_EQUATION_MANAGER (gcalc_math_equation_manager_get_type ())
#define GCALC_MATH_EQUATION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_MATH_EQUATION_MANAGER, GCalcMathEquationManager))
#define GCALC_IS_MATH_EQUATION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_MATH_EQUATION_MANAGER))
#define GCALC_MATH_EQUATION_MANAGER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_MATH_EQUATION_MANAGER, GCalcMathEquationManagerIface))

typedef struct _GCalcMathEquationManager GCalcMathEquationManager;
typedef struct _GCalcMathEquationManagerIface GCalcMathEquationManagerIface;

#define GCALC_TYPE_VARIABLE (gcalc_variable_get_type ())
#define GCALC_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_VARIABLE, GCalcVariable))
#define GCALC_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_VARIABLE))
#define GCALC_VARIABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_VARIABLE, GCalcVariableIface))

typedef struct _GCalcVariable GCalcVariable;
typedef struct _GCalcVariableIface GCalcVariableIface;

#define GCALC_TYPE_GMATH_EQUATION_MANAGER (gcalc_gmath_equation_manager_get_type ())
#define GCALC_GMATH_EQUATION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GMATH_EQUATION_MANAGER, GCalcGMathEquationManager))
#define GCALC_GMATH_EQUATION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GMATH_EQUATION_MANAGER, GCalcGMathEquationManagerClass))
#define GCALC_IS_GMATH_EQUATION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GMATH_EQUATION_MANAGER))
#define GCALC_IS_GMATH_EQUATION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GMATH_EQUATION_MANAGER))
#define GCALC_GMATH_EQUATION_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GMATH_EQUATION_MANAGER, GCalcGMathEquationManagerClass))

typedef struct _GCalcGMathEquationManager GCalcGMathEquationManager;
typedef struct _GCalcGMathEquationManagerClass GCalcGMathEquationManagerClass;
typedef struct _GCalcGMathEquationManagerPrivate GCalcGMathEquationManagerPrivate;

#define GCALC_TYPE_MINUS (gcalc_minus_get_type ())
#define GCALC_MINUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_MINUS, GCalcMinus))
#define GCALC_IS_MINUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_MINUS))
#define GCALC_MINUS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_MINUS, GCalcMinusIface))

typedef struct _GCalcMinus GCalcMinus;
typedef struct _GCalcMinusIface GCalcMinusIface;

#define GCALC_TYPE_GMINUS (gcalc_gminus_get_type ())
#define GCALC_GMINUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GMINUS, GCalcGMinus))
#define GCALC_GMINUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GMINUS, GCalcGMinusClass))
#define GCALC_IS_GMINUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GMINUS))
#define GCALC_IS_GMINUS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GMINUS))
#define GCALC_GMINUS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GMINUS, GCalcGMinusClass))

typedef struct _GCalcGMinus GCalcGMinus;
typedef struct _GCalcGMinusClass GCalcGMinusClass;
typedef struct _GCalcGMinusPrivate GCalcGMinusPrivate;

#define GCALC_TYPE_MULTIPLY (gcalc_multiply_get_type ())
#define GCALC_MULTIPLY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_MULTIPLY, GCalcMultiply))
#define GCALC_IS_MULTIPLY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_MULTIPLY))
#define GCALC_MULTIPLY_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_MULTIPLY, GCalcMultiplyIface))

typedef struct _GCalcMultiply GCalcMultiply;
typedef struct _GCalcMultiplyIface GCalcMultiplyIface;

#define GCALC_TYPE_GMULTIPLY (gcalc_gmultiply_get_type ())
#define GCALC_GMULTIPLY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GMULTIPLY, GCalcGMultiply))
#define GCALC_GMULTIPLY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GMULTIPLY, GCalcGMultiplyClass))
#define GCALC_IS_GMULTIPLY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GMULTIPLY))
#define GCALC_IS_GMULTIPLY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GMULTIPLY))
#define GCALC_GMULTIPLY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GMULTIPLY, GCalcGMultiplyClass))

typedef struct _GCalcGMultiply GCalcGMultiply;
typedef struct _GCalcGMultiplyClass GCalcGMultiplyClass;
typedef struct _GCalcGMultiplyPrivate GCalcGMultiplyPrivate;

#define GCALC_TYPE_GPARSER (gcalc_gparser_get_type ())
#define GCALC_GPARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GPARSER, GCalcGParser))
#define GCALC_GPARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GPARSER, GCalcGParserClass))
#define GCALC_IS_GPARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GPARSER))
#define GCALC_IS_GPARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GPARSER))
#define GCALC_GPARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GPARSER, GCalcGParserClass))

typedef struct _GCalcGParser GCalcGParser;
typedef struct _GCalcGParserClass GCalcGParserClass;
typedef struct _GCalcGParserPrivate GCalcGParserPrivate;
typedef enum  {
	GCALC_GPARSER_TOKEN_TYPE_NONE,
	GCALC_GPARSER_TOKEN_TYPE_EOF,
	GCALC_GPARSER_TOKEN_TYPE_IDENTIFIER,
	GCALC_GPARSER_TOKEN_TYPE_INTEGER_LITERAL,
	GCALC_GPARSER_TOKEN_TYPE_REAL_LITERAL,
	GCALC_GPARSER_TOKEN_TYPE_STAR,
	GCALC_GPARSER_TOKEN_TYPE_PLUS,
	GCALC_GPARSER_TOKEN_TYPE_DIV,
	GCALC_GPARSER_TOKEN_TYPE_MINUS,
	GCALC_GPARSER_TOKEN_TYPE_ASSIGN,
	GCALC_GPARSER_TOKEN_TYPE_OPEN_PARENS,
	GCALC_GPARSER_TOKEN_TYPE_CLOSE_PARENS,
	GCALC_GPARSER_TOKEN_TYPE_CARRET,
	GCALC_GPARSER_TOKEN_TYPE_CLOSE_BRACE,
	GCALC_GPARSER_TOKEN_TYPE_CLOSE_BRACKET,
	GCALC_GPARSER_TOKEN_TYPE_OPEN_BRACE,
	GCALC_GPARSER_TOKEN_TYPE_OPEN_BRACKET,
	GCALC_GPARSER_TOKEN_TYPE_STRING_LITERAL,
	GCALC_GPARSER_TOKEN_TYPE_OP_AND,
	GCALC_GPARSER_TOKEN_TYPE_OP_COALESCING,
	GCALC_GPARSER_TOKEN_TYPE_OP_DEC,
	GCALC_GPARSER_TOKEN_TYPE_OP_EQ,
	GCALC_GPARSER_TOKEN_TYPE_OP_GE,
	GCALC_GPARSER_TOKEN_TYPE_OP_GT,
	GCALC_GPARSER_TOKEN_TYPE_OP_INC,
	GCALC_GPARSER_TOKEN_TYPE_OP_LE,
	GCALC_GPARSER_TOKEN_TYPE_OP_LT,
	GCALC_GPARSER_TOKEN_TYPE_OP_NE,
	GCALC_GPARSER_TOKEN_TYPE_OP_NEG,
	GCALC_GPARSER_TOKEN_TYPE_OP_OR,
	GCALC_GPARSER_TOKEN_TYPE_OP_PTR,
	GCALC_GPARSER_TOKEN_TYPE_OP_SHIFT_LEFT,
	GCALC_GPARSER_TOKEN_TYPE_SEMICOLON,
	GCALC_GPARSER_TOKEN_TYPE_TILDE,
	GCALC_GPARSER_TOKEN_TYPE_COLON,
	GCALC_GPARSER_TOKEN_TYPE_COMMA,
	GCALC_GPARSER_TOKEN_TYPE_DOUBLE_COLON,
	GCALC_GPARSER_TOKEN_TYPE_DOT,
	GCALC_GPARSER_TOKEN_TYPE_ELLIPSIS,
	GCALC_GPARSER_TOKEN_TYPE_INTERR,
	GCALC_GPARSER_TOKEN_TYPE_HASH
} GCalcGParserTokenType;

#define GCALC_GPARSER_TYPE_TOKEN_TYPE (gcalc_gparser_token_type_get_type ())

#define GCALC_TYPE_PLUS (gcalc_plus_get_type ())
#define GCALC_PLUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_PLUS, GCalcPlus))
#define GCALC_IS_PLUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_PLUS))
#define GCALC_PLUS_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_PLUS, GCalcPlusIface))

typedef struct _GCalcPlus GCalcPlus;
typedef struct _GCalcPlusIface GCalcPlusIface;

#define GCALC_TYPE_GPLUS (gcalc_gplus_get_type ())
#define GCALC_GPLUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GPLUS, GCalcGPlus))
#define GCALC_GPLUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GPLUS, GCalcGPlusClass))
#define GCALC_IS_GPLUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GPLUS))
#define GCALC_IS_GPLUS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GPLUS))
#define GCALC_GPLUS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GPLUS, GCalcGPlusClass))

typedef struct _GCalcGPlus GCalcGPlus;
typedef struct _GCalcGPlusClass GCalcGPlusClass;
typedef struct _GCalcGPlusPrivate GCalcGPlusPrivate;

#define GCALC_TYPE_POLYNOMIAL (gcalc_polynomial_get_type ())
#define GCALC_POLYNOMIAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_POLYNOMIAL, GCalcPolynomial))
#define GCALC_IS_POLYNOMIAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_POLYNOMIAL))
#define GCALC_POLYNOMIAL_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_POLYNOMIAL, GCalcPolynomialIface))

typedef struct _GCalcPolynomial GCalcPolynomial;
typedef struct _GCalcPolynomialIface GCalcPolynomialIface;

#define GCALC_TYPE_GPOLYNOMIAL (gcalc_gpolynomial_get_type ())
#define GCALC_GPOLYNOMIAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GPOLYNOMIAL, GCalcGPolynomial))
#define GCALC_GPOLYNOMIAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GPOLYNOMIAL, GCalcGPolynomialClass))
#define GCALC_IS_GPOLYNOMIAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GPOLYNOMIAL))
#define GCALC_IS_GPOLYNOMIAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GPOLYNOMIAL))
#define GCALC_GPOLYNOMIAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GPOLYNOMIAL, GCalcGPolynomialClass))

typedef struct _GCalcGPolynomial GCalcGPolynomial;
typedef struct _GCalcGPolynomialClass GCalcGPolynomialClass;
typedef struct _GCalcGPolynomialPrivate GCalcGPolynomialPrivate;

#define GCALC_TYPE_POW (gcalc_pow_get_type ())
#define GCALC_POW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_POW, GCalcPow))
#define GCALC_IS_POW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_POW))
#define GCALC_POW_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_POW, GCalcPowIface))

typedef struct _GCalcPow GCalcPow;
typedef struct _GCalcPowIface GCalcPowIface;

#define GCALC_TYPE_GPOW (gcalc_gpow_get_type ())
#define GCALC_GPOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GPOW, GCalcGPow))
#define GCALC_GPOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GPOW, GCalcGPowClass))
#define GCALC_IS_GPOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GPOW))
#define GCALC_IS_GPOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GPOW))
#define GCALC_GPOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GPOW, GCalcGPowClass))

typedef struct _GCalcGPow GCalcGPow;
typedef struct _GCalcGPowClass GCalcGPowClass;
typedef struct _GCalcGPowPrivate GCalcGPowPrivate;

#define GCALC_TYPE_GRESULT (gcalc_gresult_get_type ())
#define GCALC_GRESULT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GRESULT, GCalcGResult))
#define GCALC_GRESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GRESULT, GCalcGResultClass))
#define GCALC_IS_GRESULT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GRESULT))
#define GCALC_IS_GRESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GRESULT))
#define GCALC_GRESULT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GRESULT, GCalcGResultClass))

typedef struct _GCalcGResult GCalcGResult;
typedef struct _GCalcGResultClass GCalcGResultClass;
typedef struct _GCalcGResultPrivate GCalcGResultPrivate;

#define GCALC_TYPE_GROUP (gcalc_group_get_type ())
#define GCALC_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GROUP, GCalcGroup))
#define GCALC_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GROUP))
#define GCALC_GROUP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_GROUP, GCalcGroupIface))

typedef struct _GCalcGroup GCalcGroup;
typedef struct _GCalcGroupIface GCalcGroupIface;
typedef enum  {
	GCALC_GROUP_LEVEL_ONE,
	GCALC_GROUP_LEVEL_TWO,
	GCALC_GROUP_LEVEL_THREE
} GCalcGroupLevel;

#define GCALC_GROUP_TYPE_LEVEL (gcalc_group_level_get_type ())

#define GCALC_TYPE_GGROUP (gcalc_ggroup_get_type ())
#define GCALC_GGROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GGROUP, GCalcGGroup))
#define GCALC_GGROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GGROUP, GCalcGGroupClass))
#define GCALC_IS_GGROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GGROUP))
#define GCALC_IS_GGROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GGROUP))
#define GCALC_GGROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GGROUP, GCalcGGroupClass))

typedef struct _GCalcGGroup GCalcGGroup;
typedef struct _GCalcGGroupClass GCalcGGroupClass;
typedef struct _GCalcGGroupPrivate GCalcGGroupPrivate;

#define GCALC_TYPE_SOLVER (gcalc_solver_get_type ())
#define GCALC_SOLVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_SOLVER, GCalcSolver))
#define GCALC_IS_SOLVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_SOLVER))
#define GCALC_SOLVER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_SOLVER, GCalcSolverIface))

typedef struct _GCalcSolver GCalcSolver;
typedef struct _GCalcSolverIface GCalcSolverIface;

#define GCALC_TYPE_GSOLVER (gcalc_gsolver_get_type ())
#define GCALC_GSOLVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GSOLVER, GCalcGSolver))
#define GCALC_GSOLVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GSOLVER, GCalcGSolverClass))
#define GCALC_IS_GSOLVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GSOLVER))
#define GCALC_IS_GSOLVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GSOLVER))
#define GCALC_GSOLVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GSOLVER, GCalcGSolverClass))

typedef struct _GCalcGSolver GCalcGSolver;
typedef struct _GCalcGSolverClass GCalcGSolverClass;
typedef struct _GCalcGSolverPrivate GCalcGSolverPrivate;

#define GCALC_TYPE_TERM (gcalc_term_get_type ())
#define GCALC_TERM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_TERM, GCalcTerm))
#define GCALC_IS_TERM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_TERM))
#define GCALC_TERM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GCALC_TYPE_TERM, GCalcTermIface))

typedef struct _GCalcTerm GCalcTerm;
typedef struct _GCalcTermIface GCalcTermIface;

#define GCALC_TYPE_GTERM (gcalc_gterm_get_type ())
#define GCALC_GTERM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GTERM, GCalcGTerm))
#define GCALC_GTERM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GTERM, GCalcGTermClass))
#define GCALC_IS_GTERM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GTERM))
#define GCALC_IS_GTERM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GTERM))
#define GCALC_GTERM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GTERM, GCalcGTermClass))

typedef struct _GCalcGTerm GCalcGTerm;
typedef struct _GCalcGTermClass GCalcGTermClass;
typedef struct _GCalcGTermPrivate GCalcGTermPrivate;

#define GCALC_TYPE_GVARIABLE (gcalc_gvariable_get_type ())
#define GCALC_GVARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCALC_TYPE_GVARIABLE, GCalcGVariable))
#define GCALC_GVARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GCALC_TYPE_GVARIABLE, GCalcGVariableClass))
#define GCALC_IS_GVARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCALC_TYPE_GVARIABLE))
#define GCALC_IS_GVARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCALC_TYPE_GVARIABLE))
#define GCALC_GVARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCALC_TYPE_GVARIABLE, GCalcGVariableClass))

typedef struct _GCalcGVariable GCalcGVariable;
typedef struct _GCalcGVariableClass GCalcGVariableClass;
typedef struct _GCalcGVariablePrivate GCalcGVariablePrivate;

struct _GCalcResultIface {
	GTypeInterface parent_iface;
	gchar* (*to_string) (GCalcResult* self);
	GCalcExpression* (*get_expression) (GCalcResult* self);
};

struct _GCalcExpressionIface {
	GTypeInterface parent_iface;
	gchar* (*to_string) (GCalcExpression* self);
	GCalcResult* (*solve) (GCalcExpression* self);
	GCalcExpression* (*get_parent) (GCalcExpression* self);
	void (*set_parent) (GCalcExpression* self, GCalcExpression* value);
	GCalcExpressionContainer* (*get_expressions) (GCalcExpression* self);
};

struct _GCalcOperatorIface {
	GTypeInterface parent_iface;
};

struct _GCalcBinaryOperatorIface {
	GTypeInterface parent_iface;
};

struct _GCalcAssignIface {
	GTypeInterface parent_iface;
};

typedef enum  {
	GCALC_ASSIG_ERROR_INVALID_STRUCTURE_ERROR
} GCalcAssigError;
#define GCALC_ASSIG_ERROR gcalc_assig_error_quark ()
struct _GCalcConstantIface {
	GTypeInterface parent_iface;
	gdouble (*real) (GCalcConstant* self);
	gdouble (*imag) (GCalcConstant* self);
	void (*zero) (GCalcConstant* self);
	GCalcConstant* (*add) (GCalcConstant* self, GCalcConstant* c);
	GCalcConstant* (*multiply) (GCalcConstant* self, GCalcConstant* c);
	GCalcConstant* (*divide) (GCalcConstant* self, GCalcConstant* c);
	GCalcConstant* (*neg) (GCalcConstant* self);
	GCalcConstant* (*pow) (GCalcConstant* self, GCalcConstant* c);
};

struct _GCalcDivisionIface {
	GTypeInterface parent_iface;
};

struct _GCalcErrorExpressionIface {
	GTypeInterface parent_iface;
};

struct _GCalcExpressionContainer {
	GeeArrayList parent_instance;
	GCalcExpressionContainerPrivate * priv;
};

struct _GCalcExpressionContainerClass {
	GeeArrayListClass parent_class;
};

struct _GCalcExpressionHashMap {
	GeeHashMap parent_instance;
	GCalcExpressionHashMapPrivate * priv;
};

struct _GCalcExpressionHashMapClass {
	GeeHashMapClass parent_class;
};

struct _GCalcFunctionIface {
	GTypeInterface parent_iface;
	GCalcExpression* (*evaluate) (GCalcFunction* self, GError** error);
	gboolean (*verify_params) (GCalcFunction* self, GError** error);
	GCalcExpressionContainer* (*get_param_types) (GCalcFunction* self);
	const gchar* (*get_name) (GCalcFunction* self);
	void (*set_name) (GCalcFunction* self, const gchar* value);
	guint (*get_n_params) (GCalcFunction* self);
	void (*set_n_params) (GCalcFunction* self, guint value);
	gboolean (*get_closed) (GCalcFunction* self);
	void (*set_closed) (GCalcFunction* self, gboolean value);
};

typedef enum  {
	GCALC_FUNCTION_ERROR_INVALID_PARAMETERS_ERROR,
	GCALC_FUNCTION_ERROR_INVOCATION_ERROR
} GCalcFunctionError;
#define GCALC_FUNCTION_ERROR gcalc_function_error_quark ()
struct _GCalcGExpression {
	GObject parent_instance;
	GCalcGExpressionPrivate * priv;
};

struct _GCalcGExpressionClass {
	GObjectClass parent_class;
	gchar* (*to_string) (GCalcGExpression* self);
	GCalcResult* (*solve) (GCalcGExpression* self);
};

struct _GCalcHashableIface {
	GTypeInterface parent_iface;
	guint (*hash) (GCalcHashable* self);
};

struct _GCalcGFunction {
	GCalcGExpression parent_instance;
	GCalcGFunctionPrivate * priv;
};

struct _GCalcGFunctionClass {
	GCalcGExpressionClass parent_class;
	GCalcExpression* (*evaluate) (GCalcGFunction* self, GError** error);
};

struct _GCalcGFunctionAcos {
	GCalcGFunction parent_instance;
	GCalcGFunctionAcosPrivate * priv;
};

struct _GCalcGFunctionAcosClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionAcosh {
	GCalcGFunction parent_instance;
	GCalcGFunctionAcoshPrivate * priv;
};

struct _GCalcGFunctionAcoshClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionAsin {
	GCalcGFunction parent_instance;
	GCalcGFunctionAsinPrivate * priv;
};

struct _GCalcGFunctionAsinClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionAsinh {
	GCalcGFunction parent_instance;
	GCalcGFunctionAsinhPrivate * priv;
};

struct _GCalcGFunctionAsinhClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionAtan {
	GCalcGFunction parent_instance;
	GCalcGFunctionAtanPrivate * priv;
};

struct _GCalcGFunctionAtanClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionAtanh {
	GCalcGFunction parent_instance;
	GCalcGFunctionAtanhPrivate * priv;
};

struct _GCalcGFunctionAtanhClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionCos {
	GCalcGFunction parent_instance;
	GCalcGFunctionCosPrivate * priv;
};

struct _GCalcGFunctionCosClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionCosh {
	GCalcGFunction parent_instance;
	GCalcGFunctionCoshPrivate * priv;
};

struct _GCalcGFunctionCoshClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionExp {
	GCalcGFunction parent_instance;
	GCalcGFunctionExpPrivate * priv;
};

struct _GCalcGFunctionExpClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionLog {
	GCalcGFunction parent_instance;
	GCalcGFunctionLogPrivate * priv;
};

struct _GCalcGFunctionLogClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionSin {
	GCalcGFunction parent_instance;
	GCalcGFunctionSinPrivate * priv;
};

struct _GCalcGFunctionSinClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionSinh {
	GCalcGFunction parent_instance;
	GCalcGFunctionSinhPrivate * priv;
};

struct _GCalcGFunctionSinhClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionSqrt {
	GCalcGFunction parent_instance;
	GCalcGFunctionSqrtPrivate * priv;
};

struct _GCalcGFunctionSqrtClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionTan {
	GCalcGFunction parent_instance;
	GCalcGFunctionTanPrivate * priv;
};

struct _GCalcGFunctionTanClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcGFunctionTanh {
	GCalcGFunction parent_instance;
	GCalcGFunctionTanhPrivate * priv;
};

struct _GCalcGFunctionTanhClass {
	GCalcGFunctionClass parent_class;
};

struct _GCalcErrorResultIface {
	GTypeInterface parent_iface;
	const gchar* (*get_message) (GCalcErrorResult* self);
};

struct _GCalcGErrorExpression {
	GCalcGExpression parent_instance;
	GCalcGErrorExpressionPrivate * priv;
};

struct _GCalcGErrorExpressionClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcGAssign {
	GCalcGExpression parent_instance;
	GCalcGAssignPrivate * priv;
};

struct _GCalcGAssignClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcGConstant {
	GCalcGExpression parent_instance;
	GCalcGConstantPrivate * priv;
};

struct _GCalcGConstantClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcGDivision {
	GCalcGExpression parent_instance;
	GCalcGDivisionPrivate * priv;
};

struct _GCalcGDivisionClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcGErrorResult {
	GObject parent_instance;
	GCalcGErrorResultPrivate * priv;
};

struct _GCalcGErrorResultClass {
	GObjectClass parent_class;
};

struct _GCalcMathEquationIface {
	GTypeInterface parent_iface;
	GCalcExpressionHashMap* (*get_variables) (GCalcMathEquation* self);
};

struct _GCalcGMathEquation {
	GCalcGExpression parent_instance;
	GCalcGMathEquationPrivate * priv;
};

struct _GCalcGMathEquationClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcVariableIface {
	GTypeInterface parent_iface;
	GCalcExpression* (*evaluate) (GCalcVariable* self, GError** error);
	const gchar* (*get_name) (GCalcVariable* self);
	void (*set_name) (GCalcVariable* self, const gchar* value);
	GCalcConstant* (*get_value) (GCalcVariable* self);
	void (*set_value) (GCalcVariable* self, GCalcConstant* value);
	GCalcVariable* (*get_bind) (GCalcVariable* self);
	void (*set_bind) (GCalcVariable* self, GCalcVariable* value);
	gboolean (*get_binded) (GCalcVariable* self);
};

struct _GCalcMathEquationManagerIface {
	GTypeInterface parent_iface;
	GCalcVariable* (*find_variable) (GCalcMathEquationManager* self, const gchar* name);
	GCalcExpressionContainer* (*get_equations) (GCalcMathEquationManager* self);
	GCalcExpressionContainer* (*get_functions) (GCalcMathEquationManager* self);
};

struct _GCalcGMathEquationManager {
	GObject parent_instance;
	GCalcGMathEquationManagerPrivate * priv;
};

struct _GCalcGMathEquationManagerClass {
	GObjectClass parent_class;
};

struct _GCalcMinusIface {
	GTypeInterface parent_iface;
};

struct _GCalcGMinus {
	GCalcGExpression parent_instance;
	GCalcGMinusPrivate * priv;
};

struct _GCalcGMinusClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcMultiplyIface {
	GTypeInterface parent_iface;
};

struct _GCalcGMultiply {
	GCalcGExpression parent_instance;
	GCalcGMultiplyPrivate * priv;
};

struct _GCalcGMultiplyClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcGParser {
	GObject parent_instance;
	GCalcGParserPrivate * priv;
};

struct _GCalcGParserClass {
	GObjectClass parent_class;
};

typedef enum  {
	GCALC_PARSER_ERROR_INVALID_TOKEN_ERROR,
	GCALC_PARSER_ERROR_INVALID_EXPRESSION_ERROR
} GCalcParserError;
#define GCALC_PARSER_ERROR gcalc_parser_error_quark ()
struct _GCalcPlusIface {
	GTypeInterface parent_iface;
};

struct _GCalcGPlus {
	GCalcGExpression parent_instance;
	GCalcGPlusPrivate * priv;
};

struct _GCalcGPlusClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcPolynomialIface {
	GTypeInterface parent_iface;
	GCalcExpression* (*evaluate) (GCalcPolynomial* self, GError** error);
};

struct _GCalcGPolynomial {
	GCalcGExpression parent_instance;
	GCalcGPolynomialPrivate * priv;
};

struct _GCalcGPolynomialClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcPowIface {
	GTypeInterface parent_iface;
};

struct _GCalcGPow {
	GCalcGExpression parent_instance;
	GCalcGPowPrivate * priv;
};

struct _GCalcGPowClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcGResult {
	GObject parent_instance;
	GCalcGResultPrivate * priv;
};

struct _GCalcGResultClass {
	GObjectClass parent_class;
};

struct _GCalcGroupIface {
	GTypeInterface parent_iface;
	GCalcExpression* (*evaluate) (GCalcGroup* self, GError** error);
	GCalcGroupLevel (*get_level) (GCalcGroup* self);
	void (*set_level) (GCalcGroup* self, GCalcGroupLevel value);
	gboolean (*get_closed) (GCalcGroup* self);
	void (*set_closed) (GCalcGroup* self, gboolean value);
};

typedef enum  {
	GCALC_GROUP_ERROR_INVALID_POLYNOMIAL,
	GCALC_GROUP_ERROR_INVALID_INTERNAL_TERM
} GCalcGroupError;
#define GCALC_GROUP_ERROR gcalc_group_error_quark ()
struct _GCalcGGroup {
	GCalcGExpression parent_instance;
	GCalcGGroupPrivate * priv;
};

struct _GCalcGGroupClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcSolverIface {
	GTypeInterface parent_iface;
	GCalcResult* (*solve) (GCalcSolver* self, const gchar* str, GError** error);
	GCalcMathEquationManager* (*get_equation_manager) (GCalcSolver* self);
	void (*set_equation_manager) (GCalcSolver* self, GCalcMathEquationManager* value);
};

struct _GCalcGSolver {
	GObject parent_instance;
	GCalcGSolverPrivate * priv;
};

struct _GCalcGSolverClass {
	GObjectClass parent_class;
};

struct _GCalcTermIface {
	GTypeInterface parent_iface;
	GCalcExpression* (*add) (GCalcTerm* self, GCalcTerm* t, GError** error);
	GCalcExpression* (*evaluate) (GCalcTerm* self, GError** error);
};

struct _GCalcGTerm {
	GCalcGExpression parent_instance;
	GCalcGTermPrivate * priv;
};

struct _GCalcGTermClass {
	GCalcGExpressionClass parent_class;
};

struct _GCalcGVariable {
	GCalcGExpression parent_instance;
	GCalcGVariablePrivate * priv;
};

struct _GCalcGVariableClass {
	GCalcGExpressionClass parent_class;
};

typedef enum  {
	GCALC_SOLVER_ERROR_EXPRESSION_ERROR
} GCalcSolverError;
#define GCALC_SOLVER_ERROR gcalc_solver_error_quark ()
typedef enum  {
	GCALC_TERM_ERROR_INVALID_OPERATOR,
	GCALC_TERM_ERROR_EVALUATION_FAIL
} GCalcTermError;
#define GCALC_TERM_ERROR gcalc_term_error_quark ()
typedef enum  {
	GCALC_VARIABLE_ERROR_INVALID_PARENT,
	GCALC_VARIABLE_ERROR_INVALID_EXPRESSION_DEFINITION,
	GCALC_VARIABLE_ERROR_EVALUATION_FAIL
} GCalcVariableError;
#define GCALC_VARIABLE_ERROR gcalc_variable_error_quark ()

GType gcalc_result_get_type (void) G_GNUC_CONST;
GType gcalc_expression_container_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcExpressionContainer, g_object_unref)
GType gcalc_expression_get_type (void) G_GNUC_CONST;
GType gcalc_operator_get_type (void) G_GNUC_CONST;
GType gcalc_binary_operator_get_type (void) G_GNUC_CONST;
GType gcalc_assign_get_type (void) G_GNUC_CONST;
GCalcExpression* gcalc_assign_evaluate (GCalcAssign* self,
                                        GError** error);
GQuark gcalc_assig_error_quark (void);
GType gcalc_constant_get_type (void) G_GNUC_CONST;
gdouble gcalc_constant_real (GCalcConstant* self);
gdouble gcalc_constant_imag (GCalcConstant* self);
void gcalc_constant_zero (GCalcConstant* self);
GCalcConstant* gcalc_constant_add (GCalcConstant* self,
                                   GCalcConstant* c);
GCalcConstant* gcalc_constant_multiply (GCalcConstant* self,
                                        GCalcConstant* c);
GCalcConstant* gcalc_constant_divide (GCalcConstant* self,
                                      GCalcConstant* c);
GCalcConstant* gcalc_constant_neg (GCalcConstant* self);
GCalcConstant* gcalc_constant_pow (GCalcConstant* self,
                                   GCalcConstant* c);
GType gcalc_division_get_type (void) G_GNUC_CONST;
gchar* gcalc_expression_to_string (GCalcExpression* self);
GCalcResult* gcalc_expression_solve (GCalcExpression* self);
GCalcExpression* gcalc_expression_get_parent (GCalcExpression* self);
void gcalc_expression_set_parent (GCalcExpression* self,
                                  GCalcExpression* value);
GCalcExpressionContainer* gcalc_expression_get_expressions (GCalcExpression* self);
GType gcalc_error_expression_get_type (void) G_GNUC_CONST;
void gcalc_expression_container_add (GCalcExpressionContainer* self,
                                     GCalcExpression* exp);
GCalcExpression* gcalc_expression_container_remove_at (GCalcExpressionContainer* self,
                                                       gint index);
GCalcExpression* gcalc_expression_container_remove (GCalcExpressionContainer* self,
                                                    GCalcExpression* exp);
GObject* gcalc_expression_container_get_object (GCalcExpressionContainer* self,
                                                guint position);
GCalcExpression* gcalc_expression_container_find (GCalcExpressionContainer* self,
                                                  GCalcExpression* exp);
GCalcExpression* gcalc_expression_container_find_named (GCalcExpressionContainer* self,
                                                        const gchar* name);
GCalcExpressionContainer* gcalc_expression_container_new (void);
GCalcExpressionContainer* gcalc_expression_container_construct (GType object_type);
GCalcExpression* gcalc_expression_container_get_parent (GCalcExpressionContainer* self);
void gcalc_expression_container_set_parent (GCalcExpressionContainer* self,
                                            GCalcExpression* value);
GType gcalc_expression_hash_map_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcExpressionHashMap, g_object_unref)
void gcalc_expression_hash_map_add (GCalcExpressionHashMap* self,
                                    GCalcExpression* exp);
void gcalc_expression_hash_map_remove (GCalcExpressionHashMap* self,
                                       GCalcExpression* exp);
GCalcExpression* gcalc_expression_hash_map_find_named (GCalcExpressionHashMap* self,
                                                       const gchar* name);
GCalcExpressionHashMap* gcalc_expression_hash_map_new (void);
GCalcExpressionHashMap* gcalc_expression_hash_map_construct (GType object_type);
GCalcExpression* gcalc_expression_hash_map_get_parent (GCalcExpressionHashMap* self);
void gcalc_expression_hash_map_set_parent (GCalcExpressionHashMap* self,
                                           GCalcExpression* value);
GType gcalc_function_get_type (void) G_GNUC_CONST;
GCalcExpression* gcalc_function_evaluate (GCalcFunction* self,
                                          GError** error);
gboolean gcalc_function_verify_params (GCalcFunction* self,
                                       GError** error);
GCalcExpressionContainer* gcalc_function_get_param_types (GCalcFunction* self);
const gchar* gcalc_function_get_name (GCalcFunction* self);
void gcalc_function_set_name (GCalcFunction* self,
                              const gchar* value);
guint gcalc_function_get_n_params (GCalcFunction* self);
void gcalc_function_set_n_params (GCalcFunction* self,
                                  guint value);
gboolean gcalc_function_get_closed (GCalcFunction* self);
void gcalc_function_set_closed (GCalcFunction* self,
                                gboolean value);
GQuark gcalc_function_error_quark (void);
GType gcalc_gexpression_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGExpression, g_object_unref)
GType gcalc_hashable_get_type (void) G_GNUC_CONST;
GType gcalc_gfunction_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunction, g_object_unref)
GType gcalc_gfunction_acos_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionAcos, g_object_unref)
GCalcGFunctionAcos* gcalc_gfunction_acos_new (void);
GCalcGFunctionAcos* gcalc_gfunction_acos_construct (GType object_type);
GType gcalc_gfunction_acosh_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionAcosh, g_object_unref)
GCalcGFunctionAcosh* gcalc_gfunction_acosh_new (void);
GCalcGFunctionAcosh* gcalc_gfunction_acosh_construct (GType object_type);
GType gcalc_gfunction_asin_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionAsin, g_object_unref)
GCalcGFunctionAsin* gcalc_gfunction_asin_new (void);
GCalcGFunctionAsin* gcalc_gfunction_asin_construct (GType object_type);
GType gcalc_gfunction_asinh_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionAsinh, g_object_unref)
GCalcGFunctionAsinh* gcalc_gfunction_asinh_new (void);
GCalcGFunctionAsinh* gcalc_gfunction_asinh_construct (GType object_type);
GType gcalc_gfunction_atan_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionAtan, g_object_unref)
GCalcGFunctionAtan* gcalc_gfunction_atan_new (void);
GCalcGFunctionAtan* gcalc_gfunction_atan_construct (GType object_type);
GType gcalc_gfunction_atanh_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionAtanh, g_object_unref)
GCalcGFunctionAtanh* gcalc_gfunction_atanh_new (void);
GCalcGFunctionAtanh* gcalc_gfunction_atanh_construct (GType object_type);
GType gcalc_gfunction_cos_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionCos, g_object_unref)
GCalcGFunctionCos* gcalc_gfunction_cos_new (void);
GCalcGFunctionCos* gcalc_gfunction_cos_construct (GType object_type);
GType gcalc_gfunction_cosh_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionCosh, g_object_unref)
GCalcGFunctionCosh* gcalc_gfunction_cosh_new (void);
GCalcGFunctionCosh* gcalc_gfunction_cosh_construct (GType object_type);
GType gcalc_gfunction_exp_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionExp, g_object_unref)
GCalcGFunctionExp* gcalc_gfunction_exp_new (void);
GCalcGFunctionExp* gcalc_gfunction_exp_construct (GType object_type);
GType gcalc_gfunction_log_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionLog, g_object_unref)
GCalcGFunctionLog* gcalc_gfunction_log_new (void);
GCalcGFunctionLog* gcalc_gfunction_log_construct (GType object_type);
GType gcalc_gfunction_sin_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionSin, g_object_unref)
GCalcGFunctionSin* gcalc_gfunction_sin_new (void);
GCalcGFunctionSin* gcalc_gfunction_sin_construct (GType object_type);
GType gcalc_gfunction_sinh_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionSinh, g_object_unref)
GCalcGFunctionSinh* gcalc_gfunction_sinh_new (void);
GCalcGFunctionSinh* gcalc_gfunction_sinh_construct (GType object_type);
GType gcalc_gfunction_sqrt_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionSqrt, g_object_unref)
GCalcGFunctionSqrt* gcalc_gfunction_sqrt_new (void);
GCalcGFunctionSqrt* gcalc_gfunction_sqrt_construct (GType object_type);
GType gcalc_gfunction_tan_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionTan, g_object_unref)
GCalcGFunctionTan* gcalc_gfunction_tan_new (void);
GCalcGFunctionTan* gcalc_gfunction_tan_construct (GType object_type);
GType gcalc_gfunction_tanh_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGFunctionTanh, g_object_unref)
GCalcGFunctionTanh* gcalc_gfunction_tanh_new (void);
GCalcGFunctionTanh* gcalc_gfunction_tanh_construct (GType object_type);
GType gcalc_error_result_get_type (void) G_GNUC_CONST;
const gchar* gcalc_error_result_get_message (GCalcErrorResult* self);
gchar* gcalc_gexpression_to_string (GCalcGExpression* self);
GCalcResult* gcalc_gexpression_solve (GCalcGExpression* self);
GCalcGExpression* gcalc_gexpression_new (void);
GCalcGExpression* gcalc_gexpression_construct (GType object_type);
GType gcalc_gerror_expression_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGErrorExpression, g_object_unref)
GCalcGErrorExpression* gcalc_gerror_expression_new (void);
GCalcGErrorExpression* gcalc_gerror_expression_construct (GType object_type);
GType gcalc_gassign_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGAssign, g_object_unref)
GCalcGAssign* gcalc_gassign_new (void);
GCalcGAssign* gcalc_gassign_construct (GType object_type);
GType gcalc_gconstant_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGConstant, g_object_unref)
GCalcGConstant* gcalc_gconstant_new_integer (gint val);
GCalcGConstant* gcalc_gconstant_construct_integer (GType object_type,
                                                   gint val);
GCalcGConstant* gcalc_gconstant_new_unsigned_integer (guint val);
GCalcGConstant* gcalc_gconstant_construct_unsigned_integer (GType object_type,
                                                            guint val);
GCalcGConstant* gcalc_gconstant_new_double (gdouble val);
GCalcGConstant* gcalc_gconstant_construct_double (GType object_type,
                                                  gdouble val);
GCalcGConstant* gcalc_gconstant_new_complex (gdouble real,
                                             gdouble imag);
GCalcGConstant* gcalc_gconstant_construct_complex (GType object_type,
                                                   gdouble real,
                                                   gdouble imag);
GCalcConstant* gcalc_gconstant_subtract (GCalcGConstant* self,
                                         GCalcConstant* c);
GCalcGConstant* gcalc_gconstant_new (void);
GCalcGConstant* gcalc_gconstant_construct (GType object_type);
GType gcalc_gdivision_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGDivision, g_object_unref)
GCalcGDivision* gcalc_gdivision_new (void);
GCalcGDivision* gcalc_gdivision_construct (GType object_type);
GType gcalc_gerror_result_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGErrorResult, g_object_unref)
GCalcGErrorResult* gcalc_gerror_result_new (const gchar* msg);
GCalcGErrorResult* gcalc_gerror_result_construct (GType object_type,
                                                  const gchar* msg);
GCalcGFunction* gcalc_gfunction_new_with_name (const gchar* name,
                                               gint nparams);
GCalcGFunction* gcalc_gfunction_construct_with_name (GType object_type,
                                                     const gchar* name,
                                                     gint nparams);
GCalcExpression* gcalc_gfunction_evaluate (GCalcGFunction* self,
                                           GError** error);
GCalcGFunction* gcalc_gfunction_new (void);
GCalcGFunction* gcalc_gfunction_construct (GType object_type);
GType gcalc_math_equation_get_type (void) G_GNUC_CONST;
GType gcalc_gmath_equation_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGMathEquation, g_object_unref)
GCalcGMathEquation* gcalc_gmath_equation_new (void);
GCalcGMathEquation* gcalc_gmath_equation_construct (GType object_type);
GType gcalc_variable_get_type (void) G_GNUC_CONST;
GType gcalc_math_equation_manager_get_type (void) G_GNUC_CONST;
GType gcalc_gmath_equation_manager_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGMathEquationManager, g_object_unref)
GCalcGMathEquationManager* gcalc_gmath_equation_manager_new (void);
GCalcGMathEquationManager* gcalc_gmath_equation_manager_construct (GType object_type);
GType gcalc_minus_get_type (void) G_GNUC_CONST;
GType gcalc_gminus_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGMinus, g_object_unref)
GCalcGMinus* gcalc_gminus_new (void);
GCalcGMinus* gcalc_gminus_construct (GType object_type);
GType gcalc_multiply_get_type (void) G_GNUC_CONST;
GType gcalc_gmultiply_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGMultiply, g_object_unref)
GCalcGMultiply* gcalc_gmultiply_new (void);
GCalcGMultiply* gcalc_gmultiply_construct (GType object_type);
GType gcalc_gparser_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGParser, g_object_unref)
GType gcalc_gparser_token_type_get_type (void) G_GNUC_CONST;
void gcalc_gparser_parse (GCalcGParser* self,
                          const gchar* str,
                          GCalcMathEquationManager* eqman,
                          GError** error);
GCalcGParserTokenType gcalc_gparser_read_token (GCalcGParser* self);
gchar* gcalc_gparser_token_to_string (GCalcGParser* self);
GCalcGParser* gcalc_gparser_new (void);
GCalcGParser* gcalc_gparser_construct (GType object_type);
GQuark gcalc_parser_error_quark (void);
GType gcalc_plus_get_type (void) G_GNUC_CONST;
GType gcalc_gplus_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGPlus, g_object_unref)
GCalcGPlus* gcalc_gplus_new (void);
GCalcGPlus* gcalc_gplus_construct (GType object_type);
GType gcalc_polynomial_get_type (void) G_GNUC_CONST;
GType gcalc_gpolynomial_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGPolynomial, g_object_unref)
GCalcGPolynomial* gcalc_gpolynomial_new (void);
GCalcGPolynomial* gcalc_gpolynomial_construct (GType object_type);
GType gcalc_pow_get_type (void) G_GNUC_CONST;
GType gcalc_gpow_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGPow, g_object_unref)
GCalcGPow* gcalc_gpow_new (void);
GCalcGPow* gcalc_gpow_construct (GType object_type);
GType gcalc_gresult_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGResult, g_object_unref)
GCalcGResult* gcalc_gresult_new (GCalcExpression* exp);
GCalcGResult* gcalc_gresult_construct (GType object_type,
                                       GCalcExpression* exp);
GType gcalc_group_level_get_type (void) G_GNUC_CONST;
GType gcalc_group_get_type (void) G_GNUC_CONST;
GCalcExpression* gcalc_group_evaluate (GCalcGroup* self,
                                       GError** error);
GCalcGroupLevel gcalc_group_get_level (GCalcGroup* self);
void gcalc_group_set_level (GCalcGroup* self,
                            GCalcGroupLevel value);
gboolean gcalc_group_get_closed (GCalcGroup* self);
void gcalc_group_set_closed (GCalcGroup* self,
                             gboolean value);
GQuark gcalc_group_error_quark (void);
GType gcalc_ggroup_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGGroup, g_object_unref)
GCalcGGroup* gcalc_ggroup_new (void);
GCalcGGroup* gcalc_ggroup_construct (GType object_type);
GType gcalc_solver_get_type (void) G_GNUC_CONST;
GType gcalc_gsolver_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGSolver, g_object_unref)
GCalcGSolver* gcalc_gsolver_new (void);
GCalcGSolver* gcalc_gsolver_construct (GType object_type);
GType gcalc_term_get_type (void) G_GNUC_CONST;
GType gcalc_gterm_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGTerm, g_object_unref)
GCalcGTerm* gcalc_gterm_new (void);
GCalcGTerm* gcalc_gterm_construct (GType object_type);
GType gcalc_gvariable_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GCalcGVariable, g_object_unref)
GCalcGVariable* gcalc_gvariable_new (const gchar* name);
GCalcGVariable* gcalc_gvariable_construct (GType object_type,
                                           const gchar* name);
guint gcalc_hashable_hash (GCalcHashable* self);
GCalcExpressionHashMap* gcalc_math_equation_get_variables (GCalcMathEquation* self);
GCalcVariable* gcalc_math_equation_manager_find_variable (GCalcMathEquationManager* self,
                                                          const gchar* name);
GCalcExpressionContainer* gcalc_math_equation_manager_get_equations (GCalcMathEquationManager* self);
GCalcExpressionContainer* gcalc_math_equation_manager_get_functions (GCalcMathEquationManager* self);
GCalcExpression* gcalc_polynomial_evaluate (GCalcPolynomial* self,
                                            GError** error);
gchar* gcalc_result_to_string (GCalcResult* self);
GCalcExpression* gcalc_result_get_expression (GCalcResult* self);
GCalcResult* gcalc_solver_solve (GCalcSolver* self,
                                 const gchar* str,
                                 GError** error);
GCalcMathEquationManager* gcalc_solver_get_equation_manager (GCalcSolver* self);
void gcalc_solver_set_equation_manager (GCalcSolver* self,
                                        GCalcMathEquationManager* value);
GQuark gcalc_solver_error_quark (void);
GCalcExpression* gcalc_term_add (GCalcTerm* self,
                                 GCalcTerm* t,
                                 GError** error);
GCalcExpression* gcalc_term_evaluate (GCalcTerm* self,
                                      GError** error);
GCalcExpression* gcalc_term_evaluate_constants (GCalcConstant* c1,
                                                GCalcConstant* c2,
                                                GCalcOperator* op,
                                                GError** error);
GQuark gcalc_term_error_quark (void);
GCalcExpression* gcalc_variable_evaluate (GCalcVariable* self,
                                          GError** error);
const gchar* gcalc_variable_get_name (GCalcVariable* self);
void gcalc_variable_set_name (GCalcVariable* self,
                              const gchar* value);
GCalcConstant* gcalc_variable_get_value (GCalcVariable* self);
void gcalc_variable_set_value (GCalcVariable* self,
                               GCalcConstant* value);
GCalcVariable* gcalc_variable_get_bind (GCalcVariable* self);
void gcalc_variable_set_bind (GCalcVariable* self,
                              GCalcVariable* value);
gboolean gcalc_variable_get_binded (GCalcVariable* self);
GQuark gcalc_variable_error_quark (void);

G_END_DECLS

#endif
