
#ifndef __VALACCODE_H__
#define __VALACCODE_H__

#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <gee.h>

G_BEGIN_DECLS


#define VALA_TYPE_CCODE_NODE (vala_ccode_node_get_type ())
#define VALA_CCODE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_NODE, ValaCCodeNode))
#define VALA_CCODE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_NODE, ValaCCodeNodeClass))
#define VALA_IS_CCODE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_NODE))
#define VALA_IS_CCODE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_NODE))
#define VALA_CCODE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_NODE, ValaCCodeNodeClass))

typedef struct _ValaCCodeNode ValaCCodeNode;
typedef struct _ValaCCodeNodeClass ValaCCodeNodeClass;
typedef struct _ValaCCodeNodePrivate ValaCCodeNodePrivate;

#define VALA_TYPE_CCODE_WRITER (vala_ccode_writer_get_type ())
#define VALA_CCODE_WRITER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_WRITER, ValaCCodeWriter))
#define VALA_CCODE_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_WRITER, ValaCCodeWriterClass))
#define VALA_IS_CCODE_WRITER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_WRITER))
#define VALA_IS_CCODE_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_WRITER))
#define VALA_CCODE_WRITER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_WRITER, ValaCCodeWriterClass))

typedef struct _ValaCCodeWriter ValaCCodeWriter;
typedef struct _ValaCCodeWriterClass ValaCCodeWriterClass;

#define VALA_TYPE_CCODE_EXPRESSION (vala_ccode_expression_get_type ())
#define VALA_CCODE_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression))
#define VALA_CCODE_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpressionClass))
#define VALA_IS_CCODE_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_EXPRESSION))
#define VALA_IS_CCODE_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_EXPRESSION))
#define VALA_CCODE_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpressionClass))

typedef struct _ValaCCodeExpression ValaCCodeExpression;
typedef struct _ValaCCodeExpressionClass ValaCCodeExpressionClass;
typedef struct _ValaCCodeExpressionPrivate ValaCCodeExpressionPrivate;

#define VALA_TYPE_CCODE_ASSIGNMENT (vala_ccode_assignment_get_type ())
#define VALA_CCODE_ASSIGNMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ASSIGNMENT, ValaCCodeAssignment))
#define VALA_CCODE_ASSIGNMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ASSIGNMENT, ValaCCodeAssignmentClass))
#define VALA_IS_CCODE_ASSIGNMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ASSIGNMENT))
#define VALA_IS_CCODE_ASSIGNMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ASSIGNMENT))
#define VALA_CCODE_ASSIGNMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ASSIGNMENT, ValaCCodeAssignmentClass))

typedef struct _ValaCCodeAssignment ValaCCodeAssignment;
typedef struct _ValaCCodeAssignmentClass ValaCCodeAssignmentClass;
typedef struct _ValaCCodeAssignmentPrivate ValaCCodeAssignmentPrivate;

#define VALA_TYPE_CCODE_ASSIGNMENT_OPERATOR (vala_ccode_assignment_operator_get_type ())

#define VALA_TYPE_CCODE_BINARY_EXPRESSION (vala_ccode_binary_expression_get_type ())
#define VALA_CCODE_BINARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_BINARY_EXPRESSION, ValaCCodeBinaryExpression))
#define VALA_CCODE_BINARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_BINARY_EXPRESSION, ValaCCodeBinaryExpressionClass))
#define VALA_IS_CCODE_BINARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_BINARY_EXPRESSION))
#define VALA_IS_CCODE_BINARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_BINARY_EXPRESSION))
#define VALA_CCODE_BINARY_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_BINARY_EXPRESSION, ValaCCodeBinaryExpressionClass))

typedef struct _ValaCCodeBinaryExpression ValaCCodeBinaryExpression;
typedef struct _ValaCCodeBinaryExpressionClass ValaCCodeBinaryExpressionClass;
typedef struct _ValaCCodeBinaryExpressionPrivate ValaCCodeBinaryExpressionPrivate;

#define VALA_TYPE_CCODE_BINARY_OPERATOR (vala_ccode_binary_operator_get_type ())

#define VALA_TYPE_CCODE_STATEMENT (vala_ccode_statement_get_type ())
#define VALA_CCODE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_STATEMENT, ValaCCodeStatement))
#define VALA_CCODE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_STATEMENT, ValaCCodeStatementClass))
#define VALA_IS_CCODE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_STATEMENT))
#define VALA_IS_CCODE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_STATEMENT))
#define VALA_CCODE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_STATEMENT, ValaCCodeStatementClass))

typedef struct _ValaCCodeStatement ValaCCodeStatement;
typedef struct _ValaCCodeStatementClass ValaCCodeStatementClass;
typedef struct _ValaCCodeStatementPrivate ValaCCodeStatementPrivate;

#define VALA_TYPE_CCODE_BLOCK (vala_ccode_block_get_type ())
#define VALA_CCODE_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_BLOCK, ValaCCodeBlock))
#define VALA_CCODE_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_BLOCK, ValaCCodeBlockClass))
#define VALA_IS_CCODE_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_BLOCK))
#define VALA_IS_CCODE_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_BLOCK))
#define VALA_CCODE_BLOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_BLOCK, ValaCCodeBlockClass))

typedef struct _ValaCCodeBlock ValaCCodeBlock;
typedef struct _ValaCCodeBlockClass ValaCCodeBlockClass;
typedef struct _ValaCCodeBlockPrivate ValaCCodeBlockPrivate;

#define VALA_TYPE_CCODE_BREAK_STATEMENT (vala_ccode_break_statement_get_type ())
#define VALA_CCODE_BREAK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_BREAK_STATEMENT, ValaCCodeBreakStatement))
#define VALA_CCODE_BREAK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_BREAK_STATEMENT, ValaCCodeBreakStatementClass))
#define VALA_IS_CCODE_BREAK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_BREAK_STATEMENT))
#define VALA_IS_CCODE_BREAK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_BREAK_STATEMENT))
#define VALA_CCODE_BREAK_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_BREAK_STATEMENT, ValaCCodeBreakStatementClass))

typedef struct _ValaCCodeBreakStatement ValaCCodeBreakStatement;
typedef struct _ValaCCodeBreakStatementClass ValaCCodeBreakStatementClass;
typedef struct _ValaCCodeBreakStatementPrivate ValaCCodeBreakStatementPrivate;

#define VALA_TYPE_CCODE_CASE_STATEMENT (vala_ccode_case_statement_get_type ())
#define VALA_CCODE_CASE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_CASE_STATEMENT, ValaCCodeCaseStatement))
#define VALA_CCODE_CASE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_CASE_STATEMENT, ValaCCodeCaseStatementClass))
#define VALA_IS_CCODE_CASE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_CASE_STATEMENT))
#define VALA_IS_CCODE_CASE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_CASE_STATEMENT))
#define VALA_CCODE_CASE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_CASE_STATEMENT, ValaCCodeCaseStatementClass))

typedef struct _ValaCCodeCaseStatement ValaCCodeCaseStatement;
typedef struct _ValaCCodeCaseStatementClass ValaCCodeCaseStatementClass;
typedef struct _ValaCCodeCaseStatementPrivate ValaCCodeCaseStatementPrivate;

#define VALA_TYPE_CCODE_CAST_EXPRESSION (vala_ccode_cast_expression_get_type ())
#define VALA_CCODE_CAST_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_CAST_EXPRESSION, ValaCCodeCastExpression))
#define VALA_CCODE_CAST_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_CAST_EXPRESSION, ValaCCodeCastExpressionClass))
#define VALA_IS_CCODE_CAST_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_CAST_EXPRESSION))
#define VALA_IS_CCODE_CAST_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_CAST_EXPRESSION))
#define VALA_CCODE_CAST_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_CAST_EXPRESSION, ValaCCodeCastExpressionClass))

typedef struct _ValaCCodeCastExpression ValaCCodeCastExpression;
typedef struct _ValaCCodeCastExpressionClass ValaCCodeCastExpressionClass;
typedef struct _ValaCCodeCastExpressionPrivate ValaCCodeCastExpressionPrivate;

#define VALA_TYPE_CCODE_COMMA_EXPRESSION (vala_ccode_comma_expression_get_type ())
#define VALA_CCODE_COMMA_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_COMMA_EXPRESSION, ValaCCodeCommaExpression))
#define VALA_CCODE_COMMA_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_COMMA_EXPRESSION, ValaCCodeCommaExpressionClass))
#define VALA_IS_CCODE_COMMA_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_COMMA_EXPRESSION))
#define VALA_IS_CCODE_COMMA_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_COMMA_EXPRESSION))
#define VALA_CCODE_COMMA_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_COMMA_EXPRESSION, ValaCCodeCommaExpressionClass))

typedef struct _ValaCCodeCommaExpression ValaCCodeCommaExpression;
typedef struct _ValaCCodeCommaExpressionClass ValaCCodeCommaExpressionClass;
typedef struct _ValaCCodeCommaExpressionPrivate ValaCCodeCommaExpressionPrivate;

#define VALA_TYPE_CCODE_COMMENT (vala_ccode_comment_get_type ())
#define VALA_CCODE_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_COMMENT, ValaCCodeComment))
#define VALA_CCODE_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_COMMENT, ValaCCodeCommentClass))
#define VALA_IS_CCODE_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_COMMENT))
#define VALA_IS_CCODE_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_COMMENT))
#define VALA_CCODE_COMMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_COMMENT, ValaCCodeCommentClass))

typedef struct _ValaCCodeComment ValaCCodeComment;
typedef struct _ValaCCodeCommentClass ValaCCodeCommentClass;
typedef struct _ValaCCodeCommentPrivate ValaCCodeCommentPrivate;

#define VALA_TYPE_CCODE_CONDITIONAL_EXPRESSION (vala_ccode_conditional_expression_get_type ())
#define VALA_CCODE_CONDITIONAL_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_CONDITIONAL_EXPRESSION, ValaCCodeConditionalExpression))
#define VALA_CCODE_CONDITIONAL_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_CONDITIONAL_EXPRESSION, ValaCCodeConditionalExpressionClass))
#define VALA_IS_CCODE_CONDITIONAL_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_CONDITIONAL_EXPRESSION))
#define VALA_IS_CCODE_CONDITIONAL_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_CONDITIONAL_EXPRESSION))
#define VALA_CCODE_CONDITIONAL_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_CONDITIONAL_EXPRESSION, ValaCCodeConditionalExpressionClass))

typedef struct _ValaCCodeConditionalExpression ValaCCodeConditionalExpression;
typedef struct _ValaCCodeConditionalExpressionClass ValaCCodeConditionalExpressionClass;
typedef struct _ValaCCodeConditionalExpressionPrivate ValaCCodeConditionalExpressionPrivate;

#define VALA_TYPE_CCODE_CONSTANT (vala_ccode_constant_get_type ())
#define VALA_CCODE_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_CONSTANT, ValaCCodeConstant))
#define VALA_CCODE_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_CONSTANT, ValaCCodeConstantClass))
#define VALA_IS_CCODE_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_CONSTANT))
#define VALA_IS_CCODE_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_CONSTANT))
#define VALA_CCODE_CONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_CONSTANT, ValaCCodeConstantClass))

typedef struct _ValaCCodeConstant ValaCCodeConstant;
typedef struct _ValaCCodeConstantClass ValaCCodeConstantClass;
typedef struct _ValaCCodeConstantPrivate ValaCCodeConstantPrivate;

#define VALA_TYPE_CCODE_CONTINUE_STATEMENT (vala_ccode_continue_statement_get_type ())
#define VALA_CCODE_CONTINUE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_CONTINUE_STATEMENT, ValaCCodeContinueStatement))
#define VALA_CCODE_CONTINUE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_CONTINUE_STATEMENT, ValaCCodeContinueStatementClass))
#define VALA_IS_CCODE_CONTINUE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_CONTINUE_STATEMENT))
#define VALA_IS_CCODE_CONTINUE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_CONTINUE_STATEMENT))
#define VALA_CCODE_CONTINUE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_CONTINUE_STATEMENT, ValaCCodeContinueStatementClass))

typedef struct _ValaCCodeContinueStatement ValaCCodeContinueStatement;
typedef struct _ValaCCodeContinueStatementClass ValaCCodeContinueStatementClass;
typedef struct _ValaCCodeContinueStatementPrivate ValaCCodeContinueStatementPrivate;

#define VALA_TYPE_CCODE_DECLARATION (vala_ccode_declaration_get_type ())
#define VALA_CCODE_DECLARATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_DECLARATION, ValaCCodeDeclaration))
#define VALA_CCODE_DECLARATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_DECLARATION, ValaCCodeDeclarationClass))
#define VALA_IS_CCODE_DECLARATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_DECLARATION))
#define VALA_IS_CCODE_DECLARATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_DECLARATION))
#define VALA_CCODE_DECLARATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_DECLARATION, ValaCCodeDeclarationClass))

typedef struct _ValaCCodeDeclaration ValaCCodeDeclaration;
typedef struct _ValaCCodeDeclarationClass ValaCCodeDeclarationClass;
typedef struct _ValaCCodeDeclarationPrivate ValaCCodeDeclarationPrivate;

#define VALA_TYPE_CCODE_DECLARATOR (vala_ccode_declarator_get_type ())
#define VALA_CCODE_DECLARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_DECLARATOR, ValaCCodeDeclarator))
#define VALA_CCODE_DECLARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_DECLARATOR, ValaCCodeDeclaratorClass))
#define VALA_IS_CCODE_DECLARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_DECLARATOR))
#define VALA_IS_CCODE_DECLARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_DECLARATOR))
#define VALA_CCODE_DECLARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_DECLARATOR, ValaCCodeDeclaratorClass))

typedef struct _ValaCCodeDeclarator ValaCCodeDeclarator;
typedef struct _ValaCCodeDeclaratorClass ValaCCodeDeclaratorClass;

#define VALA_TYPE_CCODE_MODIFIERS (vala_ccode_modifiers_get_type ())
typedef struct _ValaCCodeDeclaratorPrivate ValaCCodeDeclaratorPrivate;

#define VALA_TYPE_CCODE_DO_STATEMENT (vala_ccode_do_statement_get_type ())
#define VALA_CCODE_DO_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_DO_STATEMENT, ValaCCodeDoStatement))
#define VALA_CCODE_DO_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_DO_STATEMENT, ValaCCodeDoStatementClass))
#define VALA_IS_CCODE_DO_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_DO_STATEMENT))
#define VALA_IS_CCODE_DO_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_DO_STATEMENT))
#define VALA_CCODE_DO_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_DO_STATEMENT, ValaCCodeDoStatementClass))

typedef struct _ValaCCodeDoStatement ValaCCodeDoStatement;
typedef struct _ValaCCodeDoStatementClass ValaCCodeDoStatementClass;
typedef struct _ValaCCodeDoStatementPrivate ValaCCodeDoStatementPrivate;

#define VALA_TYPE_CCODE_EMPTY_STATEMENT (vala_ccode_empty_statement_get_type ())
#define VALA_CCODE_EMPTY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_EMPTY_STATEMENT, ValaCCodeEmptyStatement))
#define VALA_CCODE_EMPTY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_EMPTY_STATEMENT, ValaCCodeEmptyStatementClass))
#define VALA_IS_CCODE_EMPTY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_EMPTY_STATEMENT))
#define VALA_IS_CCODE_EMPTY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_EMPTY_STATEMENT))
#define VALA_CCODE_EMPTY_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_EMPTY_STATEMENT, ValaCCodeEmptyStatementClass))

typedef struct _ValaCCodeEmptyStatement ValaCCodeEmptyStatement;
typedef struct _ValaCCodeEmptyStatementClass ValaCCodeEmptyStatementClass;
typedef struct _ValaCCodeEmptyStatementPrivate ValaCCodeEmptyStatementPrivate;

#define VALA_TYPE_CCODE_ENUM (vala_ccode_enum_get_type ())
#define VALA_CCODE_ENUM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ENUM, ValaCCodeEnum))
#define VALA_CCODE_ENUM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ENUM, ValaCCodeEnumClass))
#define VALA_IS_CCODE_ENUM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ENUM))
#define VALA_IS_CCODE_ENUM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ENUM))
#define VALA_CCODE_ENUM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ENUM, ValaCCodeEnumClass))

typedef struct _ValaCCodeEnum ValaCCodeEnum;
typedef struct _ValaCCodeEnumClass ValaCCodeEnumClass;
typedef struct _ValaCCodeEnumPrivate ValaCCodeEnumPrivate;

#define VALA_TYPE_CCODE_ENUM_VALUE (vala_ccode_enum_value_get_type ())
#define VALA_CCODE_ENUM_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ENUM_VALUE, ValaCCodeEnumValue))
#define VALA_CCODE_ENUM_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ENUM_VALUE, ValaCCodeEnumValueClass))
#define VALA_IS_CCODE_ENUM_VALUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ENUM_VALUE))
#define VALA_IS_CCODE_ENUM_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ENUM_VALUE))
#define VALA_CCODE_ENUM_VALUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ENUM_VALUE, ValaCCodeEnumValueClass))

typedef struct _ValaCCodeEnumValue ValaCCodeEnumValue;
typedef struct _ValaCCodeEnumValueClass ValaCCodeEnumValueClass;
typedef struct _ValaCCodeEnumValuePrivate ValaCCodeEnumValuePrivate;

#define VALA_TYPE_CCODE_EXPRESSION_STATEMENT (vala_ccode_expression_statement_get_type ())
#define VALA_CCODE_EXPRESSION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_EXPRESSION_STATEMENT, ValaCCodeExpressionStatement))
#define VALA_CCODE_EXPRESSION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_EXPRESSION_STATEMENT, ValaCCodeExpressionStatementClass))
#define VALA_IS_CCODE_EXPRESSION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_EXPRESSION_STATEMENT))
#define VALA_IS_CCODE_EXPRESSION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_EXPRESSION_STATEMENT))
#define VALA_CCODE_EXPRESSION_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_EXPRESSION_STATEMENT, ValaCCodeExpressionStatementClass))

typedef struct _ValaCCodeExpressionStatement ValaCCodeExpressionStatement;
typedef struct _ValaCCodeExpressionStatementClass ValaCCodeExpressionStatementClass;
typedef struct _ValaCCodeExpressionStatementPrivate ValaCCodeExpressionStatementPrivate;

#define VALA_TYPE_CCODE_FORMAL_PARAMETER (vala_ccode_formal_parameter_get_type ())
#define VALA_CCODE_FORMAL_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_FORMAL_PARAMETER, ValaCCodeFormalParameter))
#define VALA_CCODE_FORMAL_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_FORMAL_PARAMETER, ValaCCodeFormalParameterClass))
#define VALA_IS_CCODE_FORMAL_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_FORMAL_PARAMETER))
#define VALA_IS_CCODE_FORMAL_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_FORMAL_PARAMETER))
#define VALA_CCODE_FORMAL_PARAMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_FORMAL_PARAMETER, ValaCCodeFormalParameterClass))

typedef struct _ValaCCodeFormalParameter ValaCCodeFormalParameter;
typedef struct _ValaCCodeFormalParameterClass ValaCCodeFormalParameterClass;
typedef struct _ValaCCodeFormalParameterPrivate ValaCCodeFormalParameterPrivate;

#define VALA_TYPE_CCODE_FOR_STATEMENT (vala_ccode_for_statement_get_type ())
#define VALA_CCODE_FOR_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_FOR_STATEMENT, ValaCCodeForStatement))
#define VALA_CCODE_FOR_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_FOR_STATEMENT, ValaCCodeForStatementClass))
#define VALA_IS_CCODE_FOR_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_FOR_STATEMENT))
#define VALA_IS_CCODE_FOR_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_FOR_STATEMENT))
#define VALA_CCODE_FOR_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_FOR_STATEMENT, ValaCCodeForStatementClass))

typedef struct _ValaCCodeForStatement ValaCCodeForStatement;
typedef struct _ValaCCodeForStatementClass ValaCCodeForStatementClass;
typedef struct _ValaCCodeForStatementPrivate ValaCCodeForStatementPrivate;

#define VALA_TYPE_CCODE_FRAGMENT (vala_ccode_fragment_get_type ())
#define VALA_CCODE_FRAGMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_FRAGMENT, ValaCCodeFragment))
#define VALA_CCODE_FRAGMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_FRAGMENT, ValaCCodeFragmentClass))
#define VALA_IS_CCODE_FRAGMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_FRAGMENT))
#define VALA_IS_CCODE_FRAGMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_FRAGMENT))
#define VALA_CCODE_FRAGMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_FRAGMENT, ValaCCodeFragmentClass))

typedef struct _ValaCCodeFragment ValaCCodeFragment;
typedef struct _ValaCCodeFragmentClass ValaCCodeFragmentClass;
typedef struct _ValaCCodeFragmentPrivate ValaCCodeFragmentPrivate;

#define VALA_TYPE_CCODE_FUNCTION (vala_ccode_function_get_type ())
#define VALA_CCODE_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_FUNCTION, ValaCCodeFunction))
#define VALA_CCODE_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_FUNCTION, ValaCCodeFunctionClass))
#define VALA_IS_CCODE_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_FUNCTION))
#define VALA_IS_CCODE_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_FUNCTION))
#define VALA_CCODE_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_FUNCTION, ValaCCodeFunctionClass))

typedef struct _ValaCCodeFunction ValaCCodeFunction;
typedef struct _ValaCCodeFunctionClass ValaCCodeFunctionClass;
typedef struct _ValaCCodeFunctionPrivate ValaCCodeFunctionPrivate;

#define VALA_TYPE_CCODE_FUNCTION_CALL (vala_ccode_function_call_get_type ())
#define VALA_CCODE_FUNCTION_CALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_FUNCTION_CALL, ValaCCodeFunctionCall))
#define VALA_CCODE_FUNCTION_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_FUNCTION_CALL, ValaCCodeFunctionCallClass))
#define VALA_IS_CCODE_FUNCTION_CALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_FUNCTION_CALL))
#define VALA_IS_CCODE_FUNCTION_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_FUNCTION_CALL))
#define VALA_CCODE_FUNCTION_CALL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_FUNCTION_CALL, ValaCCodeFunctionCallClass))

typedef struct _ValaCCodeFunctionCall ValaCCodeFunctionCall;
typedef struct _ValaCCodeFunctionCallClass ValaCCodeFunctionCallClass;
typedef struct _ValaCCodeFunctionCallPrivate ValaCCodeFunctionCallPrivate;

#define VALA_TYPE_CCODE_FUNCTION_DECLARATOR (vala_ccode_function_declarator_get_type ())
#define VALA_CCODE_FUNCTION_DECLARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_FUNCTION_DECLARATOR, ValaCCodeFunctionDeclarator))
#define VALA_CCODE_FUNCTION_DECLARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_FUNCTION_DECLARATOR, ValaCCodeFunctionDeclaratorClass))
#define VALA_IS_CCODE_FUNCTION_DECLARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_FUNCTION_DECLARATOR))
#define VALA_IS_CCODE_FUNCTION_DECLARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_FUNCTION_DECLARATOR))
#define VALA_CCODE_FUNCTION_DECLARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_FUNCTION_DECLARATOR, ValaCCodeFunctionDeclaratorClass))

typedef struct _ValaCCodeFunctionDeclarator ValaCCodeFunctionDeclarator;
typedef struct _ValaCCodeFunctionDeclaratorClass ValaCCodeFunctionDeclaratorClass;
typedef struct _ValaCCodeFunctionDeclaratorPrivate ValaCCodeFunctionDeclaratorPrivate;

#define VALA_TYPE_CCODE_GOTO_STATEMENT (vala_ccode_goto_statement_get_type ())
#define VALA_CCODE_GOTO_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_GOTO_STATEMENT, ValaCCodeGotoStatement))
#define VALA_CCODE_GOTO_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_GOTO_STATEMENT, ValaCCodeGotoStatementClass))
#define VALA_IS_CCODE_GOTO_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_GOTO_STATEMENT))
#define VALA_IS_CCODE_GOTO_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_GOTO_STATEMENT))
#define VALA_CCODE_GOTO_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_GOTO_STATEMENT, ValaCCodeGotoStatementClass))

typedef struct _ValaCCodeGotoStatement ValaCCodeGotoStatement;
typedef struct _ValaCCodeGotoStatementClass ValaCCodeGotoStatementClass;
typedef struct _ValaCCodeGotoStatementPrivate ValaCCodeGotoStatementPrivate;

#define VALA_TYPE_CCODE_IDENTIFIER (vala_ccode_identifier_get_type ())
#define VALA_CCODE_IDENTIFIER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_IDENTIFIER, ValaCCodeIdentifier))
#define VALA_CCODE_IDENTIFIER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_IDENTIFIER, ValaCCodeIdentifierClass))
#define VALA_IS_CCODE_IDENTIFIER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_IDENTIFIER))
#define VALA_IS_CCODE_IDENTIFIER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_IDENTIFIER))
#define VALA_CCODE_IDENTIFIER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_IDENTIFIER, ValaCCodeIdentifierClass))

typedef struct _ValaCCodeIdentifier ValaCCodeIdentifier;
typedef struct _ValaCCodeIdentifierClass ValaCCodeIdentifierClass;
typedef struct _ValaCCodeIdentifierPrivate ValaCCodeIdentifierPrivate;

#define VALA_TYPE_CCODE_IF_STATEMENT (vala_ccode_if_statement_get_type ())
#define VALA_CCODE_IF_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_IF_STATEMENT, ValaCCodeIfStatement))
#define VALA_CCODE_IF_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_IF_STATEMENT, ValaCCodeIfStatementClass))
#define VALA_IS_CCODE_IF_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_IF_STATEMENT))
#define VALA_IS_CCODE_IF_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_IF_STATEMENT))
#define VALA_CCODE_IF_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_IF_STATEMENT, ValaCCodeIfStatementClass))

typedef struct _ValaCCodeIfStatement ValaCCodeIfStatement;
typedef struct _ValaCCodeIfStatementClass ValaCCodeIfStatementClass;
typedef struct _ValaCCodeIfStatementPrivate ValaCCodeIfStatementPrivate;

#define VALA_TYPE_CCODE_INCLUDE_DIRECTIVE (vala_ccode_include_directive_get_type ())
#define VALA_CCODE_INCLUDE_DIRECTIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_INCLUDE_DIRECTIVE, ValaCCodeIncludeDirective))
#define VALA_CCODE_INCLUDE_DIRECTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_INCLUDE_DIRECTIVE, ValaCCodeIncludeDirectiveClass))
#define VALA_IS_CCODE_INCLUDE_DIRECTIVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_INCLUDE_DIRECTIVE))
#define VALA_IS_CCODE_INCLUDE_DIRECTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_INCLUDE_DIRECTIVE))
#define VALA_CCODE_INCLUDE_DIRECTIVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_INCLUDE_DIRECTIVE, ValaCCodeIncludeDirectiveClass))

typedef struct _ValaCCodeIncludeDirective ValaCCodeIncludeDirective;
typedef struct _ValaCCodeIncludeDirectiveClass ValaCCodeIncludeDirectiveClass;
typedef struct _ValaCCodeIncludeDirectivePrivate ValaCCodeIncludeDirectivePrivate;

#define VALA_TYPE_CCODE_INITIALIZER_LIST (vala_ccode_initializer_list_get_type ())
#define VALA_CCODE_INITIALIZER_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_INITIALIZER_LIST, ValaCCodeInitializerList))
#define VALA_CCODE_INITIALIZER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_INITIALIZER_LIST, ValaCCodeInitializerListClass))
#define VALA_IS_CCODE_INITIALIZER_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_INITIALIZER_LIST))
#define VALA_IS_CCODE_INITIALIZER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_INITIALIZER_LIST))
#define VALA_CCODE_INITIALIZER_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_INITIALIZER_LIST, ValaCCodeInitializerListClass))

typedef struct _ValaCCodeInitializerList ValaCCodeInitializerList;
typedef struct _ValaCCodeInitializerListClass ValaCCodeInitializerListClass;
typedef struct _ValaCCodeInitializerListPrivate ValaCCodeInitializerListPrivate;

#define VALA_TYPE_CCODE_LABEL (vala_ccode_label_get_type ())
#define VALA_CCODE_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_LABEL, ValaCCodeLabel))
#define VALA_CCODE_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_LABEL, ValaCCodeLabelClass))
#define VALA_IS_CCODE_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_LABEL))
#define VALA_IS_CCODE_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_LABEL))
#define VALA_CCODE_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_LABEL, ValaCCodeLabelClass))

typedef struct _ValaCCodeLabel ValaCCodeLabel;
typedef struct _ValaCCodeLabelClass ValaCCodeLabelClass;
typedef struct _ValaCCodeLabelPrivate ValaCCodeLabelPrivate;

#define VALA_TYPE_CCODE_LINE_DIRECTIVE (vala_ccode_line_directive_get_type ())
#define VALA_CCODE_LINE_DIRECTIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_LINE_DIRECTIVE, ValaCCodeLineDirective))
#define VALA_CCODE_LINE_DIRECTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_LINE_DIRECTIVE, ValaCCodeLineDirectiveClass))
#define VALA_IS_CCODE_LINE_DIRECTIVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_LINE_DIRECTIVE))
#define VALA_IS_CCODE_LINE_DIRECTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_LINE_DIRECTIVE))
#define VALA_CCODE_LINE_DIRECTIVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_LINE_DIRECTIVE, ValaCCodeLineDirectiveClass))

typedef struct _ValaCCodeLineDirective ValaCCodeLineDirective;
typedef struct _ValaCCodeLineDirectiveClass ValaCCodeLineDirectiveClass;
typedef struct _ValaCCodeLineDirectivePrivate ValaCCodeLineDirectivePrivate;

#define VALA_TYPE_CCODE_MACRO_REPLACEMENT (vala_ccode_macro_replacement_get_type ())
#define VALA_CCODE_MACRO_REPLACEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_MACRO_REPLACEMENT, ValaCCodeMacroReplacement))
#define VALA_CCODE_MACRO_REPLACEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_MACRO_REPLACEMENT, ValaCCodeMacroReplacementClass))
#define VALA_IS_CCODE_MACRO_REPLACEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_MACRO_REPLACEMENT))
#define VALA_IS_CCODE_MACRO_REPLACEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_MACRO_REPLACEMENT))
#define VALA_CCODE_MACRO_REPLACEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_MACRO_REPLACEMENT, ValaCCodeMacroReplacementClass))

typedef struct _ValaCCodeMacroReplacement ValaCCodeMacroReplacement;
typedef struct _ValaCCodeMacroReplacementClass ValaCCodeMacroReplacementClass;
typedef struct _ValaCCodeMacroReplacementPrivate ValaCCodeMacroReplacementPrivate;

#define VALA_TYPE_CCODE_MEMBER_ACCESS (vala_ccode_member_access_get_type ())
#define VALA_CCODE_MEMBER_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_MEMBER_ACCESS, ValaCCodeMemberAccess))
#define VALA_CCODE_MEMBER_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_MEMBER_ACCESS, ValaCCodeMemberAccessClass))
#define VALA_IS_CCODE_MEMBER_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_MEMBER_ACCESS))
#define VALA_IS_CCODE_MEMBER_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_MEMBER_ACCESS))
#define VALA_CCODE_MEMBER_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_MEMBER_ACCESS, ValaCCodeMemberAccessClass))

typedef struct _ValaCCodeMemberAccess ValaCCodeMemberAccess;
typedef struct _ValaCCodeMemberAccessClass ValaCCodeMemberAccessClass;
typedef struct _ValaCCodeMemberAccessPrivate ValaCCodeMemberAccessPrivate;

#define VALA_TYPE_CCODE_NEWLINE (vala_ccode_newline_get_type ())
#define VALA_CCODE_NEWLINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_NEWLINE, ValaCCodeNewline))
#define VALA_CCODE_NEWLINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_NEWLINE, ValaCCodeNewlineClass))
#define VALA_IS_CCODE_NEWLINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_NEWLINE))
#define VALA_IS_CCODE_NEWLINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_NEWLINE))
#define VALA_CCODE_NEWLINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_NEWLINE, ValaCCodeNewlineClass))

typedef struct _ValaCCodeNewline ValaCCodeNewline;
typedef struct _ValaCCodeNewlineClass ValaCCodeNewlineClass;
typedef struct _ValaCCodeNewlinePrivate ValaCCodeNewlinePrivate;

#define VALA_TYPE_CCODE_ONCE_SECTION (vala_ccode_once_section_get_type ())
#define VALA_CCODE_ONCE_SECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ONCE_SECTION, ValaCCodeOnceSection))
#define VALA_CCODE_ONCE_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ONCE_SECTION, ValaCCodeOnceSectionClass))
#define VALA_IS_CCODE_ONCE_SECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ONCE_SECTION))
#define VALA_IS_CCODE_ONCE_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ONCE_SECTION))
#define VALA_CCODE_ONCE_SECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ONCE_SECTION, ValaCCodeOnceSectionClass))

typedef struct _ValaCCodeOnceSection ValaCCodeOnceSection;
typedef struct _ValaCCodeOnceSectionClass ValaCCodeOnceSectionClass;
typedef struct _ValaCCodeOnceSectionPrivate ValaCCodeOnceSectionPrivate;

#define VALA_TYPE_CCODE_PARENTHESIZED_EXPRESSION (vala_ccode_parenthesized_expression_get_type ())
#define VALA_CCODE_PARENTHESIZED_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_PARENTHESIZED_EXPRESSION, ValaCCodeParenthesizedExpression))
#define VALA_CCODE_PARENTHESIZED_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_PARENTHESIZED_EXPRESSION, ValaCCodeParenthesizedExpressionClass))
#define VALA_IS_CCODE_PARENTHESIZED_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_PARENTHESIZED_EXPRESSION))
#define VALA_IS_CCODE_PARENTHESIZED_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_PARENTHESIZED_EXPRESSION))
#define VALA_CCODE_PARENTHESIZED_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_PARENTHESIZED_EXPRESSION, ValaCCodeParenthesizedExpressionClass))

typedef struct _ValaCCodeParenthesizedExpression ValaCCodeParenthesizedExpression;
typedef struct _ValaCCodeParenthesizedExpressionClass ValaCCodeParenthesizedExpressionClass;
typedef struct _ValaCCodeParenthesizedExpressionPrivate ValaCCodeParenthesizedExpressionPrivate;

#define VALA_TYPE_CCODE_RETURN_STATEMENT (vala_ccode_return_statement_get_type ())
#define VALA_CCODE_RETURN_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_RETURN_STATEMENT, ValaCCodeReturnStatement))
#define VALA_CCODE_RETURN_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_RETURN_STATEMENT, ValaCCodeReturnStatementClass))
#define VALA_IS_CCODE_RETURN_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_RETURN_STATEMENT))
#define VALA_IS_CCODE_RETURN_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_RETURN_STATEMENT))
#define VALA_CCODE_RETURN_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_RETURN_STATEMENT, ValaCCodeReturnStatementClass))

typedef struct _ValaCCodeReturnStatement ValaCCodeReturnStatement;
typedef struct _ValaCCodeReturnStatementClass ValaCCodeReturnStatementClass;
typedef struct _ValaCCodeReturnStatementPrivate ValaCCodeReturnStatementPrivate;

#define VALA_TYPE_CCODE_STRUCT (vala_ccode_struct_get_type ())
#define VALA_CCODE_STRUCT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_STRUCT, ValaCCodeStruct))
#define VALA_CCODE_STRUCT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_STRUCT, ValaCCodeStructClass))
#define VALA_IS_CCODE_STRUCT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_STRUCT))
#define VALA_IS_CCODE_STRUCT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_STRUCT))
#define VALA_CCODE_STRUCT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_STRUCT, ValaCCodeStructClass))

typedef struct _ValaCCodeStruct ValaCCodeStruct;
typedef struct _ValaCCodeStructClass ValaCCodeStructClass;
typedef struct _ValaCCodeStructPrivate ValaCCodeStructPrivate;

#define VALA_TYPE_CCODE_SWITCH_STATEMENT (vala_ccode_switch_statement_get_type ())
#define VALA_CCODE_SWITCH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_SWITCH_STATEMENT, ValaCCodeSwitchStatement))
#define VALA_CCODE_SWITCH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_SWITCH_STATEMENT, ValaCCodeSwitchStatementClass))
#define VALA_IS_CCODE_SWITCH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_SWITCH_STATEMENT))
#define VALA_IS_CCODE_SWITCH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_SWITCH_STATEMENT))
#define VALA_CCODE_SWITCH_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_SWITCH_STATEMENT, ValaCCodeSwitchStatementClass))

typedef struct _ValaCCodeSwitchStatement ValaCCodeSwitchStatement;
typedef struct _ValaCCodeSwitchStatementClass ValaCCodeSwitchStatementClass;
typedef struct _ValaCCodeSwitchStatementPrivate ValaCCodeSwitchStatementPrivate;

#define VALA_TYPE_CCODE_TYPE_DEFINITION (vala_ccode_type_definition_get_type ())
#define VALA_CCODE_TYPE_DEFINITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_TYPE_DEFINITION, ValaCCodeTypeDefinition))
#define VALA_CCODE_TYPE_DEFINITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_TYPE_DEFINITION, ValaCCodeTypeDefinitionClass))
#define VALA_IS_CCODE_TYPE_DEFINITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_TYPE_DEFINITION))
#define VALA_IS_CCODE_TYPE_DEFINITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_TYPE_DEFINITION))
#define VALA_CCODE_TYPE_DEFINITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_TYPE_DEFINITION, ValaCCodeTypeDefinitionClass))

typedef struct _ValaCCodeTypeDefinition ValaCCodeTypeDefinition;
typedef struct _ValaCCodeTypeDefinitionClass ValaCCodeTypeDefinitionClass;
typedef struct _ValaCCodeTypeDefinitionPrivate ValaCCodeTypeDefinitionPrivate;

#define VALA_TYPE_CCODE_UNARY_EXPRESSION (vala_ccode_unary_expression_get_type ())
#define VALA_CCODE_UNARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_UNARY_EXPRESSION, ValaCCodeUnaryExpression))
#define VALA_CCODE_UNARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_UNARY_EXPRESSION, ValaCCodeUnaryExpressionClass))
#define VALA_IS_CCODE_UNARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_UNARY_EXPRESSION))
#define VALA_IS_CCODE_UNARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_UNARY_EXPRESSION))
#define VALA_CCODE_UNARY_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_UNARY_EXPRESSION, ValaCCodeUnaryExpressionClass))

typedef struct _ValaCCodeUnaryExpression ValaCCodeUnaryExpression;
typedef struct _ValaCCodeUnaryExpressionClass ValaCCodeUnaryExpressionClass;
typedef struct _ValaCCodeUnaryExpressionPrivate ValaCCodeUnaryExpressionPrivate;

#define VALA_TYPE_CCODE_UNARY_OPERATOR (vala_ccode_unary_operator_get_type ())

#define VALA_TYPE_CCODE_VARIABLE_DECLARATOR (vala_ccode_variable_declarator_get_type ())
#define VALA_CCODE_VARIABLE_DECLARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_VARIABLE_DECLARATOR, ValaCCodeVariableDeclarator))
#define VALA_CCODE_VARIABLE_DECLARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_VARIABLE_DECLARATOR, ValaCCodeVariableDeclaratorClass))
#define VALA_IS_CCODE_VARIABLE_DECLARATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_VARIABLE_DECLARATOR))
#define VALA_IS_CCODE_VARIABLE_DECLARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_VARIABLE_DECLARATOR))
#define VALA_CCODE_VARIABLE_DECLARATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_VARIABLE_DECLARATOR, ValaCCodeVariableDeclaratorClass))

typedef struct _ValaCCodeVariableDeclarator ValaCCodeVariableDeclarator;
typedef struct _ValaCCodeVariableDeclaratorClass ValaCCodeVariableDeclaratorClass;
typedef struct _ValaCCodeVariableDeclaratorPrivate ValaCCodeVariableDeclaratorPrivate;

#define VALA_TYPE_CCODE_WHILE_STATEMENT (vala_ccode_while_statement_get_type ())
#define VALA_CCODE_WHILE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_WHILE_STATEMENT, ValaCCodeWhileStatement))
#define VALA_CCODE_WHILE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_WHILE_STATEMENT, ValaCCodeWhileStatementClass))
#define VALA_IS_CCODE_WHILE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_WHILE_STATEMENT))
#define VALA_IS_CCODE_WHILE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_WHILE_STATEMENT))
#define VALA_CCODE_WHILE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_WHILE_STATEMENT, ValaCCodeWhileStatementClass))

typedef struct _ValaCCodeWhileStatement ValaCCodeWhileStatement;
typedef struct _ValaCCodeWhileStatementClass ValaCCodeWhileStatementClass;
typedef struct _ValaCCodeWhileStatementPrivate ValaCCodeWhileStatementPrivate;
typedef struct _ValaCCodeWriterPrivate ValaCCodeWriterPrivate;

#define VALA_TYPE_CCODE_ELEMENT_ACCESS (vala_ccode_element_access_get_type ())
#define VALA_CCODE_ELEMENT_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_ELEMENT_ACCESS, ValaCCodeElementAccess))
#define VALA_CCODE_ELEMENT_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_ELEMENT_ACCESS, ValaCCodeElementAccessClass))
#define VALA_IS_CCODE_ELEMENT_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_ELEMENT_ACCESS))
#define VALA_IS_CCODE_ELEMENT_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_ELEMENT_ACCESS))
#define VALA_CCODE_ELEMENT_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_ELEMENT_ACCESS, ValaCCodeElementAccessClass))

typedef struct _ValaCCodeElementAccess ValaCCodeElementAccess;
typedef struct _ValaCCodeElementAccessClass ValaCCodeElementAccessClass;
typedef struct _ValaCCodeElementAccessPrivate ValaCCodeElementAccessPrivate;

/**
 * Represents a node in the C code tree.
 */
struct _ValaCCodeNode {
	GTypeInstance parent_instance;
	volatile int ref_count;
	ValaCCodeNodePrivate * priv;
};

struct _ValaCCodeNodeClass {
	GTypeClass parent_class;
	void (*finalize) (ValaCCodeNode *self);
	void (*write) (ValaCCodeNode* self, ValaCCodeWriter* writer);
	void (*write_declaration) (ValaCCodeNode* self, ValaCCodeWriter* writer);
	void (*write_combined) (ValaCCodeNode* self, ValaCCodeWriter* writer);
};

/**
 * Represents an expression node in the C code tree.
 */
struct _ValaCCodeExpression {
	ValaCCodeNode parent_instance;
	ValaCCodeExpressionPrivate * priv;
};

struct _ValaCCodeExpressionClass {
	ValaCCodeNodeClass parent_class;
	void (*write_inner) (ValaCCodeExpression* self, ValaCCodeWriter* writer);
};

/**
 * Represents an assignment expression in the C code.
 */
struct _ValaCCodeAssignment {
	ValaCCodeExpression parent_instance;
	ValaCCodeAssignmentPrivate * priv;
};

struct _ValaCCodeAssignmentClass {
	ValaCCodeExpressionClass parent_class;
};

typedef enum  {
	VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE,
	VALA_CCODE_ASSIGNMENT_OPERATOR_BITWISE_OR,
	VALA_CCODE_ASSIGNMENT_OPERATOR_BITWISE_AND,
	VALA_CCODE_ASSIGNMENT_OPERATOR_BITWISE_XOR,
	VALA_CCODE_ASSIGNMENT_OPERATOR_ADD,
	VALA_CCODE_ASSIGNMENT_OPERATOR_SUB,
	VALA_CCODE_ASSIGNMENT_OPERATOR_MUL,
	VALA_CCODE_ASSIGNMENT_OPERATOR_DIV,
	VALA_CCODE_ASSIGNMENT_OPERATOR_PERCENT,
	VALA_CCODE_ASSIGNMENT_OPERATOR_SHIFT_LEFT,
	VALA_CCODE_ASSIGNMENT_OPERATOR_SHIFT_RIGHT
} ValaCCodeAssignmentOperator;

/**
 * Represents an expression with two operands in C code.
 */
struct _ValaCCodeBinaryExpression {
	ValaCCodeExpression parent_instance;
	ValaCCodeBinaryExpressionPrivate * priv;
};

struct _ValaCCodeBinaryExpressionClass {
	ValaCCodeExpressionClass parent_class;
};

typedef enum  {
	VALA_CCODE_BINARY_OPERATOR_PLUS,
	VALA_CCODE_BINARY_OPERATOR_MINUS,
	VALA_CCODE_BINARY_OPERATOR_MUL,
	VALA_CCODE_BINARY_OPERATOR_DIV,
	VALA_CCODE_BINARY_OPERATOR_MOD,
	VALA_CCODE_BINARY_OPERATOR_SHIFT_LEFT,
	VALA_CCODE_BINARY_OPERATOR_SHIFT_RIGHT,
	VALA_CCODE_BINARY_OPERATOR_LESS_THAN,
	VALA_CCODE_BINARY_OPERATOR_GREATER_THAN,
	VALA_CCODE_BINARY_OPERATOR_LESS_THAN_OR_EQUAL,
	VALA_CCODE_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL,
	VALA_CCODE_BINARY_OPERATOR_EQUALITY,
	VALA_CCODE_BINARY_OPERATOR_INEQUALITY,
	VALA_CCODE_BINARY_OPERATOR_BITWISE_AND,
	VALA_CCODE_BINARY_OPERATOR_BITWISE_OR,
	VALA_CCODE_BINARY_OPERATOR_BITWISE_XOR,
	VALA_CCODE_BINARY_OPERATOR_AND,
	VALA_CCODE_BINARY_OPERATOR_OR
} ValaCCodeBinaryOperator;

/**
 * Represents a statement in the C code.
 */
struct _ValaCCodeStatement {
	ValaCCodeNode parent_instance;
	ValaCCodeStatementPrivate * priv;
};

struct _ValaCCodeStatementClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a C code block.
 */
struct _ValaCCodeBlock {
	ValaCCodeStatement parent_instance;
	ValaCCodeBlockPrivate * priv;
};

struct _ValaCCodeBlockClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a break statement in the C code.
 */
struct _ValaCCodeBreakStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeBreakStatementPrivate * priv;
};

struct _ValaCCodeBreakStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a case block in a switch statement in C code.
 */
struct _ValaCCodeCaseStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeCaseStatementPrivate * priv;
};

struct _ValaCCodeCaseStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a type cast in the generated C code.
 */
struct _ValaCCodeCastExpression {
	ValaCCodeExpression parent_instance;
	ValaCCodeCastExpressionPrivate * priv;
};

struct _ValaCCodeCastExpressionClass {
	ValaCCodeExpressionClass parent_class;
};

/**
 * Represents a comma separated expression list in the C code.
 */
struct _ValaCCodeCommaExpression {
	ValaCCodeExpression parent_instance;
	ValaCCodeCommaExpressionPrivate * priv;
};

struct _ValaCCodeCommaExpressionClass {
	ValaCCodeExpressionClass parent_class;
};

/**
 * Represents a comment in the C code.
 */
struct _ValaCCodeComment {
	ValaCCodeNode parent_instance;
	ValaCCodeCommentPrivate * priv;
};

struct _ValaCCodeCommentClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a conditional expression in C code.
 */
struct _ValaCCodeConditionalExpression {
	ValaCCodeExpression parent_instance;
	ValaCCodeConditionalExpressionPrivate * priv;
};

struct _ValaCCodeConditionalExpressionClass {
	ValaCCodeExpressionClass parent_class;
};

/**
 * A constant C expression.
 */
struct _ValaCCodeConstant {
	ValaCCodeExpression parent_instance;
	ValaCCodeConstantPrivate * priv;
};

struct _ValaCCodeConstantClass {
	ValaCCodeExpressionClass parent_class;
};

/**
 * Represents a continue statement in the C code.
 */
struct _ValaCCodeContinueStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeContinueStatementPrivate * priv;
};

struct _ValaCCodeContinueStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a local variable declaration in the C code.
 */
struct _ValaCCodeDeclaration {
	ValaCCodeStatement parent_instance;
	ValaCCodeDeclarationPrivate * priv;
};

struct _ValaCCodeDeclarationClass {
	ValaCCodeStatementClass parent_class;
};

typedef enum  {
	VALA_CCODE_MODIFIERS_NONE = 0,
	VALA_CCODE_MODIFIERS_STATIC = 1 << 0,
	VALA_CCODE_MODIFIERS_REGISTER = 1 << 1,
	VALA_CCODE_MODIFIERS_EXTERN = 1 << 2,
	VALA_CCODE_MODIFIERS_INLINE = 1 << 3,
	VALA_CCODE_MODIFIERS_VOLATILE = 1 << 4
} ValaCCodeModifiers;

/**
 * Represents a variable or function pointer declarator in the C code.
 */
struct _ValaCCodeDeclarator {
	ValaCCodeNode parent_instance;
	ValaCCodeDeclaratorPrivate * priv;
};

struct _ValaCCodeDeclaratorClass {
	ValaCCodeNodeClass parent_class;
	void (*write_initialization) (ValaCCodeDeclarator* self, ValaCCodeWriter* writer);
};

/**
 * Represents a do iteration statement in the C code.
 */
struct _ValaCCodeDoStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeDoStatementPrivate * priv;
};

struct _ValaCCodeDoStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents an empty statement in the C code.
 */
struct _ValaCCodeEmptyStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeEmptyStatementPrivate * priv;
};

struct _ValaCCodeEmptyStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents an enum in the C code.
 */
struct _ValaCCodeEnum {
	ValaCCodeNode parent_instance;
	ValaCCodeEnumPrivate * priv;
};

struct _ValaCCodeEnumClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents an enum value in the C code.
 */
struct _ValaCCodeEnumValue {
	ValaCCodeNode parent_instance;
	ValaCCodeEnumValuePrivate * priv;
};

struct _ValaCCodeEnumValueClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a C code statement that evaluates a given expression.
 */
struct _ValaCCodeExpressionStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeExpressionStatementPrivate * priv;
};

struct _ValaCCodeExpressionStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a formal parameter in a C method signature.
 */
struct _ValaCCodeFormalParameter {
	ValaCCodeNode parent_instance;
	ValaCCodeFormalParameterPrivate * priv;
};

struct _ValaCCodeFormalParameterClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a for iteration statement in the C code.
 */
struct _ValaCCodeForStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeForStatementPrivate * priv;
};

struct _ValaCCodeForStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a container for C code nodes.
 */
struct _ValaCCodeFragment {
	ValaCCodeNode parent_instance;
	ValaCCodeFragmentPrivate * priv;
};

struct _ValaCCodeFragmentClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a function declaration in the C code.
 */
struct _ValaCCodeFunction {
	ValaCCodeNode parent_instance;
	ValaCCodeFunctionPrivate * priv;
};

struct _ValaCCodeFunctionClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a function call in the C code.
 */
struct _ValaCCodeFunctionCall {
	ValaCCodeExpression parent_instance;
	ValaCCodeFunctionCallPrivate * priv;
};

struct _ValaCCodeFunctionCallClass {
	ValaCCodeExpressionClass parent_class;
};

/**
 * Represents a function pointer declarator in the C code.
 */
struct _ValaCCodeFunctionDeclarator {
	ValaCCodeDeclarator parent_instance;
	ValaCCodeFunctionDeclaratorPrivate * priv;
};

struct _ValaCCodeFunctionDeclaratorClass {
	ValaCCodeDeclaratorClass parent_class;
};

/**
 * Represents a goto statement in the C code.
 */
struct _ValaCCodeGotoStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeGotoStatementPrivate * priv;
};

struct _ValaCCodeGotoStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a identifier in the C code.
 */
struct _ValaCCodeIdentifier {
	ValaCCodeExpression parent_instance;
	ValaCCodeIdentifierPrivate * priv;
};

struct _ValaCCodeIdentifierClass {
	ValaCCodeExpressionClass parent_class;
};

/**
 * Represents an if selection statement in the C code.
 */
struct _ValaCCodeIfStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeIfStatementPrivate * priv;
};

struct _ValaCCodeIfStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents an include preprocessor directive in the C code.
 */
struct _ValaCCodeIncludeDirective {
	ValaCCodeNode parent_instance;
	ValaCCodeIncludeDirectivePrivate * priv;
};

struct _ValaCCodeIncludeDirectiveClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a struct or array initializer list in the C code.
 */
struct _ValaCCodeInitializerList {
	ValaCCodeExpression parent_instance;
	ValaCCodeInitializerListPrivate * priv;
};

struct _ValaCCodeInitializerListClass {
	ValaCCodeExpressionClass parent_class;
};

/**
 * Represents a label declaration in the C code.
 */
struct _ValaCCodeLabel {
	ValaCCodeStatement parent_instance;
	ValaCCodeLabelPrivate * priv;
};

struct _ValaCCodeLabelClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a line directive in the C code.
 */
struct _ValaCCodeLineDirective {
	ValaCCodeNode parent_instance;
	ValaCCodeLineDirectivePrivate * priv;
};

struct _ValaCCodeLineDirectiveClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a preprocessor macro replacement definition in the C code.
 */
struct _ValaCCodeMacroReplacement {
	ValaCCodeNode parent_instance;
	ValaCCodeMacroReplacementPrivate * priv;
};

struct _ValaCCodeMacroReplacementClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents an access to a struct member in the C code.
 */
struct _ValaCCodeMemberAccess {
	ValaCCodeExpression parent_instance;
	ValaCCodeMemberAccessPrivate * priv;
};

struct _ValaCCodeMemberAccessClass {
	ValaCCodeExpressionClass parent_class;
};

/**
 * Represents a line break in the C code.
 */
struct _ValaCCodeNewline {
	ValaCCodeNode parent_instance;
	ValaCCodeNewlinePrivate * priv;
};

struct _ValaCCodeNewlineClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a section that should only to processed once.
 */
struct _ValaCCodeOnceSection {
	ValaCCodeFragment parent_instance;
	ValaCCodeOnceSectionPrivate * priv;
};

struct _ValaCCodeOnceSectionClass {
	ValaCCodeFragmentClass parent_class;
};

/**
 * Represents a parenthesized expression in the C code.
 */
struct _ValaCCodeParenthesizedExpression {
	ValaCCodeExpression parent_instance;
	ValaCCodeParenthesizedExpressionPrivate * priv;
};

struct _ValaCCodeParenthesizedExpressionClass {
	ValaCCodeExpressionClass parent_class;
};

/**
 * Represents a return statement in the C code.
 */
struct _ValaCCodeReturnStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeReturnStatementPrivate * priv;
};

struct _ValaCCodeReturnStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a struct declaration in the C code.
 */
struct _ValaCCodeStruct {
	ValaCCodeNode parent_instance;
	ValaCCodeStructPrivate * priv;
};

struct _ValaCCodeStructClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents a switch selection statement in the C code.
 */
struct _ValaCCodeSwitchStatement {
	ValaCCodeBlock parent_instance;
	ValaCCodeSwitchStatementPrivate * priv;
};

struct _ValaCCodeSwitchStatementClass {
	ValaCCodeBlockClass parent_class;
};

/**
 * Represents a typedef in the C code.
 */
struct _ValaCCodeTypeDefinition {
	ValaCCodeNode parent_instance;
	ValaCCodeTypeDefinitionPrivate * priv;
};

struct _ValaCCodeTypeDefinitionClass {
	ValaCCodeNodeClass parent_class;
};

/**
 * Represents an expression with one operand in the C code.
 */
struct _ValaCCodeUnaryExpression {
	ValaCCodeExpression parent_instance;
	ValaCCodeUnaryExpressionPrivate * priv;
};

struct _ValaCCodeUnaryExpressionClass {
	ValaCCodeExpressionClass parent_class;
};

typedef enum  {
	VALA_CCODE_UNARY_OPERATOR_PLUS,
	VALA_CCODE_UNARY_OPERATOR_MINUS,
	VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION,
	VALA_CCODE_UNARY_OPERATOR_BITWISE_COMPLEMENT,
	VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION,
	VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF,
	VALA_CCODE_UNARY_OPERATOR_PREFIX_INCREMENT,
	VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT,
	VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT,
	VALA_CCODE_UNARY_OPERATOR_POSTFIX_DECREMENT
} ValaCCodeUnaryOperator;

/**
 * Represents a variable declarator in the C code.
 */
struct _ValaCCodeVariableDeclarator {
	ValaCCodeDeclarator parent_instance;
	ValaCCodeVariableDeclaratorPrivate * priv;
};

struct _ValaCCodeVariableDeclaratorClass {
	ValaCCodeDeclaratorClass parent_class;
};

/**
 * Represents a while iteration statement in the C code.
 */
struct _ValaCCodeWhileStatement {
	ValaCCodeStatement parent_instance;
	ValaCCodeWhileStatementPrivate * priv;
};

struct _ValaCCodeWhileStatementClass {
	ValaCCodeStatementClass parent_class;
};

/**
 * Represents a writer to write C source files.
 */
struct _ValaCCodeWriter {
	GTypeInstance parent_instance;
	volatile int ref_count;
	ValaCCodeWriterPrivate * priv;
};

struct _ValaCCodeWriterClass {
	GTypeClass parent_class;
	void (*finalize) (ValaCCodeWriter *self);
};

/**
 * Represents an access to an array member in the C code.
 */
struct _ValaCCodeElementAccess {
	ValaCCodeExpression parent_instance;
	ValaCCodeElementAccessPrivate * priv;
};

struct _ValaCCodeElementAccessClass {
	ValaCCodeExpressionClass parent_class;
};


gpointer vala_ccode_node_ref (gpointer instance);
void vala_ccode_node_unref (gpointer instance);
GParamSpec* vala_param_spec_ccode_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_ccode_node (GValue* value, gpointer v_object);
gpointer vala_value_get_ccode_node (const GValue* value);
GType vala_ccode_node_get_type (void);
gpointer vala_ccode_writer_ref (gpointer instance);
void vala_ccode_writer_unref (gpointer instance);
GParamSpec* vala_param_spec_ccode_writer (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_ccode_writer (GValue* value, gpointer v_object);
gpointer vala_value_get_ccode_writer (const GValue* value);
GType vala_ccode_writer_get_type (void);
GType vala_ccode_expression_get_type (void);
GType vala_ccode_assignment_get_type (void);
GType vala_ccode_assignment_operator_get_type (void);
ValaCCodeAssignment* vala_ccode_assignment_new (ValaCCodeExpression* l, ValaCCodeExpression* r, ValaCCodeAssignmentOperator op);
ValaCCodeAssignment* vala_ccode_assignment_construct (GType object_type, ValaCCodeExpression* l, ValaCCodeExpression* r, ValaCCodeAssignmentOperator op);
ValaCCodeExpression* vala_ccode_assignment_get_left (ValaCCodeAssignment* self);
void vala_ccode_assignment_set_left (ValaCCodeAssignment* self, ValaCCodeExpression* value);
ValaCCodeAssignmentOperator vala_ccode_assignment_get_operator (ValaCCodeAssignment* self);
void vala_ccode_assignment_set_operator (ValaCCodeAssignment* self, ValaCCodeAssignmentOperator value);
ValaCCodeExpression* vala_ccode_assignment_get_right (ValaCCodeAssignment* self);
void vala_ccode_assignment_set_right (ValaCCodeAssignment* self, ValaCCodeExpression* value);
GType vala_ccode_binary_expression_get_type (void);
GType vala_ccode_binary_operator_get_type (void);
ValaCCodeBinaryExpression* vala_ccode_binary_expression_new (ValaCCodeBinaryOperator op, ValaCCodeExpression* l, ValaCCodeExpression* r);
ValaCCodeBinaryExpression* vala_ccode_binary_expression_construct (GType object_type, ValaCCodeBinaryOperator op, ValaCCodeExpression* l, ValaCCodeExpression* r);
ValaCCodeBinaryOperator vala_ccode_binary_expression_get_operator (ValaCCodeBinaryExpression* self);
void vala_ccode_binary_expression_set_operator (ValaCCodeBinaryExpression* self, ValaCCodeBinaryOperator value);
ValaCCodeExpression* vala_ccode_binary_expression_get_left (ValaCCodeBinaryExpression* self);
void vala_ccode_binary_expression_set_left (ValaCCodeBinaryExpression* self, ValaCCodeExpression* value);
ValaCCodeExpression* vala_ccode_binary_expression_get_right (ValaCCodeBinaryExpression* self);
void vala_ccode_binary_expression_set_right (ValaCCodeBinaryExpression* self, ValaCCodeExpression* value);
GType vala_ccode_statement_get_type (void);
GType vala_ccode_block_get_type (void);
void vala_ccode_block_prepend_statement (ValaCCodeBlock* self, ValaCCodeNode* statement);
void vala_ccode_block_add_statement (ValaCCodeBlock* self, ValaCCodeNode* statement);
ValaCCodeBlock* vala_ccode_block_new (void);
ValaCCodeBlock* vala_ccode_block_construct (GType object_type);
gboolean vala_ccode_block_get_suppress_newline (ValaCCodeBlock* self);
void vala_ccode_block_set_suppress_newline (ValaCCodeBlock* self, gboolean value);
GType vala_ccode_break_statement_get_type (void);
ValaCCodeBreakStatement* vala_ccode_break_statement_new (void);
ValaCCodeBreakStatement* vala_ccode_break_statement_construct (GType object_type);
GType vala_ccode_case_statement_get_type (void);
ValaCCodeCaseStatement* vala_ccode_case_statement_new (ValaCCodeExpression* expression);
ValaCCodeCaseStatement* vala_ccode_case_statement_construct (GType object_type, ValaCCodeExpression* expression);
ValaCCodeExpression* vala_ccode_case_statement_get_expression (ValaCCodeCaseStatement* self);
void vala_ccode_case_statement_set_expression (ValaCCodeCaseStatement* self, ValaCCodeExpression* value);
GType vala_ccode_cast_expression_get_type (void);
ValaCCodeCastExpression* vala_ccode_cast_expression_new (ValaCCodeExpression* expr, const char* type);
ValaCCodeCastExpression* vala_ccode_cast_expression_construct (GType object_type, ValaCCodeExpression* expr, const char* type);
ValaCCodeExpression* vala_ccode_cast_expression_get_inner (ValaCCodeCastExpression* self);
void vala_ccode_cast_expression_set_inner (ValaCCodeCastExpression* self, ValaCCodeExpression* value);
const char* vala_ccode_cast_expression_get_type_name (ValaCCodeCastExpression* self);
void vala_ccode_cast_expression_set_type_name (ValaCCodeCastExpression* self, const char* value);
GType vala_ccode_comma_expression_get_type (void);
void vala_ccode_comma_expression_append_expression (ValaCCodeCommaExpression* self, ValaCCodeExpression* expr);
GeeList* vala_ccode_comma_expression_get_inner (ValaCCodeCommaExpression* self);
ValaCCodeCommaExpression* vala_ccode_comma_expression_new (void);
ValaCCodeCommaExpression* vala_ccode_comma_expression_construct (GType object_type);
GType vala_ccode_comment_get_type (void);
ValaCCodeComment* vala_ccode_comment_new (const char* _text);
ValaCCodeComment* vala_ccode_comment_construct (GType object_type, const char* _text);
const char* vala_ccode_comment_get_text (ValaCCodeComment* self);
void vala_ccode_comment_set_text (ValaCCodeComment* self, const char* value);
GType vala_ccode_conditional_expression_get_type (void);
ValaCCodeConditionalExpression* vala_ccode_conditional_expression_new (ValaCCodeExpression* cond, ValaCCodeExpression* true_expr, ValaCCodeExpression* false_expr);
ValaCCodeConditionalExpression* vala_ccode_conditional_expression_construct (GType object_type, ValaCCodeExpression* cond, ValaCCodeExpression* true_expr, ValaCCodeExpression* false_expr);
ValaCCodeExpression* vala_ccode_conditional_expression_get_condition (ValaCCodeConditionalExpression* self);
void vala_ccode_conditional_expression_set_condition (ValaCCodeConditionalExpression* self, ValaCCodeExpression* value);
ValaCCodeExpression* vala_ccode_conditional_expression_get_true_expression (ValaCCodeConditionalExpression* self);
void vala_ccode_conditional_expression_set_true_expression (ValaCCodeConditionalExpression* self, ValaCCodeExpression* value);
ValaCCodeExpression* vala_ccode_conditional_expression_get_false_expression (ValaCCodeConditionalExpression* self);
void vala_ccode_conditional_expression_set_false_expression (ValaCCodeConditionalExpression* self, ValaCCodeExpression* value);
GType vala_ccode_constant_get_type (void);
ValaCCodeConstant* vala_ccode_constant_new (const char* _name);
ValaCCodeConstant* vala_ccode_constant_construct (GType object_type, const char* _name);
const char* vala_ccode_constant_get_name (ValaCCodeConstant* self);
void vala_ccode_constant_set_name (ValaCCodeConstant* self, const char* value);
GType vala_ccode_continue_statement_get_type (void);
ValaCCodeContinueStatement* vala_ccode_continue_statement_new (void);
ValaCCodeContinueStatement* vala_ccode_continue_statement_construct (GType object_type);
GType vala_ccode_declaration_get_type (void);
ValaCCodeDeclaration* vala_ccode_declaration_new (const char* type_name);
ValaCCodeDeclaration* vala_ccode_declaration_construct (GType object_type, const char* type_name);
GType vala_ccode_declarator_get_type (void);
void vala_ccode_declaration_add_declarator (ValaCCodeDeclaration* self, ValaCCodeDeclarator* decl);
const char* vala_ccode_declaration_get_type_name (ValaCCodeDeclaration* self);
void vala_ccode_declaration_set_type_name (ValaCCodeDeclaration* self, const char* value);
GType vala_ccode_modifiers_get_type (void);
ValaCCodeModifiers vala_ccode_declaration_get_modifiers (ValaCCodeDeclaration* self);
void vala_ccode_declaration_set_modifiers (ValaCCodeDeclaration* self, ValaCCodeModifiers value);
void vala_ccode_declarator_write_initialization (ValaCCodeDeclarator* self, ValaCCodeWriter* writer);
GType vala_ccode_do_statement_get_type (void);
ValaCCodeDoStatement* vala_ccode_do_statement_new (ValaCCodeStatement* stmt, ValaCCodeExpression* cond);
ValaCCodeDoStatement* vala_ccode_do_statement_construct (GType object_type, ValaCCodeStatement* stmt, ValaCCodeExpression* cond);
ValaCCodeStatement* vala_ccode_do_statement_get_body (ValaCCodeDoStatement* self);
void vala_ccode_do_statement_set_body (ValaCCodeDoStatement* self, ValaCCodeStatement* value);
ValaCCodeExpression* vala_ccode_do_statement_get_condition (ValaCCodeDoStatement* self);
void vala_ccode_do_statement_set_condition (ValaCCodeDoStatement* self, ValaCCodeExpression* value);
GType vala_ccode_empty_statement_get_type (void);
ValaCCodeEmptyStatement* vala_ccode_empty_statement_new (void);
ValaCCodeEmptyStatement* vala_ccode_empty_statement_construct (GType object_type);
GType vala_ccode_enum_get_type (void);
ValaCCodeEnum* vala_ccode_enum_new (const char* name);
ValaCCodeEnum* vala_ccode_enum_construct (GType object_type, const char* name);
GType vala_ccode_enum_value_get_type (void);
void vala_ccode_enum_add_value (ValaCCodeEnum* self, ValaCCodeEnumValue* value);
const char* vala_ccode_enum_get_name (ValaCCodeEnum* self);
void vala_ccode_enum_set_name (ValaCCodeEnum* self, const char* value);
ValaCCodeEnumValue* vala_ccode_enum_value_new (const char* name, ValaCCodeExpression* value);
ValaCCodeEnumValue* vala_ccode_enum_value_construct (GType object_type, const char* name, ValaCCodeExpression* value);
const char* vala_ccode_enum_value_get_name (ValaCCodeEnumValue* self);
void vala_ccode_enum_value_set_name (ValaCCodeEnumValue* self, const char* value);
ValaCCodeExpression* vala_ccode_enum_value_get_value (ValaCCodeEnumValue* self);
void vala_ccode_enum_value_set_value (ValaCCodeEnumValue* self, ValaCCodeExpression* value);
void vala_ccode_expression_write_inner (ValaCCodeExpression* self, ValaCCodeWriter* writer);
GType vala_ccode_expression_statement_get_type (void);
ValaCCodeExpressionStatement* vala_ccode_expression_statement_new (ValaCCodeExpression* expr);
ValaCCodeExpressionStatement* vala_ccode_expression_statement_construct (GType object_type, ValaCCodeExpression* expr);
ValaCCodeExpression* vala_ccode_expression_statement_get_expression (ValaCCodeExpressionStatement* self);
void vala_ccode_expression_statement_set_expression (ValaCCodeExpressionStatement* self, ValaCCodeExpression* value);
GType vala_ccode_formal_parameter_get_type (void);
ValaCCodeFormalParameter* vala_ccode_formal_parameter_new (const char* n, const char* type);
ValaCCodeFormalParameter* vala_ccode_formal_parameter_construct (GType object_type, const char* n, const char* type);
ValaCCodeFormalParameter* vala_ccode_formal_parameter_new_with_ellipsis (void);
ValaCCodeFormalParameter* vala_ccode_formal_parameter_construct_with_ellipsis (GType object_type);
const char* vala_ccode_formal_parameter_get_name (ValaCCodeFormalParameter* self);
void vala_ccode_formal_parameter_set_name (ValaCCodeFormalParameter* self, const char* value);
const char* vala_ccode_formal_parameter_get_type_name (ValaCCodeFormalParameter* self);
void vala_ccode_formal_parameter_set_type_name (ValaCCodeFormalParameter* self, const char* value);
gboolean vala_ccode_formal_parameter_get_ellipsis (ValaCCodeFormalParameter* self);
void vala_ccode_formal_parameter_set_ellipsis (ValaCCodeFormalParameter* self, gboolean value);
GType vala_ccode_for_statement_get_type (void);
ValaCCodeForStatement* vala_ccode_for_statement_new (ValaCCodeExpression* condition, ValaCCodeStatement* body);
ValaCCodeForStatement* vala_ccode_for_statement_construct (GType object_type, ValaCCodeExpression* condition, ValaCCodeStatement* body);
void vala_ccode_for_statement_add_initializer (ValaCCodeForStatement* self, ValaCCodeExpression* expr);
void vala_ccode_for_statement_add_iterator (ValaCCodeForStatement* self, ValaCCodeExpression* expr);
ValaCCodeExpression* vala_ccode_for_statement_get_condition (ValaCCodeForStatement* self);
void vala_ccode_for_statement_set_condition (ValaCCodeForStatement* self, ValaCCodeExpression* value);
ValaCCodeStatement* vala_ccode_for_statement_get_body (ValaCCodeForStatement* self);
void vala_ccode_for_statement_set_body (ValaCCodeForStatement* self, ValaCCodeStatement* value);
GType vala_ccode_fragment_get_type (void);
void vala_ccode_fragment_append (ValaCCodeFragment* self, ValaCCodeNode* node);
GeeList* vala_ccode_fragment_get_children (ValaCCodeFragment* self);
ValaCCodeFragment* vala_ccode_fragment_new (void);
ValaCCodeFragment* vala_ccode_fragment_construct (GType object_type);
GType vala_ccode_function_get_type (void);
ValaCCodeFunction* vala_ccode_function_new (const char* name, const char* return_type);
ValaCCodeFunction* vala_ccode_function_construct (GType object_type, const char* name, const char* return_type);
void vala_ccode_function_add_parameter (ValaCCodeFunction* self, ValaCCodeFormalParameter* param);
ValaCCodeFunction* vala_ccode_function_copy (ValaCCodeFunction* self);
const char* vala_ccode_function_get_name (ValaCCodeFunction* self);
void vala_ccode_function_set_name (ValaCCodeFunction* self, const char* value);
ValaCCodeModifiers vala_ccode_function_get_modifiers (ValaCCodeFunction* self);
void vala_ccode_function_set_modifiers (ValaCCodeFunction* self, ValaCCodeModifiers value);
const char* vala_ccode_function_get_return_type (ValaCCodeFunction* self);
void vala_ccode_function_set_return_type (ValaCCodeFunction* self, const char* value);
ValaCCodeBlock* vala_ccode_function_get_block (ValaCCodeFunction* self);
void vala_ccode_function_set_block (ValaCCodeFunction* self, ValaCCodeBlock* value);
GType vala_ccode_function_call_get_type (void);
ValaCCodeFunctionCall* vala_ccode_function_call_new (ValaCCodeExpression* call);
ValaCCodeFunctionCall* vala_ccode_function_call_construct (GType object_type, ValaCCodeExpression* call);
void vala_ccode_function_call_add_argument (ValaCCodeFunctionCall* self, ValaCCodeExpression* expr);
void vala_ccode_function_call_insert_argument (ValaCCodeFunctionCall* self, gint index, ValaCCodeExpression* expr);
GeeList* vala_ccode_function_call_get_arguments (ValaCCodeFunctionCall* self);
ValaCCodeExpression* vala_ccode_function_call_get_call (ValaCCodeFunctionCall* self);
void vala_ccode_function_call_set_call (ValaCCodeFunctionCall* self, ValaCCodeExpression* value);
GType vala_ccode_function_declarator_get_type (void);
ValaCCodeFunctionDeclarator* vala_ccode_function_declarator_new (const char* name);
ValaCCodeFunctionDeclarator* vala_ccode_function_declarator_construct (GType object_type, const char* name);
void vala_ccode_function_declarator_add_parameter (ValaCCodeFunctionDeclarator* self, ValaCCodeFormalParameter* param);
const char* vala_ccode_function_declarator_get_name (ValaCCodeFunctionDeclarator* self);
void vala_ccode_function_declarator_set_name (ValaCCodeFunctionDeclarator* self, const char* value);
GType vala_ccode_goto_statement_get_type (void);
ValaCCodeGotoStatement* vala_ccode_goto_statement_new (const char* name);
ValaCCodeGotoStatement* vala_ccode_goto_statement_construct (GType object_type, const char* name);
const char* vala_ccode_goto_statement_get_name (ValaCCodeGotoStatement* self);
void vala_ccode_goto_statement_set_name (ValaCCodeGotoStatement* self, const char* value);
GType vala_ccode_identifier_get_type (void);
ValaCCodeIdentifier* vala_ccode_identifier_new (const char* _name);
ValaCCodeIdentifier* vala_ccode_identifier_construct (GType object_type, const char* _name);
const char* vala_ccode_identifier_get_name (ValaCCodeIdentifier* self);
void vala_ccode_identifier_set_name (ValaCCodeIdentifier* self, const char* value);
GType vala_ccode_if_statement_get_type (void);
ValaCCodeIfStatement* vala_ccode_if_statement_new (ValaCCodeExpression* cond, ValaCCodeStatement* true_stmt, ValaCCodeStatement* false_stmt);
ValaCCodeIfStatement* vala_ccode_if_statement_construct (GType object_type, ValaCCodeExpression* cond, ValaCCodeStatement* true_stmt, ValaCCodeStatement* false_stmt);
ValaCCodeExpression* vala_ccode_if_statement_get_condition (ValaCCodeIfStatement* self);
void vala_ccode_if_statement_set_condition (ValaCCodeIfStatement* self, ValaCCodeExpression* value);
ValaCCodeStatement* vala_ccode_if_statement_get_true_statement (ValaCCodeIfStatement* self);
void vala_ccode_if_statement_set_true_statement (ValaCCodeIfStatement* self, ValaCCodeStatement* value);
ValaCCodeStatement* vala_ccode_if_statement_get_false_statement (ValaCCodeIfStatement* self);
void vala_ccode_if_statement_set_false_statement (ValaCCodeIfStatement* self, ValaCCodeStatement* value);
gboolean vala_ccode_if_statement_get_else_if (ValaCCodeIfStatement* self);
void vala_ccode_if_statement_set_else_if (ValaCCodeIfStatement* self, gboolean value);
GType vala_ccode_include_directive_get_type (void);
ValaCCodeIncludeDirective* vala_ccode_include_directive_new (const char* _filename, gboolean _local);
ValaCCodeIncludeDirective* vala_ccode_include_directive_construct (GType object_type, const char* _filename, gboolean _local);
const char* vala_ccode_include_directive_get_filename (ValaCCodeIncludeDirective* self);
void vala_ccode_include_directive_set_filename (ValaCCodeIncludeDirective* self, const char* value);
gboolean vala_ccode_include_directive_get_local (ValaCCodeIncludeDirective* self);
void vala_ccode_include_directive_set_local (ValaCCodeIncludeDirective* self, gboolean value);
GType vala_ccode_initializer_list_get_type (void);
void vala_ccode_initializer_list_append (ValaCCodeInitializerList* self, ValaCCodeExpression* expr);
ValaCCodeInitializerList* vala_ccode_initializer_list_new (void);
ValaCCodeInitializerList* vala_ccode_initializer_list_construct (GType object_type);
GType vala_ccode_label_get_type (void);
ValaCCodeLabel* vala_ccode_label_new (const char* name);
ValaCCodeLabel* vala_ccode_label_construct (GType object_type, const char* name);
const char* vala_ccode_label_get_name (ValaCCodeLabel* self);
void vala_ccode_label_set_name (ValaCCodeLabel* self, const char* value);
GType vala_ccode_line_directive_get_type (void);
ValaCCodeLineDirective* vala_ccode_line_directive_new (const char* _filename, gint _line);
ValaCCodeLineDirective* vala_ccode_line_directive_construct (GType object_type, const char* _filename, gint _line);
const char* vala_ccode_line_directive_get_filename (ValaCCodeLineDirective* self);
void vala_ccode_line_directive_set_filename (ValaCCodeLineDirective* self, const char* value);
gint vala_ccode_line_directive_get_line_number (ValaCCodeLineDirective* self);
void vala_ccode_line_directive_set_line_number (ValaCCodeLineDirective* self, gint value);
GType vala_ccode_macro_replacement_get_type (void);
ValaCCodeMacroReplacement* vala_ccode_macro_replacement_new (const char* name, const char* replacement);
ValaCCodeMacroReplacement* vala_ccode_macro_replacement_construct (GType object_type, const char* name, const char* replacement);
ValaCCodeMacroReplacement* vala_ccode_macro_replacement_new_with_expression (const char* name, ValaCCodeExpression* replacement_expression);
ValaCCodeMacroReplacement* vala_ccode_macro_replacement_construct_with_expression (GType object_type, const char* name, ValaCCodeExpression* replacement_expression);
const char* vala_ccode_macro_replacement_get_name (ValaCCodeMacroReplacement* self);
void vala_ccode_macro_replacement_set_name (ValaCCodeMacroReplacement* self, const char* value);
const char* vala_ccode_macro_replacement_get_replacement (ValaCCodeMacroReplacement* self);
void vala_ccode_macro_replacement_set_replacement (ValaCCodeMacroReplacement* self, const char* value);
ValaCCodeExpression* vala_ccode_macro_replacement_get_replacement_expression (ValaCCodeMacroReplacement* self);
void vala_ccode_macro_replacement_set_replacement_expression (ValaCCodeMacroReplacement* self, ValaCCodeExpression* value);
GType vala_ccode_member_access_get_type (void);
ValaCCodeMemberAccess* vala_ccode_member_access_new (ValaCCodeExpression* container, const char* member, gboolean pointer);
ValaCCodeMemberAccess* vala_ccode_member_access_construct (GType object_type, ValaCCodeExpression* container, const char* member, gboolean pointer);
ValaCCodeMemberAccess* vala_ccode_member_access_new_pointer (ValaCCodeExpression* container, const char* member);
ValaCCodeMemberAccess* vala_ccode_member_access_construct_pointer (GType object_type, ValaCCodeExpression* container, const char* member);
ValaCCodeExpression* vala_ccode_member_access_get_inner (ValaCCodeMemberAccess* self);
void vala_ccode_member_access_set_inner (ValaCCodeMemberAccess* self, ValaCCodeExpression* value);
const char* vala_ccode_member_access_get_member_name (ValaCCodeMemberAccess* self);
void vala_ccode_member_access_set_member_name (ValaCCodeMemberAccess* self, const char* value);
gboolean vala_ccode_member_access_get_is_pointer (ValaCCodeMemberAccess* self);
void vala_ccode_member_access_set_is_pointer (ValaCCodeMemberAccess* self, gboolean value);
GType vala_ccode_newline_get_type (void);
ValaCCodeNewline* vala_ccode_newline_new (void);
ValaCCodeNewline* vala_ccode_newline_construct (GType object_type);
void vala_ccode_node_write (ValaCCodeNode* self, ValaCCodeWriter* writer);
void vala_ccode_node_write_declaration (ValaCCodeNode* self, ValaCCodeWriter* writer);
void vala_ccode_node_write_combined (ValaCCodeNode* self, ValaCCodeWriter* writer);
ValaCCodeLineDirective* vala_ccode_node_get_line (ValaCCodeNode* self);
void vala_ccode_node_set_line (ValaCCodeNode* self, ValaCCodeLineDirective* value);
GType vala_ccode_once_section_get_type (void);
ValaCCodeOnceSection* vala_ccode_once_section_new (const char* def);
ValaCCodeOnceSection* vala_ccode_once_section_construct (GType object_type, const char* def);
const char* vala_ccode_once_section_get_define (ValaCCodeOnceSection* self);
void vala_ccode_once_section_set_define (ValaCCodeOnceSection* self, const char* value);
GType vala_ccode_parenthesized_expression_get_type (void);
ValaCCodeParenthesizedExpression* vala_ccode_parenthesized_expression_new (ValaCCodeExpression* expr);
ValaCCodeParenthesizedExpression* vala_ccode_parenthesized_expression_construct (GType object_type, ValaCCodeExpression* expr);
ValaCCodeExpression* vala_ccode_parenthesized_expression_get_inner (ValaCCodeParenthesizedExpression* self);
void vala_ccode_parenthesized_expression_set_inner (ValaCCodeParenthesizedExpression* self, ValaCCodeExpression* value);
GType vala_ccode_return_statement_get_type (void);
ValaCCodeReturnStatement* vala_ccode_return_statement_new (ValaCCodeExpression* expr);
ValaCCodeReturnStatement* vala_ccode_return_statement_construct (GType object_type, ValaCCodeExpression* expr);
ValaCCodeExpression* vala_ccode_return_statement_get_return_expression (ValaCCodeReturnStatement* self);
void vala_ccode_return_statement_set_return_expression (ValaCCodeReturnStatement* self, ValaCCodeExpression* value);
GType vala_ccode_struct_get_type (void);
ValaCCodeStruct* vala_ccode_struct_new (const char* name);
ValaCCodeStruct* vala_ccode_struct_construct (GType object_type, const char* name);
void vala_ccode_struct_add_declaration (ValaCCodeStruct* self, ValaCCodeDeclaration* decl);
void vala_ccode_struct_add_field (ValaCCodeStruct* self, const char* type_name, const char* name);
const char* vala_ccode_struct_get_name (ValaCCodeStruct* self);
void vala_ccode_struct_set_name (ValaCCodeStruct* self, const char* value);
GType vala_ccode_switch_statement_get_type (void);
ValaCCodeSwitchStatement* vala_ccode_switch_statement_new (ValaCCodeExpression* expression);
ValaCCodeSwitchStatement* vala_ccode_switch_statement_construct (GType object_type, ValaCCodeExpression* expression);
ValaCCodeExpression* vala_ccode_switch_statement_get_expression (ValaCCodeSwitchStatement* self);
void vala_ccode_switch_statement_set_expression (ValaCCodeSwitchStatement* self, ValaCCodeExpression* value);
GType vala_ccode_type_definition_get_type (void);
ValaCCodeTypeDefinition* vala_ccode_type_definition_new (const char* type, ValaCCodeDeclarator* decl);
ValaCCodeTypeDefinition* vala_ccode_type_definition_construct (GType object_type, const char* type, ValaCCodeDeclarator* decl);
const char* vala_ccode_type_definition_get_type_name (ValaCCodeTypeDefinition* self);
void vala_ccode_type_definition_set_type_name (ValaCCodeTypeDefinition* self, const char* value);
ValaCCodeDeclarator* vala_ccode_type_definition_get_declarator (ValaCCodeTypeDefinition* self);
void vala_ccode_type_definition_set_declarator (ValaCCodeTypeDefinition* self, ValaCCodeDeclarator* value);
GType vala_ccode_unary_expression_get_type (void);
GType vala_ccode_unary_operator_get_type (void);
ValaCCodeUnaryExpression* vala_ccode_unary_expression_new (ValaCCodeUnaryOperator op, ValaCCodeExpression* expr);
ValaCCodeUnaryExpression* vala_ccode_unary_expression_construct (GType object_type, ValaCCodeUnaryOperator op, ValaCCodeExpression* expr);
ValaCCodeUnaryOperator vala_ccode_unary_expression_get_operator (ValaCCodeUnaryExpression* self);
void vala_ccode_unary_expression_set_operator (ValaCCodeUnaryExpression* self, ValaCCodeUnaryOperator value);
ValaCCodeExpression* vala_ccode_unary_expression_get_inner (ValaCCodeUnaryExpression* self);
void vala_ccode_unary_expression_set_inner (ValaCCodeUnaryExpression* self, ValaCCodeExpression* value);
GType vala_ccode_variable_declarator_get_type (void);
ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new (const char* name, ValaCCodeExpression* initializer, const char* declarator_suffix);
ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType object_type, const char* name, ValaCCodeExpression* initializer, const char* declarator_suffix);
const char* vala_ccode_variable_declarator_get_name (ValaCCodeVariableDeclarator* self);
void vala_ccode_variable_declarator_set_name (ValaCCodeVariableDeclarator* self, const char* value);
ValaCCodeExpression* vala_ccode_variable_declarator_get_initializer (ValaCCodeVariableDeclarator* self);
void vala_ccode_variable_declarator_set_initializer (ValaCCodeVariableDeclarator* self, ValaCCodeExpression* value);
const char* vala_ccode_variable_declarator_get_declarator_suffix (ValaCCodeVariableDeclarator* self);
void vala_ccode_variable_declarator_set_declarator_suffix (ValaCCodeVariableDeclarator* self, const char* value);
GType vala_ccode_while_statement_get_type (void);
ValaCCodeWhileStatement* vala_ccode_while_statement_new (ValaCCodeExpression* cond, ValaCCodeStatement* stmt);
ValaCCodeWhileStatement* vala_ccode_while_statement_construct (GType object_type, ValaCCodeExpression* cond, ValaCCodeStatement* stmt);
ValaCCodeExpression* vala_ccode_while_statement_get_condition (ValaCCodeWhileStatement* self);
void vala_ccode_while_statement_set_condition (ValaCCodeWhileStatement* self, ValaCCodeExpression* value);
ValaCCodeStatement* vala_ccode_while_statement_get_body (ValaCCodeWhileStatement* self);
void vala_ccode_while_statement_set_body (ValaCCodeWhileStatement* self, ValaCCodeStatement* value);
ValaCCodeWriter* vala_ccode_writer_new (const char* filename);
ValaCCodeWriter* vala_ccode_writer_construct (GType object_type, const char* filename);
gboolean vala_ccode_writer_open (ValaCCodeWriter* self);
void vala_ccode_writer_close (ValaCCodeWriter* self);
void vala_ccode_writer_write_indent (ValaCCodeWriter* self, ValaCCodeLineDirective* line);
void vala_ccode_writer_write_string (ValaCCodeWriter* self, const char* s);
void vala_ccode_writer_write_newline (ValaCCodeWriter* self);
void vala_ccode_writer_write_begin_block (ValaCCodeWriter* self);
void vala_ccode_writer_write_end_block (ValaCCodeWriter* self);
void vala_ccode_writer_write_comment (ValaCCodeWriter* self, const char* text);
const char* vala_ccode_writer_get_filename (ValaCCodeWriter* self);
void vala_ccode_writer_set_filename (ValaCCodeWriter* self, const char* value);
gboolean vala_ccode_writer_get_line_directives (ValaCCodeWriter* self);
void vala_ccode_writer_set_line_directives (ValaCCodeWriter* self, gboolean value);
gboolean vala_ccode_writer_get_bol (ValaCCodeWriter* self);
GType vala_ccode_element_access_get_type (void);
ValaCCodeElementAccess* vala_ccode_element_access_new (ValaCCodeExpression* cont, ValaCCodeExpression* i);
ValaCCodeElementAccess* vala_ccode_element_access_construct (GType object_type, ValaCCodeExpression* cont, ValaCCodeExpression* i);
ValaCCodeExpression* vala_ccode_element_access_get_container (ValaCCodeElementAccess* self);
void vala_ccode_element_access_set_container (ValaCCodeElementAccess* self, ValaCCodeExpression* value);
ValaCCodeExpression* vala_ccode_element_access_get_index (ValaCCodeElementAccess* self);
void vala_ccode_element_access_set_index (ValaCCodeElementAccess* self, ValaCCodeExpression* value);


G_END_DECLS

#endif
