/* calculator.h generated by valac 0.56.18-dirty, the Vala compiler, do not modify */

#ifndef __LIB_CALCULATOR_H__
#define __LIB_CALCULATOR_H__

#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gio/gio.h>
#include <gtksourceview/gtksource.h>
#include "mpfr.h"
#include <float.h>
#include <math.h>

G_BEGIN_DECLS

#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define TYPE_CURRENCY_MANAGER (currency_manager_get_type ())
#define CURRENCY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CURRENCY_MANAGER, CurrencyManager))
#define CURRENCY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CURRENCY_MANAGER, CurrencyManagerClass))
#define IS_CURRENCY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CURRENCY_MANAGER))
#define IS_CURRENCY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CURRENCY_MANAGER))
#define CURRENCY_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CURRENCY_MANAGER, CurrencyManagerClass))

typedef struct _CurrencyManager CurrencyManager;
typedef struct _CurrencyManagerClass CurrencyManagerClass;
typedef struct _CurrencyManagerPrivate CurrencyManagerPrivate;

#define TYPE_CURRENCY_PROVIDER (currency_provider_get_type ())
#define CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CURRENCY_PROVIDER, CurrencyProvider))
#define IS_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CURRENCY_PROVIDER))
#define CURRENCY_PROVIDER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_CURRENCY_PROVIDER, CurrencyProviderIface))

typedef struct _CurrencyProvider CurrencyProvider;
typedef struct _CurrencyProviderIface CurrencyProviderIface;

#define TYPE_CURRENCY (currency_get_type ())
#define CURRENCY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CURRENCY, Currency))
#define CURRENCY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CURRENCY, CurrencyClass))
#define IS_CURRENCY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CURRENCY))
#define IS_CURRENCY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CURRENCY))
#define CURRENCY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CURRENCY, CurrencyClass))

typedef struct _Currency Currency;
typedef struct _CurrencyClass CurrencyClass;

#define TYPE_NUMBER (number_get_type ())
#define NUMBER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NUMBER, Number))
#define NUMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NUMBER, NumberClass))
#define IS_NUMBER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NUMBER))
#define IS_NUMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NUMBER))
#define NUMBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NUMBER, NumberClass))

typedef struct _Number Number;
typedef struct _NumberClass NumberClass;
typedef struct _CurrencyPrivate CurrencyPrivate;

#define TYPE_ABSTRACT_CURRENCY_PROVIDER (abstract_currency_provider_get_type ())
#define ABSTRACT_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ABSTRACT_CURRENCY_PROVIDER, AbstractCurrencyProvider))
#define ABSTRACT_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ABSTRACT_CURRENCY_PROVIDER, AbstractCurrencyProviderClass))
#define IS_ABSTRACT_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ABSTRACT_CURRENCY_PROVIDER))
#define IS_ABSTRACT_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ABSTRACT_CURRENCY_PROVIDER))
#define ABSTRACT_CURRENCY_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ABSTRACT_CURRENCY_PROVIDER, AbstractCurrencyProviderClass))

typedef struct _AbstractCurrencyProvider AbstractCurrencyProvider;
typedef struct _AbstractCurrencyProviderClass AbstractCurrencyProviderClass;
typedef struct _AbstractCurrencyProviderPrivate AbstractCurrencyProviderPrivate;
typedef enum  {
	ERROR_CODE_NONE,
	ERROR_CODE_INVALID,
	ERROR_CODE_UNKNOWN_VARIABLE,
	ERROR_CODE_UNKNOWN_FUNCTION,
	ERROR_CODE_UNKNOWN_CONVERSION,
	ERROR_CODE_UNKNOWN_UNIT,
	ERROR_CODE_UNKNOWN_RATE,
	ERROR_CODE_MP
} ErrorCode;

#define TYPE_ERROR_CODE (error_code_get_type ())

#define TYPE_EQUATION (equation_get_type ())
#define EQUATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EQUATION, Equation))
#define EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EQUATION, EquationClass))
#define IS_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EQUATION))
#define IS_EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EQUATION))
#define EQUATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EQUATION, EquationClass))

typedef struct _Equation Equation;
typedef struct _EquationClass EquationClass;
typedef struct _EquationPrivate EquationPrivate;

#define TYPE_UNIT (unit_get_type ())
#define UNIT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNIT, Unit))
#define UNIT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNIT, UnitClass))
#define IS_UNIT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNIT))
#define IS_UNIT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNIT))
#define UNIT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNIT, UnitClass))

typedef struct _Unit Unit;
typedef struct _UnitClass UnitClass;
typedef enum  {
	ANGLE_UNIT_RADIANS,
	ANGLE_UNIT_DEGREES,
	ANGLE_UNIT_GRADIANS
} AngleUnit;

#define TYPE_ANGLE_UNIT (angle_unit_get_type ())
typedef enum  {
	LEXER_TOKEN_TYPE_UNKNOWN,
	LEXER_TOKEN_TYPE_PL_DECIMAL,
	LEXER_TOKEN_TYPE_PL_DIGIT,
	LEXER_TOKEN_TYPE_PL_HEX,
	LEXER_TOKEN_TYPE_PL_SUPER_DIGIT,
	LEXER_TOKEN_TYPE_PL_SUPER_MINUS,
	LEXER_TOKEN_TYPE_PL_SUB_DIGIT,
	LEXER_TOKEN_TYPE_PL_FRACTION,
	LEXER_TOKEN_TYPE_PL_DEGREE,
	LEXER_TOKEN_TYPE_PL_MINUTE,
	LEXER_TOKEN_TYPE_PL_SECOND,
	LEXER_TOKEN_TYPE_PL_LETTER,
	LEXER_TOKEN_TYPE_PL_EOS,
	LEXER_TOKEN_TYPE_PL_SKIP,
	LEXER_TOKEN_TYPE_ADD,
	LEXER_TOKEN_TYPE_SUBTRACT,
	LEXER_TOKEN_TYPE_MULTIPLY,
	LEXER_TOKEN_TYPE_DIVIDE,
	LEXER_TOKEN_TYPE_MOD,
	LEXER_TOKEN_TYPE_L_FLOOR,
	LEXER_TOKEN_TYPE_R_FLOOR,
	LEXER_TOKEN_TYPE_L_CEILING,
	LEXER_TOKEN_TYPE_R_CEILING,
	LEXER_TOKEN_TYPE_ROOT,
	LEXER_TOKEN_TYPE_ROOT_3,
	LEXER_TOKEN_TYPE_ROOT_4,
	LEXER_TOKEN_TYPE_NOT,
	LEXER_TOKEN_TYPE_AND,
	LEXER_TOKEN_TYPE_NAND,
	LEXER_TOKEN_TYPE_OR,
	LEXER_TOKEN_TYPE_NOR,
	LEXER_TOKEN_TYPE_XOR,
	LEXER_TOKEN_TYPE_XNOR,
	LEXER_TOKEN_TYPE_IN,
	LEXER_TOKEN_TYPE_NUMBER,
	LEXER_TOKEN_TYPE_SUP_NUMBER,
	LEXER_TOKEN_TYPE_NSUP_NUMBER,
	LEXER_TOKEN_TYPE_SUB_NUMBER,
	LEXER_TOKEN_TYPE_FUNCTION,
	LEXER_TOKEN_TYPE_UNIT,
	LEXER_TOKEN_TYPE_CURRENCY,
	LEXER_TOKEN_TYPE_VARIABLE,
	LEXER_TOKEN_TYPE_SHIFT_LEFT,
	LEXER_TOKEN_TYPE_SHIFT_RIGHT,
	LEXER_TOKEN_TYPE_SHIFT_URIGHT,
	LEXER_TOKEN_TYPE_ASSIGN,
	LEXER_TOKEN_TYPE_L_R_BRACKET,
	LEXER_TOKEN_TYPE_R_R_BRACKET,
	LEXER_TOKEN_TYPE_L_S_BRACKET,
	LEXER_TOKEN_TYPE_R_S_BRACKET,
	LEXER_TOKEN_TYPE_L_C_BRACKET,
	LEXER_TOKEN_TYPE_R_C_BRACKET,
	LEXER_TOKEN_TYPE_ABS,
	LEXER_TOKEN_TYPE_POWER,
	LEXER_TOKEN_TYPE_FACTORIAL,
	LEXER_TOKEN_TYPE_PERCENTAGE,
	LEXER_TOKEN_TYPE_ARGUMENT_SEPARATOR,
	LEXER_TOKEN_TYPE_FUNC_DESC_SEPARATOR
} LexerTokenType;

#define TYPE_LEXER_TOKEN_TYPE (lexer_token_type_get_type ())

#define TYPE_PRE_LEXER (pre_lexer_get_type ())
#define PRE_LEXER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PRE_LEXER, PreLexer))
#define PRE_LEXER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PRE_LEXER, PreLexerClass))
#define IS_PRE_LEXER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PRE_LEXER))
#define IS_PRE_LEXER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PRE_LEXER))
#define PRE_LEXER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PRE_LEXER, PreLexerClass))

typedef struct _PreLexer PreLexer;
typedef struct _PreLexerClass PreLexerClass;
typedef struct _PreLexerPrivate PreLexerPrivate;

#define TYPE_LEXER_TOKEN (lexer_token_get_type ())
#define LEXER_TOKEN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LEXER_TOKEN, LexerToken))
#define LEXER_TOKEN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LEXER_TOKEN, LexerTokenClass))
#define IS_LEXER_TOKEN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LEXER_TOKEN))
#define IS_LEXER_TOKEN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LEXER_TOKEN))
#define LEXER_TOKEN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LEXER_TOKEN, LexerTokenClass))

typedef struct _LexerToken LexerToken;
typedef struct _LexerTokenClass LexerTokenClass;
typedef struct _LexerTokenPrivate LexerTokenPrivate;

#define TYPE_LEXER (lexer_get_type ())
#define LEXER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LEXER, Lexer))
#define LEXER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LEXER, LexerClass))
#define IS_LEXER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LEXER))
#define IS_LEXER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LEXER))
#define LEXER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LEXER, LexerClass))

typedef struct _Lexer Lexer;
typedef struct _LexerClass LexerClass;
typedef struct _LexerPrivate LexerPrivate;

#define TYPE_PARSER (parser_get_type ())
#define PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PARSER, Parser))
#define PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PARSER, ParserClass))
#define IS_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PARSER))
#define IS_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PARSER))
#define PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PARSER, ParserClass))

typedef struct _Parser Parser;
typedef struct _ParserClass ParserClass;
typedef enum  {
	ASSOCIATIVITY_LEFT,
	ASSOCIATIVITY_RIGHT
} Associativity;

#define TYPE_ASSOCIATIVITY (associativity_get_type ())

#define TYPE_CONSTANT_CATEGORY (constant_category_get_type ())
typedef struct _ConstantCategory ConstantCategory;

#define TYPE_CONSTANT (constant_get_type ())
typedef struct _Constant Constant;

#define TYPE_PARSE_NODE (parse_node_get_type ())
#define PARSE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PARSE_NODE, ParseNode))
#define PARSE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PARSE_NODE, ParseNodeClass))
#define IS_PARSE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PARSE_NODE))
#define IS_PARSE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PARSE_NODE))
#define PARSE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PARSE_NODE, ParseNodeClass))

typedef struct _ParseNode ParseNode;
typedef struct _ParseNodeClass ParseNodeClass;
typedef struct _ParseNodePrivate ParseNodePrivate;

#define TYPE_RNODE (rnode_get_type ())
#define RNODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RNODE, RNode))
#define RNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RNODE, RNodeClass))
#define IS_RNODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RNODE))
#define IS_RNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RNODE))
#define RNODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RNODE, RNodeClass))

typedef struct _RNode RNode;
typedef struct _RNodeClass RNodeClass;
typedef struct _RNodePrivate RNodePrivate;

#define TYPE_LR_NODE (lr_node_get_type ())
#define LR_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LR_NODE, LRNode))
#define LR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LR_NODE, LRNodeClass))
#define IS_LR_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LR_NODE))
#define IS_LR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LR_NODE))
#define LR_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LR_NODE, LRNodeClass))

typedef struct _LRNode LRNode;
typedef struct _LRNodeClass LRNodeClass;
typedef struct _LRNodePrivate LRNodePrivate;

#define TYPE_CONSTANT_NODE (constant_node_get_type ())
#define CONSTANT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONSTANT_NODE, ConstantNode))
#define CONSTANT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONSTANT_NODE, ConstantNodeClass))
#define IS_CONSTANT_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONSTANT_NODE))
#define IS_CONSTANT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONSTANT_NODE))
#define CONSTANT_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONSTANT_NODE, ConstantNodeClass))

typedef struct _ConstantNode ConstantNode;
typedef struct _ConstantNodeClass ConstantNodeClass;
typedef struct _ConstantNodePrivate ConstantNodePrivate;

#define TYPE_ASSIGN_NODE (assign_node_get_type ())
#define ASSIGN_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ASSIGN_NODE, AssignNode))
#define ASSIGN_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ASSIGN_NODE, AssignNodeClass))
#define IS_ASSIGN_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ASSIGN_NODE))
#define IS_ASSIGN_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ASSIGN_NODE))
#define ASSIGN_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ASSIGN_NODE, AssignNodeClass))

typedef struct _AssignNode AssignNode;
typedef struct _AssignNodeClass AssignNodeClass;
typedef struct _AssignNodePrivate AssignNodePrivate;

#define TYPE_ASSIGN_FUNCTION_NODE (assign_function_node_get_type ())
#define ASSIGN_FUNCTION_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ASSIGN_FUNCTION_NODE, AssignFunctionNode))
#define ASSIGN_FUNCTION_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ASSIGN_FUNCTION_NODE, AssignFunctionNodeClass))
#define IS_ASSIGN_FUNCTION_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ASSIGN_FUNCTION_NODE))
#define IS_ASSIGN_FUNCTION_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ASSIGN_FUNCTION_NODE))
#define ASSIGN_FUNCTION_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ASSIGN_FUNCTION_NODE, AssignFunctionNodeClass))

typedef struct _AssignFunctionNode AssignFunctionNode;
typedef struct _AssignFunctionNodeClass AssignFunctionNodeClass;
typedef struct _AssignFunctionNodePrivate AssignFunctionNodePrivate;

#define TYPE_NAME_NODE (name_node_get_type ())
#define NAME_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NAME_NODE, NameNode))
#define NAME_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NAME_NODE, NameNodeClass))
#define IS_NAME_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NAME_NODE))
#define IS_NAME_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NAME_NODE))
#define NAME_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NAME_NODE, NameNodeClass))

typedef struct _NameNode NameNode;
typedef struct _NameNodeClass NameNodeClass;
typedef struct _NameNodePrivate NameNodePrivate;

#define TYPE_VARIABLE_NODE (variable_node_get_type ())
#define VARIABLE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VARIABLE_NODE, VariableNode))
#define VARIABLE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VARIABLE_NODE, VariableNodeClass))
#define IS_VARIABLE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VARIABLE_NODE))
#define IS_VARIABLE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VARIABLE_NODE))
#define VARIABLE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VARIABLE_NODE, VariableNodeClass))

typedef struct _VariableNode VariableNode;
typedef struct _VariableNodeClass VariableNodeClass;
typedef struct _VariableNodePrivate VariableNodePrivate;

#define TYPE_VARIABLE_WITH_POWER_NODE (variable_with_power_node_get_type ())
#define VARIABLE_WITH_POWER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VARIABLE_WITH_POWER_NODE, VariableWithPowerNode))
#define VARIABLE_WITH_POWER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VARIABLE_WITH_POWER_NODE, VariableWithPowerNodeClass))
#define IS_VARIABLE_WITH_POWER_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VARIABLE_WITH_POWER_NODE))
#define IS_VARIABLE_WITH_POWER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VARIABLE_WITH_POWER_NODE))
#define VARIABLE_WITH_POWER_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VARIABLE_WITH_POWER_NODE, VariableWithPowerNodeClass))

typedef struct _VariableWithPowerNode VariableWithPowerNode;
typedef struct _VariableWithPowerNodeClass VariableWithPowerNodeClass;
typedef struct _VariableWithPowerNodePrivate VariableWithPowerNodePrivate;

#define TYPE_FUNCTION_NAME_NODE (function_name_node_get_type ())
#define FUNCTION_NAME_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FUNCTION_NAME_NODE, FunctionNameNode))
#define FUNCTION_NAME_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FUNCTION_NAME_NODE, FunctionNameNodeClass))
#define IS_FUNCTION_NAME_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FUNCTION_NAME_NODE))
#define IS_FUNCTION_NAME_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FUNCTION_NAME_NODE))
#define FUNCTION_NAME_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FUNCTION_NAME_NODE, FunctionNameNodeClass))

typedef struct _FunctionNameNode FunctionNameNode;
typedef struct _FunctionNameNodeClass FunctionNameNodeClass;
typedef struct _FunctionNameNodePrivate FunctionNameNodePrivate;

#define TYPE_FUNCTION_ARGUMENTS_NODE (function_arguments_node_get_type ())
#define FUNCTION_ARGUMENTS_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FUNCTION_ARGUMENTS_NODE, FunctionArgumentsNode))
#define FUNCTION_ARGUMENTS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FUNCTION_ARGUMENTS_NODE, FunctionArgumentsNodeClass))
#define IS_FUNCTION_ARGUMENTS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FUNCTION_ARGUMENTS_NODE))
#define IS_FUNCTION_ARGUMENTS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FUNCTION_ARGUMENTS_NODE))
#define FUNCTION_ARGUMENTS_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FUNCTION_ARGUMENTS_NODE, FunctionArgumentsNodeClass))

typedef struct _FunctionArgumentsNode FunctionArgumentsNode;
typedef struct _FunctionArgumentsNodeClass FunctionArgumentsNodeClass;
typedef struct _FunctionArgumentsNodePrivate FunctionArgumentsNodePrivate;

#define TYPE_FUNCTION_DESCRIPTION_NODE (function_description_node_get_type ())
#define FUNCTION_DESCRIPTION_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FUNCTION_DESCRIPTION_NODE, FunctionDescriptionNode))
#define FUNCTION_DESCRIPTION_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FUNCTION_DESCRIPTION_NODE, FunctionDescriptionNodeClass))
#define IS_FUNCTION_DESCRIPTION_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FUNCTION_DESCRIPTION_NODE))
#define IS_FUNCTION_DESCRIPTION_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FUNCTION_DESCRIPTION_NODE))
#define FUNCTION_DESCRIPTION_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FUNCTION_DESCRIPTION_NODE, FunctionDescriptionNodeClass))

typedef struct _FunctionDescriptionNode FunctionDescriptionNode;
typedef struct _FunctionDescriptionNodeClass FunctionDescriptionNodeClass;
typedef struct _FunctionDescriptionNodePrivate FunctionDescriptionNodePrivate;

#define TYPE_FUNCTION_NODE (function_node_get_type ())
#define FUNCTION_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FUNCTION_NODE, FunctionNode))
#define FUNCTION_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FUNCTION_NODE, FunctionNodeClass))
#define IS_FUNCTION_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FUNCTION_NODE))
#define IS_FUNCTION_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FUNCTION_NODE))
#define FUNCTION_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FUNCTION_NODE, FunctionNodeClass))

typedef struct _FunctionNode FunctionNode;
typedef struct _FunctionNodeClass FunctionNodeClass;
typedef struct _FunctionNodePrivate FunctionNodePrivate;

#define TYPE_UNARY_MINUS_NODE (unary_minus_node_get_type ())
#define UNARY_MINUS_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNARY_MINUS_NODE, UnaryMinusNode))
#define UNARY_MINUS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNARY_MINUS_NODE, UnaryMinusNodeClass))
#define IS_UNARY_MINUS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNARY_MINUS_NODE))
#define IS_UNARY_MINUS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNARY_MINUS_NODE))
#define UNARY_MINUS_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNARY_MINUS_NODE, UnaryMinusNodeClass))

typedef struct _UnaryMinusNode UnaryMinusNode;
typedef struct _UnaryMinusNodeClass UnaryMinusNodeClass;
typedef struct _UnaryMinusNodePrivate UnaryMinusNodePrivate;

#define TYPE_ABSOLUTE_VALUE_NODE (absolute_value_node_get_type ())
#define ABSOLUTE_VALUE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ABSOLUTE_VALUE_NODE, AbsoluteValueNode))
#define ABSOLUTE_VALUE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ABSOLUTE_VALUE_NODE, AbsoluteValueNodeClass))
#define IS_ABSOLUTE_VALUE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ABSOLUTE_VALUE_NODE))
#define IS_ABSOLUTE_VALUE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ABSOLUTE_VALUE_NODE))
#define ABSOLUTE_VALUE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ABSOLUTE_VALUE_NODE, AbsoluteValueNodeClass))

typedef struct _AbsoluteValueNode AbsoluteValueNode;
typedef struct _AbsoluteValueNodeClass AbsoluteValueNodeClass;
typedef struct _AbsoluteValueNodePrivate AbsoluteValueNodePrivate;

#define TYPE_FLOOR_NODE (floor_node_get_type ())
#define FLOOR_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FLOOR_NODE, FloorNode))
#define FLOOR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FLOOR_NODE, FloorNodeClass))
#define IS_FLOOR_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FLOOR_NODE))
#define IS_FLOOR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FLOOR_NODE))
#define FLOOR_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FLOOR_NODE, FloorNodeClass))

typedef struct _FloorNode FloorNode;
typedef struct _FloorNodeClass FloorNodeClass;
typedef struct _FloorNodePrivate FloorNodePrivate;

#define TYPE_CEILING_NODE (ceiling_node_get_type ())
#define CEILING_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CEILING_NODE, CeilingNode))
#define CEILING_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CEILING_NODE, CeilingNodeClass))
#define IS_CEILING_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CEILING_NODE))
#define IS_CEILING_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CEILING_NODE))
#define CEILING_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CEILING_NODE, CeilingNodeClass))

typedef struct _CeilingNode CeilingNode;
typedef struct _CeilingNodeClass CeilingNodeClass;
typedef struct _CeilingNodePrivate CeilingNodePrivate;

#define TYPE_FRACTIONAL_COMPONENT_NODE (fractional_component_node_get_type ())
#define FRACTIONAL_COMPONENT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FRACTIONAL_COMPONENT_NODE, FractionalComponentNode))
#define FRACTIONAL_COMPONENT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FRACTIONAL_COMPONENT_NODE, FractionalComponentNodeClass))
#define IS_FRACTIONAL_COMPONENT_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FRACTIONAL_COMPONENT_NODE))
#define IS_FRACTIONAL_COMPONENT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FRACTIONAL_COMPONENT_NODE))
#define FRACTIONAL_COMPONENT_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FRACTIONAL_COMPONENT_NODE, FractionalComponentNodeClass))

typedef struct _FractionalComponentNode FractionalComponentNode;
typedef struct _FractionalComponentNodeClass FractionalComponentNodeClass;
typedef struct _FractionalComponentNodePrivate FractionalComponentNodePrivate;

#define TYPE_ROUND_NODE (round_node_get_type ())
#define ROUND_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ROUND_NODE, RoundNode))
#define ROUND_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ROUND_NODE, RoundNodeClass))
#define IS_ROUND_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ROUND_NODE))
#define IS_ROUND_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ROUND_NODE))
#define ROUND_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ROUND_NODE, RoundNodeClass))

typedef struct _RoundNode RoundNode;
typedef struct _RoundNodeClass RoundNodeClass;
typedef struct _RoundNodePrivate RoundNodePrivate;

#define TYPE_PERCENT_NODE (percent_node_get_type ())
#define PERCENT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PERCENT_NODE, PercentNode))
#define PERCENT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PERCENT_NODE, PercentNodeClass))
#define IS_PERCENT_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PERCENT_NODE))
#define IS_PERCENT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PERCENT_NODE))
#define PERCENT_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PERCENT_NODE, PercentNodeClass))

typedef struct _PercentNode PercentNode;
typedef struct _PercentNodeClass PercentNodeClass;
typedef struct _PercentNodePrivate PercentNodePrivate;

#define TYPE_FACTORIAL_NODE (factorial_node_get_type ())
#define FACTORIAL_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FACTORIAL_NODE, FactorialNode))
#define FACTORIAL_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FACTORIAL_NODE, FactorialNodeClass))
#define IS_FACTORIAL_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FACTORIAL_NODE))
#define IS_FACTORIAL_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FACTORIAL_NODE))
#define FACTORIAL_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FACTORIAL_NODE, FactorialNodeClass))

typedef struct _FactorialNode FactorialNode;
typedef struct _FactorialNodeClass FactorialNodeClass;
typedef struct _FactorialNodePrivate FactorialNodePrivate;

#define TYPE_ADD_NODE (add_node_get_type ())
#define ADD_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_NODE, AddNode))
#define ADD_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_NODE, AddNodeClass))
#define IS_ADD_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_NODE))
#define IS_ADD_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_NODE))
#define ADD_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_NODE, AddNodeClass))

typedef struct _AddNode AddNode;
typedef struct _AddNodeClass AddNodeClass;
typedef struct _AddNodePrivate AddNodePrivate;

#define TYPE_SUBTRACT_NODE (subtract_node_get_type ())
#define SUBTRACT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SUBTRACT_NODE, SubtractNode))
#define SUBTRACT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SUBTRACT_NODE, SubtractNodeClass))
#define IS_SUBTRACT_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SUBTRACT_NODE))
#define IS_SUBTRACT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SUBTRACT_NODE))
#define SUBTRACT_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SUBTRACT_NODE, SubtractNodeClass))

typedef struct _SubtractNode SubtractNode;
typedef struct _SubtractNodeClass SubtractNodeClass;
typedef struct _SubtractNodePrivate SubtractNodePrivate;

#define TYPE_MULTIPLY_NODE (multiply_node_get_type ())
#define MULTIPLY_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTIPLY_NODE, MultiplyNode))
#define MULTIPLY_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MULTIPLY_NODE, MultiplyNodeClass))
#define IS_MULTIPLY_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTIPLY_NODE))
#define IS_MULTIPLY_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MULTIPLY_NODE))
#define MULTIPLY_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MULTIPLY_NODE, MultiplyNodeClass))

typedef struct _MultiplyNode MultiplyNode;
typedef struct _MultiplyNodeClass MultiplyNodeClass;
typedef struct _MultiplyNodePrivate MultiplyNodePrivate;

#define TYPE_SHIFT_NODE (shift_node_get_type ())
#define SHIFT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SHIFT_NODE, ShiftNode))
#define SHIFT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SHIFT_NODE, ShiftNodeClass))
#define IS_SHIFT_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SHIFT_NODE))
#define IS_SHIFT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SHIFT_NODE))
#define SHIFT_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SHIFT_NODE, ShiftNodeClass))

typedef struct _ShiftNode ShiftNode;
typedef struct _ShiftNodeClass ShiftNodeClass;
typedef struct _ShiftNodePrivate ShiftNodePrivate;

#define TYPE_DIVIDE_NODE (divide_node_get_type ())
#define DIVIDE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DIVIDE_NODE, DivideNode))
#define DIVIDE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DIVIDE_NODE, DivideNodeClass))
#define IS_DIVIDE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DIVIDE_NODE))
#define IS_DIVIDE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DIVIDE_NODE))
#define DIVIDE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DIVIDE_NODE, DivideNodeClass))

typedef struct _DivideNode DivideNode;
typedef struct _DivideNodeClass DivideNodeClass;
typedef struct _DivideNodePrivate DivideNodePrivate;

#define TYPE_MODULUS_DIVIDE_NODE (modulus_divide_node_get_type ())
#define MODULUS_DIVIDE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MODULUS_DIVIDE_NODE, ModulusDivideNode))
#define MODULUS_DIVIDE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MODULUS_DIVIDE_NODE, ModulusDivideNodeClass))
#define IS_MODULUS_DIVIDE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MODULUS_DIVIDE_NODE))
#define IS_MODULUS_DIVIDE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MODULUS_DIVIDE_NODE))
#define MODULUS_DIVIDE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MODULUS_DIVIDE_NODE, ModulusDivideNodeClass))

typedef struct _ModulusDivideNode ModulusDivideNode;
typedef struct _ModulusDivideNodeClass ModulusDivideNodeClass;
typedef struct _ModulusDivideNodePrivate ModulusDivideNodePrivate;

#define TYPE_ROOT_NODE (root_node_get_type ())
#define ROOT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ROOT_NODE, RootNode))
#define ROOT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ROOT_NODE, RootNodeClass))
#define IS_ROOT_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ROOT_NODE))
#define IS_ROOT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ROOT_NODE))
#define ROOT_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ROOT_NODE, RootNodeClass))

typedef struct _RootNode RootNode;
typedef struct _RootNodeClass RootNodeClass;
typedef struct _RootNodePrivate RootNodePrivate;

#define TYPE_XPOW_YNODE (xpow_ynode_get_type ())
#define XPOW_YNODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_XPOW_YNODE, XPowYNode))
#define XPOW_YNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_XPOW_YNODE, XPowYNodeClass))
#define IS_XPOW_YNODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_XPOW_YNODE))
#define IS_XPOW_YNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_XPOW_YNODE))
#define XPOW_YNODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_XPOW_YNODE, XPowYNodeClass))

typedef struct _XPowYNode XPowYNode;
typedef struct _XPowYNodeClass XPowYNodeClass;
typedef struct _XPowYNodePrivate XPowYNodePrivate;

#define TYPE_XPOW_YINTEGER_NODE (xpow_yinteger_node_get_type ())
#define XPOW_YINTEGER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_XPOW_YINTEGER_NODE, XPowYIntegerNode))
#define XPOW_YINTEGER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_XPOW_YINTEGER_NODE, XPowYIntegerNodeClass))
#define IS_XPOW_YINTEGER_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_XPOW_YINTEGER_NODE))
#define IS_XPOW_YINTEGER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_XPOW_YINTEGER_NODE))
#define XPOW_YINTEGER_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_XPOW_YINTEGER_NODE, XPowYIntegerNodeClass))

typedef struct _XPowYIntegerNode XPowYIntegerNode;
typedef struct _XPowYIntegerNodeClass XPowYIntegerNodeClass;
typedef struct _XPowYIntegerNodePrivate XPowYIntegerNodePrivate;

#define TYPE_NOT_NODE (not_node_get_type ())
#define NOT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NOT_NODE, NotNode))
#define NOT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NOT_NODE, NotNodeClass))
#define IS_NOT_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NOT_NODE))
#define IS_NOT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NOT_NODE))
#define NOT_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NOT_NODE, NotNodeClass))

typedef struct _NotNode NotNode;
typedef struct _NotNodeClass NotNodeClass;
typedef struct _NotNodePrivate NotNodePrivate;

#define TYPE_AND_NODE (and_node_get_type ())
#define AND_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_AND_NODE, AndNode))
#define AND_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_AND_NODE, AndNodeClass))
#define IS_AND_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_AND_NODE))
#define IS_AND_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_AND_NODE))
#define AND_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_AND_NODE, AndNodeClass))

typedef struct _AndNode AndNode;
typedef struct _AndNodeClass AndNodeClass;
typedef struct _AndNodePrivate AndNodePrivate;

#define TYPE_NAND_NODE (nand_node_get_type ())
#define NAND_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NAND_NODE, NandNode))
#define NAND_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NAND_NODE, NandNodeClass))
#define IS_NAND_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NAND_NODE))
#define IS_NAND_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NAND_NODE))
#define NAND_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NAND_NODE, NandNodeClass))

typedef struct _NandNode NandNode;
typedef struct _NandNodeClass NandNodeClass;
typedef struct _NandNodePrivate NandNodePrivate;

#define TYPE_OR_NODE (or_node_get_type ())
#define OR_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_OR_NODE, OrNode))
#define OR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_OR_NODE, OrNodeClass))
#define IS_OR_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_OR_NODE))
#define IS_OR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_OR_NODE))
#define OR_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_OR_NODE, OrNodeClass))

typedef struct _OrNode OrNode;
typedef struct _OrNodeClass OrNodeClass;
typedef struct _OrNodePrivate OrNodePrivate;

#define TYPE_NOR_NODE (nor_node_get_type ())
#define NOR_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NOR_NODE, NorNode))
#define NOR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NOR_NODE, NorNodeClass))
#define IS_NOR_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NOR_NODE))
#define IS_NOR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NOR_NODE))
#define NOR_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NOR_NODE, NorNodeClass))

typedef struct _NorNode NorNode;
typedef struct _NorNodeClass NorNodeClass;
typedef struct _NorNodePrivate NorNodePrivate;

#define TYPE_XOR_NODE (xor_node_get_type ())
#define XOR_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_XOR_NODE, XorNode))
#define XOR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_XOR_NODE, XorNodeClass))
#define IS_XOR_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_XOR_NODE))
#define IS_XOR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_XOR_NODE))
#define XOR_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_XOR_NODE, XorNodeClass))

typedef struct _XorNode XorNode;
typedef struct _XorNodeClass XorNodeClass;
typedef struct _XorNodePrivate XorNodePrivate;

#define TYPE_XNOR_NODE (xnor_node_get_type ())
#define XNOR_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_XNOR_NODE, XnorNode))
#define XNOR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_XNOR_NODE, XnorNodeClass))
#define IS_XNOR_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_XNOR_NODE))
#define IS_XNOR_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_XNOR_NODE))
#define XNOR_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_XNOR_NODE, XnorNodeClass))

typedef struct _XnorNode XnorNode;
typedef struct _XnorNodeClass XnorNodeClass;
typedef struct _XnorNodePrivate XnorNodePrivate;

#define TYPE_CONVERT_NODE (convert_node_get_type ())
#define CONVERT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONVERT_NODE, ConvertNode))
#define CONVERT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONVERT_NODE, ConvertNodeClass))
#define IS_CONVERT_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONVERT_NODE))
#define IS_CONVERT_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONVERT_NODE))
#define CONVERT_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONVERT_NODE, ConvertNodeClass))

typedef struct _ConvertNode ConvertNode;
typedef struct _ConvertNodeClass ConvertNodeClass;
typedef struct _ConvertNodePrivate ConvertNodePrivate;

#define TYPE_CONVERT_BASE_NODE (convert_base_node_get_type ())
#define CONVERT_BASE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONVERT_BASE_NODE, ConvertBaseNode))
#define CONVERT_BASE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONVERT_BASE_NODE, ConvertBaseNodeClass))
#define IS_CONVERT_BASE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONVERT_BASE_NODE))
#define IS_CONVERT_BASE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONVERT_BASE_NODE))
#define CONVERT_BASE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONVERT_BASE_NODE, ConvertBaseNodeClass))

typedef struct _ConvertBaseNode ConvertBaseNode;
typedef struct _ConvertBaseNodeClass ConvertBaseNodeClass;
typedef struct _ConvertBaseNodePrivate ConvertBaseNodePrivate;

#define TYPE_CONVERT_NUMBER_NODE (convert_number_node_get_type ())
#define CONVERT_NUMBER_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONVERT_NUMBER_NODE, ConvertNumberNode))
#define CONVERT_NUMBER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONVERT_NUMBER_NODE, ConvertNumberNodeClass))
#define IS_CONVERT_NUMBER_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONVERT_NUMBER_NODE))
#define IS_CONVERT_NUMBER_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONVERT_NUMBER_NODE))
#define CONVERT_NUMBER_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONVERT_NUMBER_NODE, ConvertNumberNodeClass))

typedef struct _ConvertNumberNode ConvertNumberNode;
typedef struct _ConvertNumberNodeClass ConvertNumberNodeClass;
typedef struct _ConvertNumberNodePrivate ConvertNumberNodePrivate;
typedef struct _ParserPrivate ParserPrivate;
typedef enum  {
	FINANCIAL_DIALOG_CTRM_DIALOG,
	FINANCIAL_DIALOG_DDB_DIALOG,
	FINANCIAL_DIALOG_FV_DIALOG,
	FINANCIAL_DIALOG_GPM_DIALOG,
	FINANCIAL_DIALOG_PMT_DIALOG,
	FINANCIAL_DIALOG_PV_DIALOG,
	FINANCIAL_DIALOG_RATE_DIALOG,
	FINANCIAL_DIALOG_SLN_DIALOG,
	FINANCIAL_DIALOG_SYD_DIALOG,
	FINANCIAL_DIALOG_TERM_DIALOG
} FinancialDialog;

#define TYPE_FINANCIAL_DIALOG (financial_dialog_get_type ())

#define TYPE_MATH_EQUATION (math_equation_get_type ())
#define MATH_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MATH_EQUATION, MathEquation))
#define MATH_EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MATH_EQUATION, MathEquationClass))
#define IS_MATH_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MATH_EQUATION))
#define IS_MATH_EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MATH_EQUATION))
#define MATH_EQUATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MATH_EQUATION, MathEquationClass))

typedef struct _MathEquation MathEquation;
typedef struct _MathEquationClass MathEquationClass;

#define TYPE_FUNCTION_CATEGORY (function_category_get_type ())
typedef struct _FunctionCategory FunctionCategory;

#define TYPE_MATH_FUNCTION (math_function_get_type ())
#define MATH_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MATH_FUNCTION, MathFunction))
#define MATH_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MATH_FUNCTION, MathFunctionClass))
#define IS_MATH_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MATH_FUNCTION))
#define IS_MATH_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MATH_FUNCTION))
#define MATH_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MATH_FUNCTION, MathFunctionClass))

typedef struct _MathFunction MathFunction;
typedef struct _MathFunctionClass MathFunctionClass;

#define TYPE_FUNCTION_MANAGER (function_manager_get_type ())
#define FUNCTION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FUNCTION_MANAGER, FunctionManager))
#define FUNCTION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FUNCTION_MANAGER, FunctionManagerClass))
#define IS_FUNCTION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FUNCTION_MANAGER))
#define IS_FUNCTION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FUNCTION_MANAGER))
#define FUNCTION_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FUNCTION_MANAGER, FunctionManagerClass))

typedef struct _FunctionManager FunctionManager;
typedef struct _FunctionManagerClass FunctionManagerClass;
typedef struct _FunctionManagerPrivate FunctionManagerPrivate;
typedef enum  {
	NUMBER_MODE_NORMAL,
	NUMBER_MODE_SUPERSCRIPT,
	NUMBER_MODE_SUBSCRIPT
} NumberMode;

#define TYPE_NUMBER_MODE (number_mode_get_type ())
typedef enum  {
	CURSOR_GRAVITY_BEFORE,
	CURSOR_GRAVITY_START,
	CURSOR_GRAVITY_END,
	CURSOR_GRAVITY_AFTER
} CursorGravity;

#define TYPE_CURSOR_GRAVITY (cursor_gravity_get_type ())
typedef struct _MathEquationPrivate MathEquationPrivate;

#define TYPE_MATH_VARIABLES (math_variables_get_type ())
#define MATH_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MATH_VARIABLES, MathVariables))
#define MATH_VARIABLES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MATH_VARIABLES, MathVariablesClass))
#define IS_MATH_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MATH_VARIABLES))
#define IS_MATH_VARIABLES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MATH_VARIABLES))
#define MATH_VARIABLES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MATH_VARIABLES, MathVariablesClass))

typedef struct _MathVariables MathVariables;
typedef struct _MathVariablesClass MathVariablesClass;

#define TYPE_SERIALIZER (serializer_get_type ())
#define SERIALIZER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SERIALIZER, Serializer))
#define SERIALIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SERIALIZER, SerializerClass))
#define IS_SERIALIZER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SERIALIZER))
#define IS_SERIALIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SERIALIZER))
#define SERIALIZER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SERIALIZER, SerializerClass))

typedef struct _Serializer Serializer;
typedef struct _SerializerClass SerializerClass;
typedef enum  {
	DISPLAY_FORMAT_AUTOMATIC,
	DISPLAY_FORMAT_FIXED,
	DISPLAY_FORMAT_SCIENTIFIC,
	DISPLAY_FORMAT_ENGINEERING
} DisplayFormat;

#define TYPE_DISPLAY_FORMAT (display_format_get_type ())
typedef struct _MathFunctionPrivate MathFunctionPrivate;

#define TYPE_EXPRESSION_PARSER (expression_parser_get_type ())
#define EXPRESSION_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EXPRESSION_PARSER, ExpressionParser))
#define EXPRESSION_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EXPRESSION_PARSER, ExpressionParserClass))
#define IS_EXPRESSION_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EXPRESSION_PARSER))
#define IS_EXPRESSION_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EXPRESSION_PARSER))
#define EXPRESSION_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EXPRESSION_PARSER, ExpressionParserClass))

typedef struct _ExpressionParser ExpressionParser;
typedef struct _ExpressionParserClass ExpressionParserClass;
typedef struct _ExpressionParserPrivate ExpressionParserPrivate;

#define TYPE_BUILT_IN_MATH_FUNCTION (built_in_math_function_get_type ())
#define BUILT_IN_MATH_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_BUILT_IN_MATH_FUNCTION, BuiltInMathFunction))
#define BUILT_IN_MATH_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_BUILT_IN_MATH_FUNCTION, BuiltInMathFunctionClass))
#define IS_BUILT_IN_MATH_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_BUILT_IN_MATH_FUNCTION))
#define IS_BUILT_IN_MATH_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_BUILT_IN_MATH_FUNCTION))
#define BUILT_IN_MATH_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_BUILT_IN_MATH_FUNCTION, BuiltInMathFunctionClass))

typedef struct _BuiltInMathFunction BuiltInMathFunction;
typedef struct _BuiltInMathFunctionClass BuiltInMathFunctionClass;
typedef struct _BuiltInMathFunctionPrivate BuiltInMathFunctionPrivate;
typedef struct _MathVariablesPrivate MathVariablesPrivate;
typedef struct _NumberPrivate NumberPrivate;
typedef struct _SerializerPrivate SerializerPrivate;

#define TYPE_UNIT_MANAGER (unit_manager_get_type ())
#define UNIT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNIT_MANAGER, UnitManager))
#define UNIT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNIT_MANAGER, UnitManagerClass))
#define IS_UNIT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNIT_MANAGER))
#define IS_UNIT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNIT_MANAGER))
#define UNIT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNIT_MANAGER, UnitManagerClass))

typedef struct _UnitManager UnitManager;
typedef struct _UnitManagerClass UnitManagerClass;
typedef struct _UnitManagerPrivate UnitManagerPrivate;

#define TYPE_UNIT_CATEGORY (unit_category_get_type ())
#define UNIT_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNIT_CATEGORY, UnitCategory))
#define UNIT_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNIT_CATEGORY, UnitCategoryClass))
#define IS_UNIT_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNIT_CATEGORY))
#define IS_UNIT_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNIT_CATEGORY))
#define UNIT_CATEGORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNIT_CATEGORY, UnitCategoryClass))

typedef struct _UnitCategory UnitCategory;
typedef struct _UnitCategoryClass UnitCategoryClass;
typedef struct _UnitCategoryPrivate UnitCategoryPrivate;
typedef struct _UnitPrivate UnitPrivate;

#define TYPE_IMF_CURRENCY_PROVIDER (imf_currency_provider_get_type ())
#define IMF_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IMF_CURRENCY_PROVIDER, ImfCurrencyProvider))
#define IMF_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IMF_CURRENCY_PROVIDER, ImfCurrencyProviderClass))
#define IS_IMF_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IMF_CURRENCY_PROVIDER))
#define IS_IMF_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IMF_CURRENCY_PROVIDER))
#define IMF_CURRENCY_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IMF_CURRENCY_PROVIDER, ImfCurrencyProviderClass))

typedef struct _ImfCurrencyProvider ImfCurrencyProvider;
typedef struct _ImfCurrencyProviderClass ImfCurrencyProviderClass;
typedef struct _ImfCurrencyProviderPrivate ImfCurrencyProviderPrivate;

#define TYPE_OFFLINE_IMF_CURRENCY_PROVIDER (offline_imf_currency_provider_get_type ())
#define OFFLINE_IMF_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_OFFLINE_IMF_CURRENCY_PROVIDER, OfflineImfCurrencyProvider))
#define OFFLINE_IMF_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_OFFLINE_IMF_CURRENCY_PROVIDER, OfflineImfCurrencyProviderClass))
#define IS_OFFLINE_IMF_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_OFFLINE_IMF_CURRENCY_PROVIDER))
#define IS_OFFLINE_IMF_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_OFFLINE_IMF_CURRENCY_PROVIDER))
#define OFFLINE_IMF_CURRENCY_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_OFFLINE_IMF_CURRENCY_PROVIDER, OfflineImfCurrencyProviderClass))

typedef struct _OfflineImfCurrencyProvider OfflineImfCurrencyProvider;
typedef struct _OfflineImfCurrencyProviderClass OfflineImfCurrencyProviderClass;
typedef struct _OfflineImfCurrencyProviderPrivate OfflineImfCurrencyProviderPrivate;

#define TYPE_ECB_CURRENCY_PROVIDER (ecb_currency_provider_get_type ())
#define ECB_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ECB_CURRENCY_PROVIDER, EcbCurrencyProvider))
#define ECB_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ECB_CURRENCY_PROVIDER, EcbCurrencyProviderClass))
#define IS_ECB_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ECB_CURRENCY_PROVIDER))
#define IS_ECB_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ECB_CURRENCY_PROVIDER))
#define ECB_CURRENCY_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ECB_CURRENCY_PROVIDER, EcbCurrencyProviderClass))

typedef struct _EcbCurrencyProvider EcbCurrencyProvider;
typedef struct _EcbCurrencyProviderClass EcbCurrencyProviderClass;
typedef struct _EcbCurrencyProviderPrivate EcbCurrencyProviderPrivate;

#define TYPE_UN_CURRENCY_PROVIDER (un_currency_provider_get_type ())
#define UN_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UN_CURRENCY_PROVIDER, UnCurrencyProvider))
#define UN_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UN_CURRENCY_PROVIDER, UnCurrencyProviderClass))
#define IS_UN_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UN_CURRENCY_PROVIDER))
#define IS_UN_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UN_CURRENCY_PROVIDER))
#define UN_CURRENCY_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UN_CURRENCY_PROVIDER, UnCurrencyProviderClass))

typedef struct _UnCurrencyProvider UnCurrencyProvider;
typedef struct _UnCurrencyProviderClass UnCurrencyProviderClass;
typedef struct _UnCurrencyProviderPrivate UnCurrencyProviderPrivate;

#define TYPE_BC_CURRENCY_PROVIDER (bc_currency_provider_get_type ())
#define BC_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_BC_CURRENCY_PROVIDER, BCCurrencyProvider))
#define BC_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_BC_CURRENCY_PROVIDER, BCCurrencyProviderClass))
#define IS_BC_CURRENCY_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_BC_CURRENCY_PROVIDER))
#define IS_BC_CURRENCY_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_BC_CURRENCY_PROVIDER))
#define BC_CURRENCY_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_BC_CURRENCY_PROVIDER, BCCurrencyProviderClass))

typedef struct _BCCurrencyProvider BCCurrencyProvider;
typedef struct _BCCurrencyProviderClass BCCurrencyProviderClass;
typedef struct _BCCurrencyProviderPrivate BCCurrencyProviderPrivate;

struct _CurrencyManager {
	GObject parent_instance;
	CurrencyManagerPrivate * priv;
};

struct _CurrencyManagerClass {
	GObjectClass parent_class;
};

struct _CurrencyProviderIface {
	GTypeInterface parent_iface;
	void (*update_rates) (CurrencyProvider* self, gboolean async_load, gboolean force);
	void (*clear) (CurrencyProvider* self);
	GDateTime* (*parse_date) (CurrencyProvider* self, const gchar* date);
	gint (*get_refresh_interval) (CurrencyProvider* self);
	void (*set_refresh_interval) (CurrencyProvider* self, gint value);
	gchar* (*get_attribution_link) (CurrencyProvider* self);
	const gchar* (*get_provider_name) (CurrencyProvider* self);
	gboolean (*get_loaded) (CurrencyProvider* self);
	void (*set_loaded) (CurrencyProvider* self, gboolean value);
};

struct _Currency {
	GObject parent_instance;
	CurrencyPrivate * priv;
};

struct _CurrencyClass {
	GObjectClass parent_class;
};

struct _AbstractCurrencyProvider {
	GObject parent_instance;
	AbstractCurrencyProviderPrivate * priv;
	gchar** MONTHS_ABBREVIATED;
	gint MONTHS_ABBREVIATED_length1;
	gchar** MONTHS_FULL;
	gint MONTHS_FULL_length1;
	gboolean loading;
	GList* currencies;
	guint update_callback;
};

struct _AbstractCurrencyProviderClass {
	GObjectClass parent_class;
	GDateTime* (*parse_date) (AbstractCurrencyProvider* self, const gchar* date);
	gboolean (*do_load_rates) (AbstractCurrencyProvider* self);
	void (*download_file_sync) (AbstractCurrencyProvider* self, const gchar* uri, const gchar* filename, const gchar* source);
	void (*download_file_async) (AbstractCurrencyProvider* self, const gchar* uri, const gchar* filename, const gchar* source, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*download_file_finish) (AbstractCurrencyProvider* self, GAsyncResult* _res_);
	gchar* (*get_attribution_link) (AbstractCurrencyProvider* self);
	const gchar* (*get_provider_name) (AbstractCurrencyProvider* self);
	gchar* (*get_rate_filepath) (AbstractCurrencyProvider* self);
	gchar* (*get_rate_source_url) (AbstractCurrencyProvider* self);
	gchar* (*get_source_name) (AbstractCurrencyProvider* self);
};

struct _Equation {
	GObject parent_instance;
	EquationPrivate * priv;
	gint base;
	gint wordlen;
	AngleUnit angle_units;
};

struct _EquationClass {
	GObjectClass parent_class;
	gboolean (*variable_is_defined) (Equation* self, const gchar* name);
	Number* (*get_variable) (Equation* self, const gchar* name);
	gboolean (*unit_is_defined) (Equation* self, const gchar* name);
	gboolean (*literal_base_is_defined) (Equation* self, const gchar* name);
	void (*set_variable) (Equation* self, const gchar* name, Number* x);
	gboolean (*function_is_defined) (Equation* self, const gchar* name);
	Number* (*convert) (Equation* self, Number* x, const gchar* x_units, const gchar* z_units, Unit** x_unit, Unit** z_unit);
	gchar* (*get_last_operation) (Equation* self, Number** operand);
};

struct _PreLexer {
	GObject parent_instance;
	PreLexerPrivate * priv;
	gchar* stream;
	gint index;
	gint mark_index;
};

struct _PreLexerClass {
	GObjectClass parent_class;
};

struct _LexerToken {
	GObject parent_instance;
	LexerTokenPrivate * priv;
	gchar* text;
	guint start_index;
	guint end_index;
	LexerTokenType type;
};

struct _LexerTokenClass {
	GObjectClass parent_class;
};

struct _Lexer {
	GObject parent_instance;
	LexerPrivate * priv;
	GList* tokens;
};

struct _LexerClass {
	GObjectClass parent_class;
};

struct _Constant {
	gchar* name;
	gchar* symbol;
	Number* number;
};

struct _ConstantCategory {
	gchar* name;
	Constant* constants;
	gint constants_length1;
};

struct _ParseNode {
	GObject parent_instance;
	ParseNodePrivate * priv;
	Parser* parser;
	ParseNode* parent;
	ParseNode* left;
	ParseNode* right;
	GList* token_list;
	guint precedence;
	Associativity associativity;
	gchar* value;
};

struct _ParseNodeClass {
	GObjectClass parent_class;
	Number* (*solve) (ParseNode* self);
};

struct _RNode {
	ParseNode parent_instance;
	RNodePrivate * priv;
};

struct _RNodeClass {
	ParseNodeClass parent_class;
	Number* (*solve_r) (RNode* self, Number* r);
};

struct _LRNode {
	ParseNode parent_instance;
	LRNodePrivate * priv;
	gboolean repeatable;
};

struct _LRNodeClass {
	ParseNodeClass parent_class;
	Number* (*solve_lr) (LRNode* self, Number* left, Number* r);
};

struct _ConstantNode {
	ParseNode parent_instance;
	ConstantNodePrivate * priv;
};

struct _ConstantNodeClass {
	ParseNodeClass parent_class;
};

struct _AssignNode {
	RNode parent_instance;
	AssignNodePrivate * priv;
};

struct _AssignNodeClass {
	RNodeClass parent_class;
};

struct _AssignFunctionNode {
	ParseNode parent_instance;
	AssignFunctionNodePrivate * priv;
};

struct _AssignFunctionNodeClass {
	ParseNodeClass parent_class;
};

struct _NameNode {
	ParseNode parent_instance;
	NameNodePrivate * priv;
};

struct _NameNodeClass {
	ParseNodeClass parent_class;
};

struct _VariableNode {
	ParseNode parent_instance;
	VariableNodePrivate * priv;
};

struct _VariableNodeClass {
	ParseNodeClass parent_class;
};

struct _VariableWithPowerNode {
	ParseNode parent_instance;
	VariableWithPowerNodePrivate * priv;
};

struct _VariableWithPowerNodeClass {
	ParseNodeClass parent_class;
};

struct _FunctionNameNode {
	NameNode parent_instance;
	FunctionNameNodePrivate * priv;
};

struct _FunctionNameNodeClass {
	NameNodeClass parent_class;
};

struct _FunctionArgumentsNode {
	NameNode parent_instance;
	FunctionArgumentsNodePrivate * priv;
};

struct _FunctionArgumentsNodeClass {
	NameNodeClass parent_class;
};

struct _FunctionDescriptionNode {
	NameNode parent_instance;
	FunctionDescriptionNodePrivate * priv;
};

struct _FunctionDescriptionNodeClass {
	NameNodeClass parent_class;
};

struct _FunctionNode {
	ParseNode parent_instance;
	FunctionNodePrivate * priv;
};

struct _FunctionNodeClass {
	ParseNodeClass parent_class;
};

struct _UnaryMinusNode {
	RNode parent_instance;
	UnaryMinusNodePrivate * priv;
};

struct _UnaryMinusNodeClass {
	RNodeClass parent_class;
};

struct _AbsoluteValueNode {
	RNode parent_instance;
	AbsoluteValueNodePrivate * priv;
};

struct _AbsoluteValueNodeClass {
	RNodeClass parent_class;
};

struct _FloorNode {
	RNode parent_instance;
	FloorNodePrivate * priv;
};

struct _FloorNodeClass {
	RNodeClass parent_class;
};

struct _CeilingNode {
	RNode parent_instance;
	CeilingNodePrivate * priv;
};

struct _CeilingNodeClass {
	RNodeClass parent_class;
};

struct _FractionalComponentNode {
	RNode parent_instance;
	FractionalComponentNodePrivate * priv;
};

struct _FractionalComponentNodeClass {
	RNodeClass parent_class;
};

struct _RoundNode {
	RNode parent_instance;
	RoundNodePrivate * priv;
};

struct _RoundNodeClass {
	RNodeClass parent_class;
};

struct _PercentNode {
	RNode parent_instance;
	PercentNodePrivate * priv;
};

struct _PercentNodeClass {
	RNodeClass parent_class;
};

struct _FactorialNode {
	RNode parent_instance;
	FactorialNodePrivate * priv;
};

struct _FactorialNodeClass {
	RNodeClass parent_class;
};

struct _AddNode {
	LRNode parent_instance;
	AddNodePrivate * priv;
	gboolean do_percentage;
};

struct _AddNodeClass {
	LRNodeClass parent_class;
};

struct _SubtractNode {
	LRNode parent_instance;
	SubtractNodePrivate * priv;
	gboolean do_percentage;
};

struct _SubtractNodeClass {
	LRNodeClass parent_class;
};

struct _MultiplyNode {
	LRNode parent_instance;
	MultiplyNodePrivate * priv;
};

struct _MultiplyNodeClass {
	LRNodeClass parent_class;
};

struct _ShiftNode {
	LRNode parent_instance;
	ShiftNodePrivate * priv;
};

struct _ShiftNodeClass {
	LRNodeClass parent_class;
};

struct _DivideNode {
	LRNode parent_instance;
	DivideNodePrivate * priv;
};

struct _DivideNodeClass {
	LRNodeClass parent_class;
};

struct _ModulusDivideNode {
	LRNode parent_instance;
	ModulusDivideNodePrivate * priv;
};

struct _ModulusDivideNodeClass {
	LRNodeClass parent_class;
};

struct _RootNode {
	RNode parent_instance;
	RootNodePrivate * priv;
};

struct _RootNodeClass {
	RNodeClass parent_class;
};

struct _XPowYNode {
	LRNode parent_instance;
	XPowYNodePrivate * priv;
};

struct _XPowYNodeClass {
	LRNodeClass parent_class;
};

struct _XPowYIntegerNode {
	ParseNode parent_instance;
	XPowYIntegerNodePrivate * priv;
};

struct _XPowYIntegerNodeClass {
	ParseNodeClass parent_class;
};

struct _NotNode {
	RNode parent_instance;
	NotNodePrivate * priv;
};

struct _NotNodeClass {
	RNodeClass parent_class;
};

struct _AndNode {
	LRNode parent_instance;
	AndNodePrivate * priv;
};

struct _AndNodeClass {
	LRNodeClass parent_class;
};

struct _NandNode {
	LRNode parent_instance;
	NandNodePrivate * priv;
};

struct _NandNodeClass {
	LRNodeClass parent_class;
};

struct _OrNode {
	LRNode parent_instance;
	OrNodePrivate * priv;
};

struct _OrNodeClass {
	LRNodeClass parent_class;
};

struct _NorNode {
	LRNode parent_instance;
	NorNodePrivate * priv;
};

struct _NorNodeClass {
	LRNodeClass parent_class;
};

struct _XorNode {
	LRNode parent_instance;
	XorNodePrivate * priv;
};

struct _XorNodeClass {
	LRNodeClass parent_class;
};

struct _XnorNode {
	LRNode parent_instance;
	XnorNodePrivate * priv;
};

struct _XnorNodeClass {
	LRNodeClass parent_class;
};

struct _ConvertNode {
	LRNode parent_instance;
	ConvertNodePrivate * priv;
};

struct _ConvertNodeClass {
	LRNodeClass parent_class;
};

struct _ConvertBaseNode {
	ParseNode parent_instance;
	ConvertBaseNodePrivate * priv;
};

struct _ConvertBaseNodeClass {
	ParseNodeClass parent_class;
};

struct _ConvertNumberNode {
	ParseNode parent_instance;
	ConvertNumberNodePrivate * priv;
};

struct _ConvertNumberNodeClass {
	ParseNodeClass parent_class;
};

struct _Parser {
	GTypeInstance parent_instance;
	volatile int ref_count;
	ParserPrivate * priv;
	gint number_base;
	gint wordlen;
	AngleUnit angle_units;
};

struct _ParserClass {
	GTypeClass parent_class;
	void (*finalize) (Parser *self);
	gboolean (*variable_is_defined) (Parser* self, const gchar* name);
	Number* (*get_variable) (Parser* self, const gchar* name);
	void (*set_variable) (Parser* self, const gchar* name, Number* x);
	gboolean (*function_is_defined) (Parser* self, const gchar* name);
	gboolean (*unit_is_defined) (Parser* self, const gchar* name);
	gboolean (*currency_is_defined) (Parser* self, const gchar* name);
	gboolean (*currency_has_rate) (Parser* self, const gchar* name);
	gboolean (*literal_base_is_defined) (Parser* self, const gchar* name);
	Number* (*convert) (Parser* self, Number* x, const gchar* x_units, const gchar* z_units, Unit** x_unit, Unit** z_unit);
};

struct _FunctionCategory {
	gchar* name;
	MathFunction** functions;
	gint functions_length1;
};

struct _FunctionManager {
	GObject parent_instance;
	FunctionManagerPrivate * priv;
};

struct _FunctionManagerClass {
	GObjectClass parent_class;
};

struct _MathEquation {
	GtkSourceBuffer parent_instance;
	MathEquationPrivate * priv;
};

struct _MathEquationClass {
	GtkSourceBufferClass parent_class;
};

struct _MathFunction {
	GObject parent_instance;
	MathFunctionPrivate * priv;
};

struct _MathFunctionClass {
	GObjectClass parent_class;
	Number* (*evaluate) (MathFunction* self, Number** args, gint args_length1, Parser* root_parser);
	gboolean (*is_custom_function) (MathFunction* self);
};

struct _ExpressionParser {
	Parser parent_instance;
	ExpressionParserPrivate * priv;
};

struct _ExpressionParserClass {
	ParserClass parent_class;
};

struct _BuiltInMathFunction {
	MathFunction parent_instance;
	BuiltInMathFunctionPrivate * priv;
};

struct _BuiltInMathFunctionClass {
	MathFunctionClass parent_class;
};

struct _MathVariables {
	GObject parent_instance;
	MathVariablesPrivate * priv;
};

struct _MathVariablesClass {
	GObjectClass parent_class;
};

struct _Number {
	GObject parent_instance;
	NumberPrivate * priv;
};

struct _NumberClass {
	GObjectClass parent_class;
};

struct _Serializer {
	GObject parent_instance;
	SerializerPrivate * priv;
};

struct _SerializerClass {
	GObjectClass parent_class;
};

struct _UnitManager {
	GObject parent_instance;
	UnitManagerPrivate * priv;
};

struct _UnitManagerClass {
	GObjectClass parent_class;
};

struct _UnitCategory {
	GObject parent_instance;
	UnitCategoryPrivate * priv;
};

struct _UnitCategoryClass {
	GObjectClass parent_class;
};

struct _Unit {
	GObject parent_instance;
	UnitPrivate * priv;
};

struct _UnitClass {
	GObjectClass parent_class;
};

struct _ImfCurrencyProvider {
	AbstractCurrencyProvider parent_instance;
	ImfCurrencyProviderPrivate * priv;
};

struct _ImfCurrencyProviderClass {
	AbstractCurrencyProviderClass parent_class;
};

struct _OfflineImfCurrencyProvider {
	ImfCurrencyProvider parent_instance;
	OfflineImfCurrencyProviderPrivate * priv;
};

struct _OfflineImfCurrencyProviderClass {
	ImfCurrencyProviderClass parent_class;
};

struct _EcbCurrencyProvider {
	AbstractCurrencyProvider parent_instance;
	EcbCurrencyProviderPrivate * priv;
};

struct _EcbCurrencyProviderClass {
	AbstractCurrencyProviderClass parent_class;
};

struct _UnCurrencyProvider {
	AbstractCurrencyProvider parent_instance;
	UnCurrencyProviderPrivate * priv;
};

struct _UnCurrencyProviderClass {
	AbstractCurrencyProviderClass parent_class;
};

struct _BCCurrencyProvider {
	AbstractCurrencyProvider parent_instance;
	BCCurrencyProviderPrivate * priv;
};

struct _BCCurrencyProviderClass {
	AbstractCurrencyProviderClass parent_class;
};

VALA_EXTERN GType currency_manager_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (CurrencyManager, g_object_unref)
VALA_EXTERN gchar** currency_manager_get_provider_links (CurrencyManager* self,
                                             gint* result_length1);
VALA_EXTERN GType currency_provider_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (CurrencyProvider, g_object_unref)
VALA_EXTERN void currency_manager_add_provider (CurrencyManager* self,
                                    CurrencyProvider* provider);
VALA_EXTERN void currency_manager_refresh_sync (CurrencyManager* self);
VALA_EXTERN void currency_manager_refresh_async (CurrencyManager* self,
                                     gboolean force);
VALA_EXTERN CurrencyManager* currency_manager_get_default (gboolean async_load,
                                               gboolean default_providers);
VALA_EXTERN void currency_manager_initialize_providers (CurrencyManager* self,
                                            gboolean async_load);
VALA_EXTERN GType currency_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Currency, g_object_unref)
VALA_EXTERN GList* currency_manager_get_currencies (CurrencyManager* self);
VALA_EXTERN Currency* currency_manager_get_currency (CurrencyManager* self,
                                         const gchar* name);
VALA_EXTERN GType number_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Number, g_object_unref)
VALA_EXTERN Number* currency_manager_get_value (CurrencyManager* self,
                                    const gchar* currency);
VALA_EXTERN gboolean currency_manager_has_known_currency (CurrencyManager* self,
                                              const gchar* short_name);
VALA_EXTERN Currency* currency_manager_add_currency (CurrencyManager* self,
                                         const gchar* short_name,
                                         const gchar* source);
VALA_EXTERN Currency** currency_manager_currencies_eligible_for_autocompletion (CurrencyManager* self,
                                                                    const gchar* text,
                                                                    gboolean favorite,
                                                                    gint* result_length1);
VALA_EXTERN gboolean currency_manager_is_favorite (CurrencyManager* self,
                                       const gchar* name);
VALA_EXTERN CurrencyManager* currency_manager_new (void);
VALA_EXTERN CurrencyManager* currency_manager_construct (GType object_type);
VALA_EXTERN gint currency_manager_get_refresh_interval (CurrencyManager* self);
VALA_EXTERN void currency_manager_set_refresh_interval (CurrencyManager* self,
                                            gint value);
VALA_EXTERN void currency_manager_set_favorite_currencies (CurrencyManager* self,
                                               gchar** value,
                                               gint value_length1);
VALA_EXTERN gboolean currency_manager_get_loaded (CurrencyManager* self);
VALA_EXTERN Currency* currency_new (const gchar* name,
                        const gchar* display_name,
                        const gchar* symbol);
VALA_EXTERN Currency* currency_construct (GType object_type,
                              const gchar* name,
                              const gchar* display_name,
                              const gchar* symbol);
VALA_EXTERN void currency_set_value (Currency* self,
                         Number* value);
VALA_EXTERN Number* currency_get_value (Currency* self);
VALA_EXTERN gchar* currency_get_name (Currency* self);
VALA_EXTERN gchar* currency_get_display_name (Currency* self);
VALA_EXTERN gchar* currency_get_symbol (Currency* self);
VALA_EXTERN gchar* currency_get_source (Currency* self);
VALA_EXTERN void currency_set_source (Currency* self,
                          gchar* value);
VALA_EXTERN gchar* currency_get_date (Currency* self);
VALA_EXTERN void currency_set_date (Currency* self,
                        gchar* value);
VALA_EXTERN CurrencyProvider* currency_get_provider (Currency* self);
VALA_EXTERN void currency_set_provider (Currency* self,
                            CurrencyProvider* value);
VALA_EXTERN void currency_provider_update_rates (CurrencyProvider* self,
                                     gboolean async_load,
                                     gboolean force);
VALA_EXTERN void currency_provider_clear (CurrencyProvider* self);
VALA_EXTERN GDateTime* currency_provider_parse_date (CurrencyProvider* self,
                                         const gchar* date);
VALA_EXTERN gint currency_provider_get_refresh_interval (CurrencyProvider* self);
VALA_EXTERN void currency_provider_set_refresh_interval (CurrencyProvider* self,
                                             gint value);
VALA_EXTERN gchar* currency_provider_get_attribution_link (CurrencyProvider* self);
VALA_EXTERN const gchar* currency_provider_get_provider_name (CurrencyProvider* self);
VALA_EXTERN gboolean currency_provider_get_loaded (CurrencyProvider* self);
VALA_EXTERN void currency_provider_set_loaded (CurrencyProvider* self,
                                   gboolean value);
VALA_EXTERN GType abstract_currency_provider_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AbstractCurrencyProvider, g_object_unref)
VALA_EXTERN Currency* abstract_currency_provider_register_currency (AbstractCurrencyProvider* self,
                                                        const gchar* symbol,
                                                        const gchar* source,
                                                        Number* value,
                                                        const gchar* date);
VALA_EXTERN GDateTime* abstract_currency_provider_parse_date (AbstractCurrencyProvider* self,
                                                  const gchar* date);
VALA_EXTERN Currency* abstract_currency_provider_get_base_currency (AbstractCurrencyProvider* self);
VALA_EXTERN Currency* abstract_currency_provider_get_currency (AbstractCurrencyProvider* self,
                                                   const gchar* name);
VALA_EXTERN gboolean abstract_currency_provider_do_load_rates (AbstractCurrencyProvider* self);
VALA_EXTERN void abstract_currency_provider_download_file_sync (AbstractCurrencyProvider* self,
                                                    const gchar* uri,
                                                    const gchar* filename,
                                                    const gchar* source);
VALA_EXTERN void abstract_currency_provider_download_file_async (AbstractCurrencyProvider* self,
                                                     const gchar* uri,
                                                     const gchar* filename,
                                                     const gchar* source,
                                                     GAsyncReadyCallback _callback_,
                                                     gpointer _user_data_);
VALA_EXTERN void abstract_currency_provider_download_file_finish (AbstractCurrencyProvider* self,
                                                      GAsyncResult* _res_);
VALA_EXTERN AbstractCurrencyProvider* abstract_currency_provider_construct (GType object_type);
VALA_EXTERN gchar* abstract_currency_provider_get_attribution_link (AbstractCurrencyProvider* self);
VALA_EXTERN const gchar* abstract_currency_provider_get_provider_name (AbstractCurrencyProvider* self);
VALA_EXTERN gchar* abstract_currency_provider_get_rate_filepath (AbstractCurrencyProvider* self);
VALA_EXTERN gchar* abstract_currency_provider_get_rate_source_url (AbstractCurrencyProvider* self);
VALA_EXTERN gchar* abstract_currency_provider_get_source_name (AbstractCurrencyProvider* self);
VALA_EXTERN const gchar* abstract_currency_provider_get_base_currency_symbol (AbstractCurrencyProvider* self);
VALA_EXTERN void abstract_currency_provider_set_base_currency_symbol (AbstractCurrencyProvider* self,
                                                          const gchar* value);
VALA_EXTERN CurrencyManager* abstract_currency_provider_get_currency_manager (AbstractCurrencyProvider* self);
VALA_EXTERN gint sub_atoi (const gchar* data);
VALA_EXTERN gint super_atoi (const gchar* data);
VALA_EXTERN GType error_code_get_type (void) G_GNUC_CONST ;
VALA_EXTERN gchar* mp_error_code_to_string (ErrorCode error_code);
VALA_EXTERN GType equation_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Equation, g_object_unref)
VALA_EXTERN GType unit_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Unit, g_object_unref)
VALA_EXTERN GType angle_unit_get_type (void) G_GNUC_CONST ;
VALA_EXTERN Equation* equation_new (const gchar* expression);
VALA_EXTERN Equation* equation_construct (GType object_type,
                              const gchar* expression);
VALA_EXTERN Number* equation_parse (Equation* self,
                        guint* representation_base,
                        ErrorCode* error_code,
                        gchar** error_token,
                        guint** error_start,
                        guint** error_end);
VALA_EXTERN gboolean equation_variable_is_defined (Equation* self,
                                       const gchar* name);
VALA_EXTERN Number* equation_get_variable (Equation* self,
                               const gchar* name);
VALA_EXTERN gboolean equation_unit_is_defined (Equation* self,
                                   const gchar* name);
VALA_EXTERN gboolean equation_literal_base_is_defined (Equation* self,
                                           const gchar* name);
VALA_EXTERN void equation_set_variable (Equation* self,
                            const gchar* name,
                            Number* x);
VALA_EXTERN gboolean equation_function_is_defined (Equation* self,
                                       const gchar* name);
VALA_EXTERN Number* equation_convert (Equation* self,
                          Number* x,
                          const gchar* x_units,
                          const gchar* z_units,
                          Unit** x_unit,
                          Unit** z_unit);
VALA_EXTERN gchar* equation_get_last_operation (Equation* self,
                                    Number** operand);
VALA_EXTERN GType lexer_token_type_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType pre_lexer_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (PreLexer, g_object_unref)
VALA_EXTERN PreLexer* pre_lexer_new (const gchar* input);
VALA_EXTERN PreLexer* pre_lexer_construct (GType object_type,
                               const gchar* input);
VALA_EXTERN void pre_lexer_roll_back (PreLexer* self);
VALA_EXTERN void pre_lexer_set_marker (PreLexer* self);
VALA_EXTERN gchar* pre_lexer_get_marked_substring (PreLexer* self);
VALA_EXTERN LexerTokenType pre_lexer_get_next_token (PreLexer* self);
VALA_EXTERN GType lexer_token_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (LexerToken, g_object_unref)
VALA_EXTERN LexerToken* lexer_token_new (void);
VALA_EXTERN LexerToken* lexer_token_construct (GType object_type);
VALA_EXTERN GType lexer_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Lexer, g_object_unref)
VALA_EXTERN gpointer parser_ref (gpointer instance);
VALA_EXTERN void parser_unref (gpointer instance);
VALA_EXTERN GParamSpec* param_spec_parser (const gchar* name,
                               const gchar* nick,
                               const gchar* blurb,
                               GType object_type,
                               GParamFlags flags);
VALA_EXTERN void value_set_parser (GValue* value,
                       gpointer v_object);
VALA_EXTERN void value_take_parser (GValue* value,
                        gpointer v_object);
VALA_EXTERN gpointer value_get_parser (const GValue* value);
VALA_EXTERN GType parser_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Parser, parser_unref)
VALA_EXTERN Lexer* lexer_new (const gchar* input,
                  Parser* parser,
                  gint number_base);
VALA_EXTERN Lexer* lexer_construct (GType object_type,
                        const gchar* input,
                        Parser* parser,
                        gint number_base);
VALA_EXTERN void lexer_scan (Lexer* self);
VALA_EXTERN LexerToken* lexer_get_next_token (Lexer* self);
VALA_EXTERN void lexer_roll_back (Lexer* self);
VALA_EXTERN GType associativity_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType constant_category_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType constant_get_type (void) G_GNUC_CONST ;
VALA_EXTERN Constant* constant_dup (const Constant* self);
VALA_EXTERN void constant_free (Constant* self);
VALA_EXTERN void constant_copy (const Constant* self,
                    Constant* dest);
VALA_EXTERN void constant_destroy (Constant* self);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (Constant, constant_destroy)
VALA_EXTERN ConstantCategory* constant_category_dup (const ConstantCategory* self);
VALA_EXTERN void constant_category_free (ConstantCategory* self);
VALA_EXTERN void constant_category_copy (const ConstantCategory* self,
                             ConstantCategory* dest);
VALA_EXTERN void constant_category_destroy (ConstantCategory* self);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (ConstantCategory, constant_category_destroy)
VALA_EXTERN GType parse_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ParseNode, g_object_unref)
VALA_EXTERN LexerToken* parse_node_token (ParseNode* self);
VALA_EXTERN LexerToken* parse_node_first_token (ParseNode* self);
VALA_EXTERN LexerToken* parse_node_last_token (ParseNode* self);
VALA_EXTERN ParseNode* parse_node_new_WithList (Parser* parser,
                                    GList* token_list,
                                    guint precedence,
                                    Associativity associativity,
                                    const gchar* value);
VALA_EXTERN ParseNode* parse_node_construct_WithList (GType object_type,
                                          Parser* parser,
                                          GList* token_list,
                                          guint precedence,
                                          Associativity associativity,
                                          const gchar* value);
VALA_EXTERN ParseNode* parse_node_new (Parser* parser,
                           LexerToken* token,
                           guint precedence,
                           Associativity associativity,
                           const gchar* value);
VALA_EXTERN ParseNode* parse_node_construct (GType object_type,
                                 Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity,
                                 const gchar* value);
VALA_EXTERN Number* parse_node_solve (ParseNode* self);
VALA_EXTERN GType rnode_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (RNode, g_object_unref)
VALA_EXTERN RNode* rnode_construct (GType object_type,
                        Parser* parser,
                        LexerToken* token,
                        guint precedence,
                        Associativity associativity);
VALA_EXTERN Number* rnode_solve_r (RNode* self,
                       Number* r);
VALA_EXTERN GType lr_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (LRNode, g_object_unref)
VALA_EXTERN LRNode* lr_node_construct (GType object_type,
                           Parser* parser,
                           LexerToken* token,
                           guint precedence,
                           Associativity associativity);
VALA_EXTERN gboolean lr_node_is_repeatable (LRNode* self);
VALA_EXTERN Number* lr_node_solve_lr (LRNode* self,
                          Number* left,
                          Number* r);
VALA_EXTERN GType constant_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ConstantNode, g_object_unref)
VALA_EXTERN ConstantNode* constant_node_new (Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity);
VALA_EXTERN ConstantNode* constant_node_construct (GType object_type,
                                       Parser* parser,
                                       LexerToken* token,
                                       guint precedence,
                                       Associativity associativity);
VALA_EXTERN GType assign_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AssignNode, g_object_unref)
VALA_EXTERN AssignNode* assign_node_new (Parser* parser,
                             LexerToken* token,
                             guint precedence,
                             Associativity associativity);
VALA_EXTERN AssignNode* assign_node_construct (GType object_type,
                                   Parser* parser,
                                   LexerToken* token,
                                   guint precedence,
                                   Associativity associativity);
VALA_EXTERN GType assign_function_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AssignFunctionNode, g_object_unref)
VALA_EXTERN AssignFunctionNode* assign_function_node_new (Parser* parser,
                                              LexerToken* token,
                                              guint precedence,
                                              Associativity associativity);
VALA_EXTERN AssignFunctionNode* assign_function_node_construct (GType object_type,
                                                    Parser* parser,
                                                    LexerToken* token,
                                                    guint precedence,
                                                    Associativity associativity);
VALA_EXTERN GType name_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (NameNode, g_object_unref)
VALA_EXTERN NameNode* name_node_new (Parser* parser,
                         LexerToken* token,
                         guint precedence,
                         Associativity associativity,
                         const gchar* text);
VALA_EXTERN NameNode* name_node_construct (GType object_type,
                               Parser* parser,
                               LexerToken* token,
                               guint precedence,
                               Associativity associativity,
                               const gchar* text);
VALA_EXTERN GType variable_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (VariableNode, g_object_unref)
VALA_EXTERN VariableNode* variable_node_new (Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity);
VALA_EXTERN VariableNode* variable_node_construct (GType object_type,
                                       Parser* parser,
                                       LexerToken* token,
                                       guint precedence,
                                       Associativity associativity);
VALA_EXTERN GType variable_with_power_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (VariableWithPowerNode, g_object_unref)
VALA_EXTERN VariableWithPowerNode* variable_with_power_node_new (Parser* parser,
                                                     LexerToken* token,
                                                     guint precedence,
                                                     Associativity associativity,
                                                     const gchar* text);
VALA_EXTERN VariableWithPowerNode* variable_with_power_node_construct (GType object_type,
                                                           Parser* parser,
                                                           LexerToken* token,
                                                           guint precedence,
                                                           Associativity associativity,
                                                           const gchar* text);
VALA_EXTERN GType function_name_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FunctionNameNode, g_object_unref)
VALA_EXTERN FunctionNameNode* function_name_node_new (Parser* parser,
                                          LexerToken* token,
                                          guint precedence,
                                          Associativity associativity,
                                          const gchar* name);
VALA_EXTERN FunctionNameNode* function_name_node_construct (GType object_type,
                                                Parser* parser,
                                                LexerToken* token,
                                                guint precedence,
                                                Associativity associativity,
                                                const gchar* name);
VALA_EXTERN GType function_arguments_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FunctionArgumentsNode, g_object_unref)
VALA_EXTERN FunctionArgumentsNode* function_arguments_node_new (Parser* parser,
                                                    GList* token_list,
                                                    guint precedence,
                                                    Associativity associativity,
                                                    const gchar* arguments);
VALA_EXTERN FunctionArgumentsNode* function_arguments_node_construct (GType object_type,
                                                          Parser* parser,
                                                          GList* token_list,
                                                          guint precedence,
                                                          Associativity associativity,
                                                          const gchar* arguments);
VALA_EXTERN GType function_description_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FunctionDescriptionNode, g_object_unref)
VALA_EXTERN FunctionDescriptionNode* function_description_node_new (Parser* parser,
                                                        LexerToken* token,
                                                        guint precedence,
                                                        Associativity associativity,
                                                        const gchar* description);
VALA_EXTERN FunctionDescriptionNode* function_description_node_construct (GType object_type,
                                                              Parser* parser,
                                                              LexerToken* token,
                                                              guint precedence,
                                                              Associativity associativity,
                                                              const gchar* description);
VALA_EXTERN GType function_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FunctionNode, g_object_unref)
VALA_EXTERN FunctionNode* function_node_new (Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity,
                                 const gchar* text);
VALA_EXTERN FunctionNode* function_node_construct (GType object_type,
                                       Parser* parser,
                                       LexerToken* token,
                                       guint precedence,
                                       Associativity associativity,
                                       const gchar* text);
VALA_EXTERN GType unary_minus_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (UnaryMinusNode, g_object_unref)
VALA_EXTERN UnaryMinusNode* unary_minus_node_new (Parser* parser,
                                      LexerToken* token,
                                      guint precedence,
                                      Associativity associativity);
VALA_EXTERN UnaryMinusNode* unary_minus_node_construct (GType object_type,
                                            Parser* parser,
                                            LexerToken* token,
                                            guint precedence,
                                            Associativity associativity);
VALA_EXTERN GType absolute_value_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AbsoluteValueNode, g_object_unref)
VALA_EXTERN AbsoluteValueNode* absolute_value_node_new (Parser* parser,
                                            LexerToken* token,
                                            guint precedence,
                                            Associativity associativity);
VALA_EXTERN AbsoluteValueNode* absolute_value_node_construct (GType object_type,
                                                  Parser* parser,
                                                  LexerToken* token,
                                                  guint precedence,
                                                  Associativity associativity);
VALA_EXTERN GType floor_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FloorNode, g_object_unref)
VALA_EXTERN FloorNode* floor_node_new (Parser* parser,
                           LexerToken* token,
                           guint precedence,
                           Associativity associativity);
VALA_EXTERN FloorNode* floor_node_construct (GType object_type,
                                 Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity);
VALA_EXTERN GType ceiling_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (CeilingNode, g_object_unref)
VALA_EXTERN CeilingNode* ceiling_node_new (Parser* parser,
                               LexerToken* token,
                               guint precedence,
                               Associativity associativity);
VALA_EXTERN CeilingNode* ceiling_node_construct (GType object_type,
                                     Parser* parser,
                                     LexerToken* token,
                                     guint precedence,
                                     Associativity associativity);
VALA_EXTERN GType fractional_component_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FractionalComponentNode, g_object_unref)
VALA_EXTERN FractionalComponentNode* fractional_component_node_new (Parser* parser,
                                                        LexerToken* token,
                                                        guint precedence,
                                                        Associativity associativity);
VALA_EXTERN FractionalComponentNode* fractional_component_node_construct (GType object_type,
                                                              Parser* parser,
                                                              LexerToken* token,
                                                              guint precedence,
                                                              Associativity associativity);
VALA_EXTERN GType round_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (RoundNode, g_object_unref)
VALA_EXTERN RoundNode* round_node_new (Parser* parser,
                           LexerToken* token,
                           guint precedence,
                           Associativity associativity);
VALA_EXTERN RoundNode* round_node_construct (GType object_type,
                                 Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity);
VALA_EXTERN GType percent_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (PercentNode, g_object_unref)
VALA_EXTERN PercentNode* percent_node_new (Parser* parser,
                               LexerToken* token,
                               guint precedence,
                               Associativity associativity);
VALA_EXTERN PercentNode* percent_node_construct (GType object_type,
                                     Parser* parser,
                                     LexerToken* token,
                                     guint precedence,
                                     Associativity associativity);
VALA_EXTERN GType factorial_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FactorialNode, g_object_unref)
VALA_EXTERN FactorialNode* factorial_node_new (Parser* parser,
                                   LexerToken* token,
                                   guint precedence,
                                   Associativity associativity);
VALA_EXTERN FactorialNode* factorial_node_construct (GType object_type,
                                         Parser* parser,
                                         LexerToken* token,
                                         guint precedence,
                                         Associativity associativity);
VALA_EXTERN GType add_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AddNode, g_object_unref)
VALA_EXTERN AddNode* add_node_new (Parser* parser,
                       LexerToken* token,
                       guint precedence,
                       Associativity associativity);
VALA_EXTERN AddNode* add_node_construct (GType object_type,
                             Parser* parser,
                             LexerToken* token,
                             guint precedence,
                             Associativity associativity);
VALA_EXTERN GType subtract_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SubtractNode, g_object_unref)
VALA_EXTERN SubtractNode* subtract_node_new (Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity);
VALA_EXTERN SubtractNode* subtract_node_construct (GType object_type,
                                       Parser* parser,
                                       LexerToken* token,
                                       guint precedence,
                                       Associativity associativity);
VALA_EXTERN GType multiply_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MultiplyNode, g_object_unref)
VALA_EXTERN MultiplyNode* multiply_node_new (Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity);
VALA_EXTERN MultiplyNode* multiply_node_construct (GType object_type,
                                       Parser* parser,
                                       LexerToken* token,
                                       guint precedence,
                                       Associativity associativity);
VALA_EXTERN GType shift_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShiftNode, g_object_unref)
VALA_EXTERN ShiftNode* shift_node_new (Parser* parser,
                           LexerToken* token,
                           guint precedence,
                           Associativity associativity);
VALA_EXTERN ShiftNode* shift_node_construct (GType object_type,
                                 Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity);
VALA_EXTERN GType divide_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DivideNode, g_object_unref)
VALA_EXTERN DivideNode* divide_node_new (Parser* parser,
                             LexerToken* token,
                             guint precedence,
                             Associativity associativity);
VALA_EXTERN DivideNode* divide_node_construct (GType object_type,
                                   Parser* parser,
                                   LexerToken* token,
                                   guint precedence,
                                   Associativity associativity);
VALA_EXTERN GType modulus_divide_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ModulusDivideNode, g_object_unref)
VALA_EXTERN ModulusDivideNode* modulus_divide_node_new (Parser* parser,
                                            LexerToken* token,
                                            guint precedence,
                                            Associativity associativity);
VALA_EXTERN ModulusDivideNode* modulus_divide_node_construct (GType object_type,
                                                  Parser* parser,
                                                  LexerToken* token,
                                                  guint precedence,
                                                  Associativity associativity);
VALA_EXTERN GType root_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (RootNode, g_object_unref)
VALA_EXTERN RootNode* root_node_new (Parser* parser,
                         LexerToken* token,
                         guint precedence,
                         Associativity associativity,
                         gint n);
VALA_EXTERN RootNode* root_node_construct (GType object_type,
                               Parser* parser,
                               LexerToken* token,
                               guint precedence,
                               Associativity associativity,
                               gint n);
VALA_EXTERN RootNode* root_node_new_WithToken (Parser* parser,
                                   LexerToken* token,
                                   guint precedence,
                                   Associativity associativity,
                                   LexerToken* token_n);
VALA_EXTERN RootNode* root_node_construct_WithToken (GType object_type,
                                         Parser* parser,
                                         LexerToken* token,
                                         guint precedence,
                                         Associativity associativity,
                                         LexerToken* token_n);
VALA_EXTERN GType xpow_ynode_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (XPowYNode, g_object_unref)
VALA_EXTERN XPowYNode* xpow_ynode_new (Parser* parser,
                           LexerToken* token,
                           guint precedence,
                           Associativity associativity);
VALA_EXTERN XPowYNode* xpow_ynode_construct (GType object_type,
                                 Parser* parser,
                                 LexerToken* token,
                                 guint precedence,
                                 Associativity associativity);
VALA_EXTERN GType xpow_yinteger_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (XPowYIntegerNode, g_object_unref)
VALA_EXTERN XPowYIntegerNode* xpow_yinteger_node_new (Parser* parser,
                                          LexerToken* token,
                                          guint precedence,
                                          Associativity associativity);
VALA_EXTERN XPowYIntegerNode* xpow_yinteger_node_construct (GType object_type,
                                                Parser* parser,
                                                LexerToken* token,
                                                guint precedence,
                                                Associativity associativity);
VALA_EXTERN GType not_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (NotNode, g_object_unref)
VALA_EXTERN NotNode* not_node_new (Parser* parser,
                       LexerToken* token,
                       guint precedence,
                       Associativity associativity);
VALA_EXTERN NotNode* not_node_construct (GType object_type,
                             Parser* parser,
                             LexerToken* token,
                             guint precedence,
                             Associativity associativity);
VALA_EXTERN GType and_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AndNode, g_object_unref)
VALA_EXTERN AndNode* and_node_new (Parser* parser,
                       LexerToken* token,
                       guint precedence,
                       Associativity associativity);
VALA_EXTERN AndNode* and_node_construct (GType object_type,
                             Parser* parser,
                             LexerToken* token,
                             guint precedence,
                             Associativity associativity);
VALA_EXTERN GType nand_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (NandNode, g_object_unref)
VALA_EXTERN NandNode* nand_node_new (Parser* parser,
                         LexerToken* token,
                         guint precedence,
                         Associativity associativity);
VALA_EXTERN NandNode* nand_node_construct (GType object_type,
                               Parser* parser,
                               LexerToken* token,
                               guint precedence,
                               Associativity associativity);
VALA_EXTERN GType or_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrNode, g_object_unref)
VALA_EXTERN OrNode* or_node_new (Parser* parser,
                     LexerToken* token,
                     guint precedence,
                     Associativity associativity);
VALA_EXTERN OrNode* or_node_construct (GType object_type,
                           Parser* parser,
                           LexerToken* token,
                           guint precedence,
                           Associativity associativity);
VALA_EXTERN GType nor_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (NorNode, g_object_unref)
VALA_EXTERN NorNode* nor_node_new (Parser* parser,
                       LexerToken* token,
                       guint precedence,
                       Associativity associativity);
VALA_EXTERN NorNode* nor_node_construct (GType object_type,
                             Parser* parser,
                             LexerToken* token,
                             guint precedence,
                             Associativity associativity);
VALA_EXTERN GType xor_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (XorNode, g_object_unref)
VALA_EXTERN XorNode* xor_node_new (Parser* parser,
                       LexerToken* token,
                       guint precedence,
                       Associativity associativity);
VALA_EXTERN XorNode* xor_node_construct (GType object_type,
                             Parser* parser,
                             LexerToken* token,
                             guint precedence,
                             Associativity associativity);
VALA_EXTERN GType xnor_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (XnorNode, g_object_unref)
VALA_EXTERN XnorNode* xnor_node_new (Parser* parser,
                         LexerToken* token,
                         guint precedence,
                         Associativity associativity);
VALA_EXTERN XnorNode* xnor_node_construct (GType object_type,
                               Parser* parser,
                               LexerToken* token,
                               guint precedence,
                               Associativity associativity);
VALA_EXTERN GType convert_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ConvertNode, g_object_unref)
VALA_EXTERN ConvertNode* convert_node_new (Parser* parser,
                               LexerToken* token,
                               guint precedence,
                               Associativity associativity);
VALA_EXTERN ConvertNode* convert_node_construct (GType object_type,
                                     Parser* parser,
                                     LexerToken* token,
                                     guint precedence,
                                     Associativity associativity);
VALA_EXTERN GType convert_base_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ConvertBaseNode, g_object_unref)
VALA_EXTERN ConvertBaseNode* convert_base_node_new (Parser* parser,
                                        LexerToken* token,
                                        guint precedence,
                                        Associativity associativity,
                                        const gchar* value);
VALA_EXTERN ConvertBaseNode* convert_base_node_construct (GType object_type,
                                              Parser* parser,
                                              LexerToken* token,
                                              guint precedence,
                                              Associativity associativity,
                                              const gchar* value);
VALA_EXTERN GType convert_number_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ConvertNumberNode, g_object_unref)
VALA_EXTERN ConvertNumberNode* convert_number_node_new (Parser* parser,
                                            LexerToken* token,
                                            guint precedence,
                                            Associativity associativity);
VALA_EXTERN ConvertNumberNode* convert_number_node_construct (GType object_type,
                                                  Parser* parser,
                                                  LexerToken* token,
                                                  guint precedence,
                                                  Associativity associativity);
VALA_EXTERN GHashTable* parser_CONSTANTS;
VALA_EXTERN ConstantCategory* parser_CONSTANT_CATEGORIES;
VALA_EXTERN gint parser_CONSTANT_CATEGORIES_length1;
VALA_EXTERN Parser* parser_new (const gchar* input,
                    gint number_base,
                    gint wordlen,
                    AngleUnit angle_units);
VALA_EXTERN Parser* parser_construct (GType object_type,
                          const gchar* input,
                          gint number_base,
                          gint wordlen,
                          AngleUnit angle_units);
VALA_EXTERN gboolean parser_create_parse_tree (Parser* self,
                                   guint* representation_base,
                                   ErrorCode* error_code,
                                   gchar** error_token,
                                   guint* error_start,
                                   guint* error_end);
VALA_EXTERN void parser_set_error (Parser* self,
                       ErrorCode errorno,
                       const gchar* token,
                       guint token_start,
                       guint token_end);
VALA_EXTERN void parser_set_representation_base (Parser* self,
                                     guint new_base);
VALA_EXTERN gboolean parser_variable_is_defined (Parser* self,
                                     const gchar* name);
VALA_EXTERN Number* parser_get_variable (Parser* self,
                             const gchar* name);
VALA_EXTERN void parser_set_variable (Parser* self,
                          const gchar* name,
                          Number* x);
VALA_EXTERN gboolean parser_function_is_defined (Parser* self,
                                     const gchar* name);
VALA_EXTERN gboolean parser_unit_is_defined (Parser* self,
                                 const gchar* name);
VALA_EXTERN gboolean parser_currency_is_defined (Parser* self,
                                     const gchar* name);
VALA_EXTERN gboolean parser_currency_has_rate (Parser* self,
                                   const gchar* name);
VALA_EXTERN gboolean parser_literal_base_is_defined (Parser* self,
                                         const gchar* name);
VALA_EXTERN Number* parser_convert (Parser* self,
                        Number* x,
                        const gchar* x_units,
                        const gchar* z_units,
                        Unit** x_unit,
                        Unit** z_unit);
VALA_EXTERN gchar* parser_get_last_operation (Parser* self,
                                  Number** operand);
VALA_EXTERN Number* parser_parse (Parser* self,
                      guint* representation_base,
                      ErrorCode* error_code,
                      gchar** error_token,
                      guint* error_start,
                      guint* error_end);
VALA_EXTERN GType financial_dialog_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType math_equation_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MathEquation, g_object_unref)
VALA_EXTERN void do_finc_expression (MathEquation* equation,
                         FinancialDialog function,
                         Number* arg1,
                         Number* arg2,
                         Number* arg3,
                         Number* arg4);
VALA_EXTERN GType function_category_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType math_function_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MathFunction, g_object_unref)
VALA_EXTERN FunctionCategory* function_category_dup (const FunctionCategory* self);
VALA_EXTERN void function_category_free (FunctionCategory* self);
VALA_EXTERN void function_category_copy (const FunctionCategory* self,
                             FunctionCategory* dest);
VALA_EXTERN void function_category_destroy (FunctionCategory* self);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (FunctionCategory, function_category_destroy)
VALA_EXTERN GType function_manager_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FunctionManager, g_object_unref)
VALA_EXTERN FunctionCategory* function_manager_FUNCTION_CATEGORIES;
VALA_EXTERN gint function_manager_FUNCTION_CATEGORIES_length1;
VALA_EXTERN FunctionManager* function_manager_new (void);
VALA_EXTERN FunctionManager* function_manager_construct (GType object_type);
VALA_EXTERN FunctionManager* function_manager_get_default_function_manager (void);
VALA_EXTERN gchar** function_manager_get_names (FunctionManager* self,
                                    gint* result_length1);
VALA_EXTERN gboolean function_manager_add_function_with_properties (FunctionManager* self,
                                                        const gchar* name,
                                                        const gchar* arguments,
                                                        const gchar* description,
                                                        Parser* root_parser);
VALA_EXTERN MathFunction* function_manager_get (FunctionManager* self,
                                    const gchar* name);
VALA_EXTERN void function_manager_delete (FunctionManager* self,
                              const gchar* name);
VALA_EXTERN gboolean function_manager_is_function_defined (FunctionManager* self,
                                               const gchar* name);
VALA_EXTERN Number* function_manager_evaluate_function (FunctionManager* self,
                                            const gchar* name,
                                            Number** arguments,
                                            gint arguments_length1,
                                            Parser* parser);
VALA_EXTERN MathFunction** function_manager_functions_eligible_for_autocompletion (FunctionManager* self,
                                                                       const gchar* text,
                                                                       gint* result_length1);
VALA_EXTERN GType number_mode_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType cursor_gravity_get_type (void) G_GNUC_CONST ;
VALA_EXTERN MathEquation* math_equation_new (void);
VALA_EXTERN MathEquation* math_equation_construct (GType object_type);
VALA_EXTERN void math_equation_display_selected (MathEquation* self,
                                     const gchar* selected);
VALA_EXTERN void math_equation_remove_trailing_spaces (MathEquation* self);
VALA_EXTERN void math_equation_copy (MathEquation* self);
VALA_EXTERN void math_equation_paste (MathEquation* self);
VALA_EXTERN void math_equation_undo (MathEquation* self);
VALA_EXTERN void math_equation_redo (MathEquation* self);
VALA_EXTERN gunichar math_equation_get_digit_text (MathEquation* self,
                                       guint digit);
VALA_EXTERN void math_equation_store (MathEquation* self,
                          const gchar* name);
VALA_EXTERN void math_equation_set (MathEquation* self,
                        const gchar* text);
VALA_EXTERN void math_equation_set_number (MathEquation* self,
                               Number* x,
                               gboolean history,
                               guint representation_base);
VALA_EXTERN void math_equation_set_number_as_input (MathEquation* self,
                                        Number* x);
VALA_EXTERN void math_equation_insert (MathEquation* self,
                           const gchar* text);
VALA_EXTERN void math_equation_insert_between (MathEquation* self,
                                   const gchar* start,
                                   const gchar* end,
                                   CursorGravity cursor_gravity);
VALA_EXTERN void math_equation_insert_brackets (MathEquation* self,
                                    gunichar opening,
                                    gunichar closing);
VALA_EXTERN void math_equation_insert_function (MathEquation* self,
                                    const gchar* name,
                                    gboolean force_brackets);
VALA_EXTERN void math_equation_insert_symbol (MathEquation* self,
                                  const gchar* symbol,
                                  gboolean after);
VALA_EXTERN void math_equation_insert_alpha (MathEquation* self,
                                 const gchar* text);
VALA_EXTERN void math_equation_insert_selected (MathEquation* self,
                                    const gchar* answer);
VALA_EXTERN void math_equation_insert_square (MathEquation* self);
VALA_EXTERN void math_equation_insert_nth_root (MathEquation* self);
VALA_EXTERN void math_equation_insert_logarithm (MathEquation* self);
VALA_EXTERN void math_equation_insert_digit (MathEquation* self,
                                 guint digit);
VALA_EXTERN void math_equation_insert_numeric_point (MathEquation* self);
VALA_EXTERN void math_equation_insert_number (MathEquation* self,
                                  Number* x);
VALA_EXTERN void math_equation_insert_exponent (MathEquation* self,
                                    const gchar* base_number);
VALA_EXTERN void math_equation_insert_subtract (MathEquation* self);
VALA_EXTERN void math_equation_solve (MathEquation* self);
VALA_EXTERN void math_equation_factorize (MathEquation* self);
VALA_EXTERN void math_equation_delete_next (MathEquation* self);
VALA_EXTERN void math_equation_backspace (MathEquation* self);
VALA_EXTERN void math_equation_clear (MathEquation* self);
VALA_EXTERN void math_equation_toggle_bit (MathEquation* self,
                               guint bit);
VALA_EXTERN gint math_equation_get_word_size (MathEquation* self);
VALA_EXTERN void math_equation_set_word_size (MathEquation* self,
                                  gint value);
VALA_EXTERN gchar* math_equation_get_display (MathEquation* self);
VALA_EXTERN gboolean math_equation_get_in_solve (MathEquation* self);
VALA_EXTERN gboolean math_equation_get_has_undo_action (MathEquation* self);
VALA_EXTERN gboolean math_equation_get_has_redo_action (MathEquation* self);
VALA_EXTERN GType math_variables_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MathVariables, g_object_unref)
VALA_EXTERN MathVariables* math_equation_get_variables (MathEquation* self);
VALA_EXTERN GType serializer_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Serializer, g_object_unref)
VALA_EXTERN Serializer* math_equation_get_serializer (MathEquation* self);
VALA_EXTERN gint math_equation_get_accuracy (MathEquation* self);
VALA_EXTERN void math_equation_set_accuracy (MathEquation* self,
                                 gint value);
VALA_EXTERN gboolean math_equation_get_show_thousands_separators (MathEquation* self);
VALA_EXTERN void math_equation_set_show_thousands_separators (MathEquation* self,
                                                  gboolean value);
VALA_EXTERN gboolean math_equation_get_show_trailing_zeroes (MathEquation* self);
VALA_EXTERN void math_equation_set_show_trailing_zeroes (MathEquation* self,
                                             gboolean value);
VALA_EXTERN GType display_format_get_type (void) G_GNUC_CONST ;
VALA_EXTERN DisplayFormat math_equation_get_number_format (MathEquation* self);
VALA_EXTERN void math_equation_set_number_format (MathEquation* self,
                                      DisplayFormat value);
VALA_EXTERN gint math_equation_get_number_base (MathEquation* self);
VALA_EXTERN void math_equation_set_number_base (MathEquation* self,
                                    gint value);
VALA_EXTERN AngleUnit math_equation_get_angle_units (MathEquation* self);
VALA_EXTERN void math_equation_set_angle_units (MathEquation* self,
                                    AngleUnit value);
VALA_EXTERN const gchar* math_equation_get_base_label (MathEquation* self);
VALA_EXTERN void math_equation_set_base_label (MathEquation* self,
                                   const gchar* value);
VALA_EXTERN gchar* math_equation_get_status (MathEquation* self);
VALA_EXTERN void math_equation_set_status (MathEquation* self,
                               const gchar* value);
VALA_EXTERN guint math_equation_get_error_token_start (MathEquation* self);
VALA_EXTERN guint math_equation_get_error_token_end (MathEquation* self);
VALA_EXTERN gboolean math_equation_get_is_empty (MathEquation* self);
VALA_EXTERN gboolean math_equation_get_is_result (MathEquation* self);
VALA_EXTERN gboolean math_equation_get_is_sign_radix (MathEquation* self);
VALA_EXTERN gchar* math_equation_get_equation (MathEquation* self);
VALA_EXTERN Number* math_equation_get_number (MathEquation* self);
VALA_EXTERN NumberMode math_equation_get_number_mode (MathEquation* self);
VALA_EXTERN void math_equation_set_number_mode (MathEquation* self,
                                    NumberMode value);
VALA_EXTERN Number* math_equation_get_answer (MathEquation* self);
VALA_EXTERN gint math_function_name_compare_func (MathFunction* function1,
                                      MathFunction* function2);
VALA_EXTERN gboolean math_function_name_equal_func (MathFunction* function1,
                                        MathFunction* function2);
VALA_EXTERN MathFunction* math_function_new (const gchar* function_name,
                                 gchar** arguments,
                                 gint arguments_length1,
                                 const gchar* expression,
                                 const gchar* description);
VALA_EXTERN MathFunction* math_function_construct (GType object_type,
                                       const gchar* function_name,
                                       gchar** arguments,
                                       gint arguments_length1,
                                       const gchar* expression,
                                       const gchar* description);
VALA_EXTERN Number* math_function_evaluate (MathFunction* self,
                                Number** args,
                                gint args_length1,
                                Parser* root_parser);
VALA_EXTERN gboolean math_function_validate (MathFunction* self,
                                 Parser* root_parser);
VALA_EXTERN gboolean math_function_is_custom_function (MathFunction* self);
VALA_EXTERN const gchar* math_function_get_name (MathFunction* self);
VALA_EXTERN gchar** math_function_get_arguments (MathFunction* self,
                                     gint* result_length1);
VALA_EXTERN const gchar* math_function_get_expression (MathFunction* self);
VALA_EXTERN const gchar* math_function_get_description (MathFunction* self);
VALA_EXTERN GType expression_parser_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ExpressionParser, parser_unref)
VALA_EXTERN ExpressionParser* expression_parser_new (const gchar* expression,
                                         Parser* root_parser);
VALA_EXTERN ExpressionParser* expression_parser_construct (GType object_type,
                                               const gchar* expression,
                                               Parser* root_parser);
VALA_EXTERN GType built_in_math_function_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (BuiltInMathFunction, g_object_unref)
VALA_EXTERN BuiltInMathFunction* built_in_math_function_new (const gchar* function_name,
                                                 const gchar* description,
                                                 gchar** arguments,
                                                 gint arguments_length1);
VALA_EXTERN BuiltInMathFunction* built_in_math_function_construct (GType object_type,
                                                       const gchar* function_name,
                                                       const gchar* description,
                                                       gchar** arguments,
                                                       gint arguments_length1);
VALA_EXTERN MathVariables* math_variables_new (void);
VALA_EXTERN MathVariables* math_variables_construct (GType object_type);
VALA_EXTERN gchar** math_variables_get_names (MathVariables* self,
                                  gint* result_length1);
VALA_EXTERN gchar** math_variables_variables_eligible_for_autocompletion (MathVariables* self,
                                                              const gchar* text,
                                                              gint* result_length1);
VALA_EXTERN void math_variables_set (MathVariables* self,
                         const gchar* name,
                         Number* value);
VALA_EXTERN Number* math_variables_get (MathVariables* self,
                            const gchar* name);
VALA_EXTERN void math_variables_delete (MathVariables* self,
                            const gchar* name);
VALA_EXTERN Number* number_new_integer (gint64 real,
                            gint64 imag);
VALA_EXTERN Number* number_construct_integer (GType object_type,
                                  gint64 real,
                                  gint64 imag);
VALA_EXTERN Number* number_new_unsigned_integer (guint64 real,
                                     guint64 imag);
VALA_EXTERN Number* number_construct_unsigned_integer (GType object_type,
                                           guint64 real,
                                           guint64 imag);
VALA_EXTERN Number* number_new_fraction (gint64 numerator,
                             gint64 denominator);
VALA_EXTERN Number* number_construct_fraction (GType object_type,
                                   gint64 numerator,
                                   gint64 denominator);
VALA_EXTERN Number* number_new_mpreal (__mpfr_struct* real,
                           __mpfr_struct* imag);
VALA_EXTERN Number* number_construct_mpreal (GType object_type,
                                 __mpfr_struct* real,
                                 __mpfr_struct* imag);
VALA_EXTERN Number* number_new_float (gfloat real,
                          gfloat imag);
VALA_EXTERN Number* number_construct_float (GType object_type,
                                gfloat real,
                                gfloat imag);
VALA_EXTERN Number* number_new_double (gdouble real,
                           gdouble imag);
VALA_EXTERN Number* number_construct_double (GType object_type,
                                 gdouble real,
                                 gdouble imag);
VALA_EXTERN Number* number_new_complex (Number* r,
                            Number* i);
VALA_EXTERN Number* number_construct_complex (GType object_type,
                                  Number* r,
                                  Number* i);
VALA_EXTERN Number* number_new_polar (Number* r,
                          Number* theta,
                          AngleUnit unit);
VALA_EXTERN Number* number_construct_polar (GType object_type,
                                Number* r,
                                Number* theta,
                                AngleUnit unit);
VALA_EXTERN Number* number_new_eulers (void);
VALA_EXTERN Number* number_construct_eulers (GType object_type);
VALA_EXTERN Number* number_new_i (void);
VALA_EXTERN Number* number_construct_i (GType object_type);
VALA_EXTERN Number* number_new_pi (void);
VALA_EXTERN Number* number_construct_pi (GType object_type);
VALA_EXTERN Number* number_new_tau (void);
VALA_EXTERN Number* number_construct_tau (GType object_type);
VALA_EXTERN Number* number_new_random (void);
VALA_EXTERN Number* number_construct_random (GType object_type);
VALA_EXTERN gint64 number_to_integer (Number* self);
VALA_EXTERN guint64 number_to_unsigned_integer (Number* self);
VALA_EXTERN gfloat number_to_float (Number* self);
VALA_EXTERN gdouble number_to_double (Number* self);
VALA_EXTERN void number_set_force_float (Number* self,
                             gboolean force_float);
VALA_EXTERN gboolean number_is_zero (Number* self);
VALA_EXTERN gboolean number_is_negative (Number* self);
VALA_EXTERN gboolean number_is_integer (Number* self);
VALA_EXTERN gboolean number_is_natural (Number* self);
VALA_EXTERN gboolean number_is_float (Number* self);
VALA_EXTERN gboolean number_is_finite (Number* self);
VALA_EXTERN gboolean number_is_complex (Number* self);
VALA_EXTERN gboolean number_is_180n_degrees (Number* self,
                                 AngleUnit unit);
VALA_EXTERN gboolean number_is_180n_plus_90_degrees (Number* self,
                                         AngleUnit unit);
VALA_EXTERN gboolean number_is_overflow (Number* self,
                             gint wordlen,
                             gboolean may_be_negative);
VALA_EXTERN void number_check_flags (void);
VALA_EXTERN gboolean number_equals (Number* self,
                        Number* y);
VALA_EXTERN gint number_compare (Number* self,
                     Number* y);
VALA_EXTERN Number* number_kronecker_delta (Number* self,
                                Number* y);
VALA_EXTERN Number* number_sgn (Number* self);
VALA_EXTERN Number* number_invert_sign (Number* self);
VALA_EXTERN Number* number_abs (Number* self);
VALA_EXTERN Number* number_arg (Number* self,
                    AngleUnit unit);
VALA_EXTERN Number* number_conjugate (Number* self);
VALA_EXTERN Number* number_real_component (Number* self);
VALA_EXTERN Number* number_imaginary_component (Number* self);
VALA_EXTERN Number* number_integer_component (Number* self);
VALA_EXTERN Number* number_fractional_component (Number* self);
VALA_EXTERN Number* number_fractional_part (Number* self);
VALA_EXTERN Number* number_floor (Number* self);
VALA_EXTERN Number* number_ceiling (Number* self);
VALA_EXTERN Number* number_round (Number* self);
VALA_EXTERN Number* number_reciprocal (Number* self);
VALA_EXTERN Number* number_epowy (Number* self);
VALA_EXTERN Number* number_xpowy (Number* self,
                      Number* y);
VALA_EXTERN Number* number_xpowy_integer (Number* self,
                              gint64 n);
VALA_EXTERN Number* number_root (Number* self,
                     gint64 n);
VALA_EXTERN Number* number_sqrt (Number* self);
VALA_EXTERN Number* number_ln (Number* self);
VALA_EXTERN Number* number_logarithm (Number* self,
                          Number* n);
VALA_EXTERN Number* number_factorial (Number* self);
VALA_EXTERN Number* number_add (Number* self,
                    Number* y);
VALA_EXTERN Number* number_subtract (Number* self,
                         Number* y);
VALA_EXTERN Number* number_multiply (Number* self,
                         Number* y);
VALA_EXTERN Number* number_multiply_integer (Number* self,
                                 gint64 y);
VALA_EXTERN Number* number_divide (Number* self,
                       Number* y);
VALA_EXTERN Number* number_divide_integer (Number* self,
                               gint64 y);
VALA_EXTERN Number* number_modulus_divide (Number* self,
                               Number* y);
VALA_EXTERN Number* number_modular_exponentiation (Number* self,
                                       Number* exp,
                                       Number* mod);
VALA_EXTERN Number* number_sin (Number* self,
                    AngleUnit unit);
VALA_EXTERN Number* number_cos (Number* self,
                    AngleUnit unit);
VALA_EXTERN Number* number_tan (Number* self,
                    AngleUnit unit);
VALA_EXTERN Number* number_asin (Number* self,
                     AngleUnit unit);
VALA_EXTERN Number* number_acos (Number* self,
                     AngleUnit unit);
VALA_EXTERN Number* number_atan (Number* self,
                     AngleUnit unit);
VALA_EXTERN Number* number_sinh (Number* self);
VALA_EXTERN Number* number_cosh (Number* self);
VALA_EXTERN Number* number_tanh (Number* self);
VALA_EXTERN Number* number_asinh (Number* self);
VALA_EXTERN Number* number_acosh (Number* self);
VALA_EXTERN Number* number_atanh (Number* self);
VALA_EXTERN Number* number_and (Number* self,
                    Number* y);
VALA_EXTERN Number* number_nand (Number* self,
                     Number* y,
                     gint wordlen);
VALA_EXTERN Number* number_or (Number* self,
                   Number* y);
VALA_EXTERN Number* number_nor (Number* self,
                    Number* y,
                    gint wordlen);
VALA_EXTERN Number* number_xor (Number* self,
                    Number* y);
VALA_EXTERN Number* number_xnor (Number* self,
                     Number* y,
                     gint wordlen);
VALA_EXTERN Number* number_not (Number* self,
                    gint wordlen);
VALA_EXTERN Number* number_left_shift (Number* self,
                           Number* count,
                           gint wordlen);
VALA_EXTERN Number* number_right_shift (Number* self,
                            Number* count,
                            gint wordlen);
VALA_EXTERN Number* number_unsigned_right_shift (Number* self,
                                     Number* count,
                                     gint wordlen);
VALA_EXTERN Number* number_twos_complement (Number* self,
                                gint wordlen);
VALA_EXTERN Number* number_swap_endianness (Number* self,
                                gint wordlen);
VALA_EXTERN Number* number_combination (Number* self,
                            Number* r);
VALA_EXTERN Number* number_permutation (Number* self,
                            Number* r);
VALA_EXTERN Number* number_gcd (Number** args,
                    gint args_length1);
VALA_EXTERN Number* number_lcm (Number** args,
                    gint args_length1);
VALA_EXTERN Number* number_sum (Number** args,
                    gint args_length1);
VALA_EXTERN Number* number_sum_squares (Number** args,
                            gint args_length1);
VALA_EXTERN Number* number_median (Number** args,
                       gint args_length1);
VALA_EXTERN Number* number_min (Number** args,
                    gint args_length1);
VALA_EXTERN Number* number_max (Number** args,
                    gint args_length1);
VALA_EXTERN Number* number_variance (Number** args,
                         gint args_length1,
                         gboolean is_sample);
VALA_EXTERN GList* number_factorize (Number* self);
VALA_EXTERN GList* number_factorize_uint64 (Number* self,
                                guint64 n);
VALA_EXTERN Number* number_new (void);
VALA_EXTERN Number* number_construct (GType object_type);
VALA_EXTERN mpfr_prec_t number_get_precision (void);
VALA_EXTERN void number_set_precision (mpfr_prec_t value);
VALA_EXTERN const gchar* number_get_error (void);
VALA_EXTERN void number_set_error (const gchar* value);
VALA_EXTERN Number* mp_set_from_string (const gchar* str,
                            gint default_base,
                            gboolean may_have_prefix);
VALA_EXTERN Serializer* serializer_new (DisplayFormat format,
                            gint number_base,
                            gint trailing_digits);
VALA_EXTERN Serializer* serializer_construct (GType object_type,
                                  DisplayFormat format,
                                  gint number_base,
                                  gint trailing_digits);
VALA_EXTERN gchar* serializer_to_string (Serializer* self,
                             Number* x);
VALA_EXTERN gchar* serializer_to_dms_string (Serializer* self,
                                 Number* number);
VALA_EXTERN Number* serializer_from_string (Serializer* self,
                                const gchar* str);
VALA_EXTERN gint serializer_get_base (Serializer* self);
VALA_EXTERN void serializer_set_base (Serializer* self,
                          gint number_base);
VALA_EXTERN guint serializer_get_representation_base (Serializer* self);
VALA_EXTERN void serializer_set_representation_base (Serializer* self,
                                         guint representation_base);
VALA_EXTERN gunichar serializer_get_radix (Serializer* self);
VALA_EXTERN void serializer_set_radix (Serializer* self,
                           gunichar radix);
VALA_EXTERN gunichar serializer_get_thousands_separator (Serializer* self);
VALA_EXTERN void serializer_set_thousands_separator (Serializer* self,
                                         gunichar separator);
VALA_EXTERN gboolean serializer_is_thousands_separator (Serializer* self,
                                            gunichar c);
VALA_EXTERN gint serializer_get_thousands_separator_count (Serializer* self);
VALA_EXTERN void serializer_set_thousands_separator_count (Serializer* self,
                                               gint count);
VALA_EXTERN gboolean serializer_get_show_thousands_separators (Serializer* self);
VALA_EXTERN void serializer_set_show_thousands_separators (Serializer* self,
                                               gboolean visible);
VALA_EXTERN gboolean serializer_get_show_trailing_zeroes (Serializer* self);
VALA_EXTERN void serializer_set_show_trailing_zeroes (Serializer* self,
                                          gboolean visible);
VALA_EXTERN gint serializer_get_leading_digits (Serializer* self);
VALA_EXTERN void serializer_set_leading_digits (Serializer* self,
                                    gint leading_digits);
VALA_EXTERN gint serializer_get_trailing_digits (Serializer* self);
VALA_EXTERN void serializer_set_trailing_digits (Serializer* self,
                                     gint trailing_digits);
VALA_EXTERN DisplayFormat serializer_get_number_format (Serializer* self);
VALA_EXTERN void serializer_set_number_format (Serializer* self,
                                   DisplayFormat format);
VALA_EXTERN const gchar* serializer_get_error (Serializer* self);
VALA_EXTERN void serializer_set_error (Serializer* self,
                           const gchar* value);
VALA_EXTERN gboolean serializer_get_check_fixed_max (Serializer* self);
VALA_EXTERN void serializer_set_check_fixed_max (Serializer* self,
                                     gboolean value);
VALA_EXTERN Number* serializer_get_fixed_max (void);
VALA_EXTERN void serializer_set_fixed_max (Number* value);
VALA_EXTERN GType unit_manager_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (UnitManager, g_object_unref)
VALA_EXTERN UnitManager* unit_manager_new (void);
VALA_EXTERN UnitManager* unit_manager_construct (GType object_type);
VALA_EXTERN UnitManager* unit_manager_get_default (void);
VALA_EXTERN GType unit_category_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (UnitCategory, g_object_unref)
VALA_EXTERN UnitCategory* unit_manager_add_category (UnitManager* self,
                                         const gchar* name,
                                         const gchar* display_name);
VALA_EXTERN GList* unit_manager_get_categories (UnitManager* self);
VALA_EXTERN UnitCategory* unit_manager_get_category (UnitManager* self,
                                         const gchar* category);
VALA_EXTERN UnitCategory* unit_manager_get_category_of_unit (UnitManager* self,
                                                 const gchar* name);
VALA_EXTERN Unit* unit_manager_get_unit_by_name (UnitManager* self,
                                     const gchar* name);
VALA_EXTERN Unit* unit_manager_get_unit_by_symbol (UnitManager* self,
                                       const gchar* symbol);
VALA_EXTERN Unit* unit_manager_get_defined_unit (UnitManager* self,
                                     const gchar* name);
VALA_EXTERN Number* unit_manager_convert_by_symbol (UnitManager* self,
                                        Number* x,
                                        const gchar* x_symbol,
                                        const gchar* z_symbol,
                                        Unit** x_unit,
                                        Unit** z_unit);
VALA_EXTERN UnitCategory* unit_category_new (const gchar* name,
                                 const gchar* display_name);
VALA_EXTERN UnitCategory* unit_category_construct (GType object_type,
                                       const gchar* name,
                                       const gchar* display_name);
VALA_EXTERN void unit_category_add_unit (UnitCategory* self,
                             Unit* unit);
VALA_EXTERN Unit* unit_category_get_unit_by_name (UnitCategory* self,
                                      const gchar* name,
                                      gboolean case_sensitive);
VALA_EXTERN Unit* unit_category_get_unit_by_symbol (UnitCategory* self,
                                        const gchar* symbol,
                                        gboolean case_sensitive);
VALA_EXTERN GList* unit_category_get_units (UnitCategory* self);
VALA_EXTERN Number* unit_category_convert (UnitCategory* self,
                               Number* x,
                               Unit* x_units,
                               Unit* z_units);
VALA_EXTERN gchar* unit_category_get_name (UnitCategory* self);
VALA_EXTERN gchar* unit_category_get_display_name (UnitCategory* self);
VALA_EXTERN Unit* unit_new (const gchar* name,
                const gchar* display_name,
                const gchar* from_function,
                const gchar* to_function,
                const gchar* symbols);
VALA_EXTERN Unit* unit_construct (GType object_type,
                      const gchar* name,
                      const gchar* display_name,
                      const gchar* from_function,
                      const gchar* to_function,
                      const gchar* symbols);
VALA_EXTERN gboolean unit_matches_symbol (Unit* self,
                              const gchar* symbol,
                              gboolean case_sensitive);
VALA_EXTERN GList* unit_get_symbols (Unit* self);
VALA_EXTERN Number* unit_convert_from (Unit* self,
                           Number* x);
VALA_EXTERN Number* unit_convert_to (Unit* self,
                         Number* x);
VALA_EXTERN gchar* unit_get_name (Unit* self);
VALA_EXTERN gchar* unit_get_display_name (Unit* self);
VALA_EXTERN GType imf_currency_provider_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ImfCurrencyProvider, g_object_unref)
VALA_EXTERN ImfCurrencyProvider* imf_currency_provider_new (CurrencyManager* _currency_manager);
VALA_EXTERN ImfCurrencyProvider* imf_currency_provider_construct (GType object_type,
                                                      CurrencyManager* _currency_manager);
VALA_EXTERN GType offline_imf_currency_provider_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OfflineImfCurrencyProvider, g_object_unref)
VALA_EXTERN OfflineImfCurrencyProvider* offline_imf_currency_provider_new (CurrencyManager* _currency_manager,
                                                               const gchar* source_file);
VALA_EXTERN OfflineImfCurrencyProvider* offline_imf_currency_provider_construct (GType object_type,
                                                                     CurrencyManager* _currency_manager,
                                                                     const gchar* source_file);
VALA_EXTERN GType ecb_currency_provider_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EcbCurrencyProvider, g_object_unref)
VALA_EXTERN EcbCurrencyProvider* ecb_currency_provider_new (CurrencyManager* _currency_manager);
VALA_EXTERN EcbCurrencyProvider* ecb_currency_provider_construct (GType object_type,
                                                      CurrencyManager* _currency_manager);
VALA_EXTERN GType un_currency_provider_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (UnCurrencyProvider, g_object_unref)
VALA_EXTERN UnCurrencyProvider* un_currency_provider_new (CurrencyManager* _currency_manager);
VALA_EXTERN UnCurrencyProvider* un_currency_provider_construct (GType object_type,
                                                    CurrencyManager* _currency_manager);
VALA_EXTERN GType bc_currency_provider_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (BCCurrencyProvider, g_object_unref)
VALA_EXTERN BCCurrencyProvider* bc_currency_provider_new (CurrencyManager* _currency_manager,
                                              const gchar* currency,
                                              const gchar* currency_filename);
VALA_EXTERN BCCurrencyProvider* bc_currency_provider_construct (GType object_type,
                                                    CurrencyManager* _currency_manager,
                                                    const gchar* currency,
                                                    const gchar* currency_filename);

G_END_DECLS

#endif
