/* bake.h generated by valac 0.36.3, the Vala compiler, do not modify */


#ifndef __BAKE_H__
#define __BAKE_H__

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

G_BEGIN_DECLS


#define BAKE_TYPE_BUILDER (bake_builder_get_type ())
#define BAKE_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_BUILDER, BakeBuilder))
#define BAKE_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_BUILDER, BakeBuilderClass))
#define BAKE_IS_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_BUILDER))
#define BAKE_IS_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_BUILDER))
#define BAKE_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_BUILDER, BakeBuilderClass))

typedef struct _BakeBuilder BakeBuilder;
typedef struct _BakeBuilderClass BakeBuilderClass;
typedef struct _BakeBuilderPrivate BakeBuilderPrivate;

#define BAKE_TYPE_BUILDER_FLAGS (bake_builder_flags_get_type ())

#define BAKE_TYPE_RECIPE (bake_recipe_get_type ())
#define BAKE_RECIPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_RECIPE, BakeRecipe))
#define BAKE_RECIPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_RECIPE, BakeRecipeClass))
#define BAKE_IS_RECIPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_RECIPE))
#define BAKE_IS_RECIPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_RECIPE))
#define BAKE_RECIPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_RECIPE, BakeRecipeClass))

typedef struct _BakeRecipe BakeRecipe;
typedef struct _BakeRecipeClass BakeRecipeClass;

#define BAKE_TYPE_COOKBOOK (bake_cookbook_get_type ())
#define BAKE_COOKBOOK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_COOKBOOK, BakeCookbook))
#define BAKE_COOKBOOK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_COOKBOOK, BakeCookbookClass))
#define BAKE_IS_COOKBOOK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_COOKBOOK))
#define BAKE_IS_COOKBOOK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_COOKBOOK))
#define BAKE_COOKBOOK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_COOKBOOK, BakeCookbookClass))

typedef struct _BakeCookbook BakeCookbook;
typedef struct _BakeCookbookClass BakeCookbookClass;
typedef struct _BakeCookbookPrivate BakeCookbookPrivate;

#define BAKE_TYPE_BLOCK (bake_block_get_type ())
#define BAKE_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_BLOCK, BakeBlock))
#define BAKE_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_BLOCK, BakeBlockClass))
#define BAKE_IS_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_BLOCK))
#define BAKE_IS_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_BLOCK))
#define BAKE_BLOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_BLOCK, BakeBlockClass))

typedef struct _BakeBlock BakeBlock;
typedef struct _BakeBlockClass BakeBlockClass;

#define BAKE_TYPE_OPTION (bake_option_get_type ())
#define BAKE_OPTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_OPTION, BakeOption))
#define BAKE_OPTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_OPTION, BakeOptionClass))
#define BAKE_IS_OPTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_OPTION))
#define BAKE_IS_OPTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_OPTION))
#define BAKE_OPTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_OPTION, BakeOptionClass))

typedef struct _BakeOption BakeOption;
typedef struct _BakeOptionClass BakeOptionClass;

#define BAKE_TYPE_BUILD_MODULE (bake_build_module_get_type ())
#define BAKE_BUILD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_BUILD_MODULE, BakeBuildModule))
#define BAKE_BUILD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_BUILD_MODULE, BakeBuildModuleClass))
#define BAKE_IS_BUILD_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_BUILD_MODULE))
#define BAKE_IS_BUILD_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_BUILD_MODULE))
#define BAKE_BUILD_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_BUILD_MODULE, BakeBuildModuleClass))

typedef struct _BakeBuildModule BakeBuildModule;
typedef struct _BakeBuildModuleClass BakeBuildModuleClass;
typedef struct _BakeBuildModulePrivate BakeBuildModulePrivate;

#define BAKE_TYPE_COMPILABLE (bake_compilable_get_type ())
#define BAKE_COMPILABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_COMPILABLE, BakeCompilable))
#define BAKE_COMPILABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_COMPILABLE, BakeCompilableClass))
#define BAKE_IS_COMPILABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_COMPILABLE))
#define BAKE_IS_COMPILABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_COMPILABLE))
#define BAKE_COMPILABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_COMPILABLE, BakeCompilableClass))

typedef struct _BakeCompilable BakeCompilable;
typedef struct _BakeCompilableClass BakeCompilableClass;

#define BAKE_TYPE_PROGRAM (bake_program_get_type ())
#define BAKE_PROGRAM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_PROGRAM, BakeProgram))
#define BAKE_PROGRAM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_PROGRAM, BakeProgramClass))
#define BAKE_IS_PROGRAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_PROGRAM))
#define BAKE_IS_PROGRAM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_PROGRAM))
#define BAKE_PROGRAM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_PROGRAM, BakeProgramClass))

typedef struct _BakeProgram BakeProgram;
typedef struct _BakeProgramClass BakeProgramClass;

#define BAKE_TYPE_LIBRARY (bake_library_get_type ())
#define BAKE_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_LIBRARY, BakeLibrary))
#define BAKE_LIBRARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_LIBRARY, BakeLibraryClass))
#define BAKE_IS_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_LIBRARY))
#define BAKE_IS_LIBRARY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_LIBRARY))
#define BAKE_LIBRARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_LIBRARY, BakeLibraryClass))

typedef struct _BakeLibrary BakeLibrary;
typedef struct _BakeLibraryClass BakeLibraryClass;

#define BAKE_TYPE_DATA (bake_data_get_type ())
#define BAKE_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_DATA, BakeData))
#define BAKE_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_DATA, BakeDataClass))
#define BAKE_IS_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_DATA))
#define BAKE_IS_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_DATA))
#define BAKE_DATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_DATA, BakeDataClass))

typedef struct _BakeData BakeData;
typedef struct _BakeDataClass BakeDataClass;

#define TYPE_REQUIRE_ENTRY (require_entry_get_type ())
#define REQUIRE_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_REQUIRE_ENTRY, RequireEntry))
#define REQUIRE_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_REQUIRE_ENTRY, RequireEntryClass))
#define IS_REQUIRE_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_REQUIRE_ENTRY))
#define IS_REQUIRE_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_REQUIRE_ENTRY))
#define REQUIRE_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_REQUIRE_ENTRY, RequireEntryClass))

typedef struct _RequireEntry RequireEntry;
typedef struct _RequireEntryClass RequireEntryClass;
typedef struct _RequireEntryPrivate RequireEntryPrivate;
typedef struct _BakeRecipePrivate BakeRecipePrivate;

#define BAKE_TYPE_RULE (bake_rule_get_type ())
#define BAKE_RULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_RULE, BakeRule))
#define BAKE_RULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_RULE, BakeRuleClass))
#define BAKE_IS_RULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_RULE))
#define BAKE_IS_RULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_RULE))
#define BAKE_RULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_RULE, BakeRuleClass))

typedef struct _BakeRule BakeRule;
typedef struct _BakeRuleClass BakeRuleClass;

#define BAKE_TYPE_CLEAN_RULE (bake_clean_rule_get_type ())
#define BAKE_CLEAN_RULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_CLEAN_RULE, BakeCleanRule))
#define BAKE_CLEAN_RULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_CLEAN_RULE, BakeCleanRuleClass))
#define BAKE_IS_CLEAN_RULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_CLEAN_RULE))
#define BAKE_IS_CLEAN_RULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_CLEAN_RULE))
#define BAKE_CLEAN_RULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_CLEAN_RULE, BakeCleanRuleClass))

typedef struct _BakeCleanRule BakeCleanRule;
typedef struct _BakeCleanRuleClass BakeCleanRuleClass;

#define BAKE_TYPE_TEMPLATE (bake_template_get_type ())
#define BAKE_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_TEMPLATE, BakeTemplate))
#define BAKE_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_TEMPLATE, BakeTemplateClass))
#define BAKE_IS_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_TEMPLATE))
#define BAKE_IS_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_TEMPLATE))
#define BAKE_TEMPLATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_TEMPLATE, BakeTemplateClass))

typedef struct _BakeTemplate BakeTemplate;
typedef struct _BakeTemplateClass BakeTemplateClass;

#define BAKE_TYPE_RECIPE_LOAD_FLAGS (bake_recipe_load_flags_get_type ())
typedef struct _BakeBlockPrivate BakeBlockPrivate;

#define BAKE_TYPE_TAGGED_ENTRY (bake_tagged_entry_get_type ())
#define BAKE_TAGGED_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_TAGGED_ENTRY, BakeTaggedEntry))
#define BAKE_TAGGED_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_TAGGED_ENTRY, BakeTaggedEntryClass))
#define BAKE_IS_TAGGED_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_TAGGED_ENTRY))
#define BAKE_IS_TAGGED_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_TAGGED_ENTRY))
#define BAKE_TAGGED_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_TAGGED_ENTRY, BakeTaggedEntryClass))

typedef struct _BakeTaggedEntry BakeTaggedEntry;
typedef struct _BakeTaggedEntryClass BakeTaggedEntryClass;
typedef struct _BakeTaggedEntryPrivate BakeTaggedEntryPrivate;
typedef struct _BakeOptionPrivate BakeOptionPrivate;
typedef struct _BakeTemplatePrivate BakeTemplatePrivate;
typedef struct _BakeCompilablePrivate BakeCompilablePrivate;
typedef struct _BakeProgramPrivate BakeProgramPrivate;

#define BAKE_TYPE_TEST (bake_test_get_type ())
#define BAKE_TEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAKE_TYPE_TEST, BakeTest))
#define BAKE_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAKE_TYPE_TEST, BakeTestClass))
#define BAKE_IS_TEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAKE_TYPE_TEST))
#define BAKE_IS_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAKE_TYPE_TEST))
#define BAKE_TEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAKE_TYPE_TEST, BakeTestClass))

typedef struct _BakeTest BakeTest;
typedef struct _BakeTestClass BakeTestClass;
typedef struct _BakeTestPrivate BakeTestPrivate;
typedef struct _BakeLibraryPrivate BakeLibraryPrivate;
typedef struct _BakeDataPrivate BakeDataPrivate;
typedef struct _BakeRulePrivate BakeRulePrivate;
typedef struct _BakeCleanRulePrivate BakeCleanRulePrivate;

struct _BakeBuilder {
	GObject parent_instance;
	BakeBuilderPrivate * priv;
	gchar* base_directory;
};

struct _BakeBuilderClass {
	GObjectClass parent_class;
};

typedef enum  {
	BAKE_BUILDER_FLAGS_PRETTY_PRINT = 0x1,
	BAKE_BUILDER_FLAGS_DEBUG = 0x2,
	BAKE_BUILDER_FLAGS_PARALLEL = 0x4
} BakeBuilderFlags;

typedef enum  {
	BAKE_BUILD_ERROR_ERROR
} BakeBuildError;
#define BAKE_BUILD_ERROR bake_build_error_quark ()
struct _BakeCookbook {
	GObject parent_instance;
	BakeCookbookPrivate * priv;
	gchar* toplevel_dir;
	BakeRecipe* current_recipe;
	GList* options;
};

struct _BakeCookbookClass {
	GObjectClass parent_class;
};

typedef enum  {
	BAKE_COOKBOOK_ERROR_INVALID_CONFIG,
	BAKE_COOKBOOK_ERROR_NO_RECIPE,
	BAKE_COOKBOOK_ERROR_NO_TOPLEVEL,
	BAKE_COOKBOOK_ERROR_INVALID_RECIPE,
	BAKE_COOKBOOK_ERROR_INVALID_DIRECTORY,
	BAKE_COOKBOOK_ERROR_TOO_OLD,
	BAKE_COOKBOOK_ERROR_INVALID_ARGUMENT,
	BAKE_COOKBOOK_ERROR_UNKNOWN_OPTIONS
} BakeCookbookError;
#define BAKE_COOKBOOK_ERROR bake_cookbook_error_quark ()
typedef enum  {
	BAKE_RECIPE_ERROR_INVALID
} BakeRecipeError;
#define BAKE_RECIPE_ERROR bake_recipe_error_quark ()
struct _BakeBuildModule {
	GObject parent_instance;
	BakeBuildModulePrivate * priv;
};

struct _BakeBuildModuleClass {
	GObjectClass parent_class;
	void (*generate_toplevel_rules) (BakeBuildModule* self, BakeRecipe* toplevel);
	gboolean (*can_generate_program_rules) (BakeBuildModule* self, BakeProgram* program, GError** error);
	void (*generate_program_rules) (BakeBuildModule* self, BakeProgram* program, GError** error);
	gboolean (*can_generate_library_rules) (BakeBuildModule* self, BakeLibrary* library, GError** error);
	void (*generate_library_rules) (BakeBuildModule* self, BakeLibrary* library, GError** error);
	void (*generate_data_rules) (BakeBuildModule* self, BakeData* data, GError** error);
	void (*recipe_complete) (BakeBuildModule* self, BakeRecipe* recipe);
	void (*rules_complete) (BakeBuildModule* self, BakeRecipe* toplevel);
};

struct _RequireEntry {
	GTypeInstance parent_instance;
	volatile int ref_count;
	RequireEntryPrivate * priv;
	gchar* name;
	gchar* condition;
	gchar* version;
	gboolean is_private;
};

struct _RequireEntryClass {
	GTypeClass parent_class;
	void (*finalize) (RequireEntry *self);
};

struct _BakeRecipe {
	GObject parent_instance;
	BakeRecipePrivate * priv;
	gchar* filename;
	BakeRecipe* parent;
	GList* children;
	GList* variable_names;
	GList* rules;
	BakeRule* build_rule;
	BakeRule* install_rule;
	BakeRule* uninstall_rule;
	BakeCleanRule* clean_rule;
	BakeRule* test_rule;
	GHashTable* targets;
	GList* option_names;
	GList* template_names;
	GList* program_names;
	GList* library_names;
	GList* data_names;
	gboolean pretty_print;
};

struct _BakeRecipeClass {
	GObjectClass parent_class;
};

typedef enum  {
	BAKE_RECIPE_LOAD_FLAGS_NONE = 0x0,
	BAKE_RECIPE_LOAD_FLAGS_PRETTY_PRINT = 0x1,
	BAKE_RECIPE_LOAD_FLAGS_DISALLOW_RULES = 0x2,
	BAKE_RECIPE_LOAD_FLAGS_STOP_IF_TOPLEVEL = 0x4
} BakeRecipeLoadFlags;

struct _BakeBlock {
	GObject parent_instance;
	BakeBlockPrivate * priv;
	BakeRecipe* recipe;
	gchar* id;
};

struct _BakeBlockClass {
	GObjectClass parent_class;
};

typedef enum  {
	BAKE_TAGGED_LIST_ERROR_TAG_BEFORE_ENTRY,
	BAKE_TAGGED_LIST_ERROR_UNTERMINATED_TAG
} BakeTaggedListError;
#define BAKE_TAGGED_LIST_ERROR bake_tagged_list_error_quark ()
struct _BakeTaggedEntry {
	GObject parent_instance;
	BakeTaggedEntryPrivate * priv;
	BakeRecipe* recipe;
	gchar* name;
	GList* tags;
};

struct _BakeTaggedEntryClass {
	GObjectClass parent_class;
};

struct _BakeOption {
	BakeBlock parent_instance;
	BakeOptionPrivate * priv;
};

struct _BakeOptionClass {
	BakeBlockClass parent_class;
};

struct _BakeTemplate {
	BakeBlock parent_instance;
	BakeTemplatePrivate * priv;
};

struct _BakeTemplateClass {
	BakeBlockClass parent_class;
};

struct _BakeCompilable {
	BakeBlock parent_instance;
	BakeCompilablePrivate * priv;
};

struct _BakeCompilableClass {
	BakeBlockClass parent_class;
};

struct _BakeProgram {
	BakeCompilable parent_instance;
	BakeProgramPrivate * priv;
	GList* test_names;
	GHashTable* tests;
};

struct _BakeProgramClass {
	BakeCompilableClass parent_class;
};

struct _BakeTest {
	BakeBlock parent_instance;
	BakeTestPrivate * priv;
};

struct _BakeTestClass {
	BakeBlockClass parent_class;
};

struct _BakeLibrary {
	BakeCompilable parent_instance;
	BakeLibraryPrivate * priv;
};

struct _BakeLibraryClass {
	BakeCompilableClass parent_class;
};

struct _BakeData {
	BakeBlock parent_instance;
	BakeDataPrivate * priv;
};

struct _BakeDataClass {
	BakeBlockClass parent_class;
};

struct _BakeRule {
	GObject parent_instance;
	BakeRulePrivate * priv;
	BakeRecipe* recipe;
	GList* inputs;
	GList* outputs;
	GList* static_commands;
	gboolean pretty_print;
};

struct _BakeRuleClass {
	GObjectClass parent_class;
	GList* (*get_commands) (BakeRule* self);
};

struct _BakeCleanRule {
	BakeRule parent_instance;
	BakeCleanRulePrivate * priv;
	GList* clean_files;
};

struct _BakeCleanRuleClass {
	BakeRuleClass parent_class;
};


GType bake_builder_get_type (void) G_GNUC_CONST;
GType bake_builder_flags_get_type (void) G_GNUC_CONST;
BakeBuilder* bake_builder_new (const gchar* base_directory, BakeBuilderFlags flags);
BakeBuilder* bake_builder_construct (GType object_type, const gchar* base_directory, BakeBuilderFlags flags);
GType bake_recipe_get_type (void) G_GNUC_CONST;
void bake_builder_build (BakeBuilder* self, BakeRecipe* recipe, GAsyncReadyCallback _callback_, gpointer _user_data_);
GQuark bake_build_error_quark (void);
gboolean bake_builder_build_finish (BakeBuilder* self, GAsyncResult* _res_, GError** error);
void bake_builder_test (BakeBuilder* self, BakeRecipe* recipe, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean bake_builder_test_finish (BakeBuilder* self, GAsyncResult* _res_, GError** error);
void bake_builder_install (BakeBuilder* self, BakeRecipe* recipe, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean bake_builder_install_finish (BakeBuilder* self, GAsyncResult* _res_, GError** error);
void bake_builder_release (BakeBuilder* self, BakeRecipe* recipe, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean bake_builder_release_finish (BakeBuilder* self, GAsyncResult* _res_, GError** error);
void bake_builder_uninstall (BakeBuilder* self, BakeRecipe* recipe, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean bake_builder_uninstall_finish (BakeBuilder* self, GAsyncResult* _res_, GError** error);
void bake_builder_clean (BakeBuilder* self, BakeRecipe* recipe, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean bake_builder_clean_finish (BakeBuilder* self, GAsyncResult* _res_, GError** error);
void bake_builder_build_target (BakeBuilder* self, BakeRecipe* recipe, const gchar* target, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean bake_builder_build_target_finish (BakeBuilder* self, GAsyncResult* _res_, GError** error);
#define VERSION "0.1.49+bzr"
#define LIBRARY_DIRECTORY "/usr/lib"
GType bake_cookbook_get_type (void) G_GNUC_CONST;
GType bake_block_get_type (void) G_GNUC_CONST;
GType bake_option_get_type (void) G_GNUC_CONST;
BakeCookbook* bake_cookbook_new (const gchar* original_dir, gboolean pretty_print);
BakeCookbook* bake_cookbook_construct (GType object_type, const gchar* original_dir, gboolean pretty_print);
GQuark bake_cookbook_error_quark (void);
void bake_cookbook_configure (BakeCookbook* self, gchar** args, int args_length1, GError** error);
void bake_cookbook_unconfigure (BakeCookbook* self, GError** error);
GQuark bake_recipe_error_quark (void);
void bake_cookbook_load (BakeCookbook* self, GError** error);
gboolean bake_cookbook_generate_rules (BakeCookbook* self, GError** error);
gboolean bake_cookbook_get_needs_configure (BakeCookbook* self);
GType bake_build_module_get_type (void) G_GNUC_CONST;
GType bake_compilable_get_type (void) G_GNUC_CONST;
GType bake_program_get_type (void) G_GNUC_CONST;
GType bake_library_get_type (void) G_GNUC_CONST;
GType bake_data_get_type (void) G_GNUC_CONST;
void bake_build_module_generate_toplevel_rules (BakeBuildModule* self, BakeRecipe* toplevel);
gboolean bake_build_module_can_generate_program_rules (BakeBuildModule* self, BakeProgram* program, GError** error);
void bake_build_module_generate_program_rules (BakeBuildModule* self, BakeProgram* program, GError** error);
gboolean bake_build_module_can_generate_library_rules (BakeBuildModule* self, BakeLibrary* library, GError** error);
void bake_build_module_generate_library_rules (BakeBuildModule* self, BakeLibrary* library, GError** error);
void bake_build_module_generate_data_rules (BakeBuildModule* self, BakeData* data, GError** error);
void bake_build_module_recipe_complete (BakeBuildModule* self, BakeRecipe* recipe);
void bake_build_module_rules_complete (BakeBuildModule* self, BakeRecipe* toplevel);
BakeBuildModule* bake_build_module_new (void);
BakeBuildModule* bake_build_module_construct (GType object_type);
gpointer require_entry_ref (gpointer instance);
void require_entry_unref (gpointer instance);
GParamSpec* param_spec_require_entry (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_require_entry (GValue* value, gpointer v_object);
void value_take_require_entry (GValue* value, gpointer v_object);
gpointer value_get_require_entry (const GValue* value);
GType require_entry_get_type (void) G_GNUC_CONST;
gboolean require_entry_check_version (RequireEntry* self, const gchar* version);
RequireEntry* require_entry_new (void);
RequireEntry* require_entry_construct (GType object_type);
GType bake_rule_get_type (void) G_GNUC_CONST;
GType bake_clean_rule_get_type (void) G_GNUC_CONST;
GType bake_template_get_type (void) G_GNUC_CONST;
BakeRecipe* bake_recipe_new (gboolean pretty_print);
BakeRecipe* bake_recipe_construct (GType object_type, gboolean pretty_print);
GType bake_recipe_load_flags_get_type (void) G_GNUC_CONST;
BakeRecipe* bake_recipe_new_from_file (const gchar* filename, BakeRecipeLoadFlags flags, GError** error);
BakeRecipe* bake_recipe_construct_from_file (GType object_type, const gchar* filename, BakeRecipeLoadFlags flags, GError** error);
gchar* bake_recipe_get_variable (BakeRecipe* self, const gchar* name, const gchar* fallback, gboolean recurse);
gboolean bake_recipe_get_boolean_variable (BakeRecipe* self, const gchar* name, gboolean fallback);
void bake_recipe_set_variable (BakeRecipe* self, const gchar* name, const gchar* value, gint line_number);
BakeRule* bake_recipe_add_rule (BakeRecipe* self);
gchar* bake_recipe_substitute_variables (BakeRecipe* self, const gchar* line);
gchar* bake_recipe_get_build_path (BakeRecipe* self, const gchar* path, gboolean important);
gchar* bake_recipe_get_install_path (BakeRecipe* self, const gchar* path);
void bake_recipe_add_install_rule (BakeRecipe* self, const gchar* filename, const gchar* install_dir, const gchar* target_filename);
void bake_recipe_add_install_link_rule (BakeRecipe* self, const gchar* filename, const gchar* install_dir, const gchar* target);
void bake_recipe_generate_clean_rule (BakeRecipe* self);
BakeRule* bake_recipe_find_rule (BakeRecipe* self, const gchar* output);
BakeRule* bake_recipe_find_rule_recursive (BakeRecipe* self, const gchar* output);
BakeRule* bake_recipe_get_rule_with_target (BakeRecipe* self, const gchar* target);
gchar* bake_recipe_to_string (BakeRecipe* self);
gchar* bake_recipe_get_dirname (BakeRecipe* self);
gchar* bake_recipe_get_build_directory (BakeRecipe* self);
gchar* bake_recipe_get_install_directory (BakeRecipe* self);
gchar* bake_recipe_get_binary_directory (BakeRecipe* self);
gchar* bake_recipe_get_system_binary_directory (BakeRecipe* self);
gchar* bake_recipe_get_library_directory (BakeRecipe* self);
gchar* bake_recipe_get_system_library_directory (BakeRecipe* self);
gchar* bake_recipe_get_data_directory (BakeRecipe* self);
gchar* bake_recipe_get_include_directory (BakeRecipe* self);
gchar* bake_recipe_get_project_data_directory (BakeRecipe* self);
gchar* bake_recipe_get_project_name (BakeRecipe* self);
gchar* bake_recipe_get_project_version (BakeRecipe* self);
gchar* bake_recipe_get_release_name (BakeRecipe* self);
gchar* bake_recipe_get_release_directory (BakeRecipe* self);
gboolean bake_recipe_get_is_toplevel (BakeRecipe* self);
BakeRecipe* bake_recipe_get_toplevel (BakeRecipe* self);
gchar* bake_recipe_get_relative_dirname (BakeRecipe* self);
BakeBlock* bake_block_new (BakeRecipe* recipe, const gchar* type_name, const gchar* id);
BakeBlock* bake_block_construct (GType object_type, BakeRecipe* recipe, const gchar* type_name, const gchar* id);
gchar* bake_block_get_variable (BakeBlock* self, const gchar* name, const gchar* fallback);
gboolean bake_block_get_boolean_variable (BakeBlock* self, const gchar* name, gboolean* fallback);
GType bake_tagged_entry_get_type (void) G_GNUC_CONST;
GQuark bake_tagged_list_error_quark (void);
GList* bake_block_get_tagged_list (BakeBlock* self, const gchar* name, GError** error);
BakeTaggedEntry* bake_tagged_entry_new (BakeRecipe* recipe, const gchar* name);
BakeTaggedEntry* bake_tagged_entry_construct (GType object_type, BakeRecipe* recipe, const gchar* name);
gboolean bake_tagged_entry_has_tag (BakeTaggedEntry* self, const gchar* name);
gboolean bake_tagged_entry_get_is_allowed (BakeTaggedEntry* self);
BakeOption* bake_option_new (BakeRecipe* recipe, const gchar* id);
BakeOption* bake_option_construct (GType object_type, BakeRecipe* recipe, const gchar* id);
gchar* bake_option_get_description (BakeOption* self);
gchar* bake_option_get_default (BakeOption* self);
gchar* bake_option_get_value (BakeOption* self);
void bake_option_set_value (BakeOption* self, const gchar* value);
BakeTemplate* bake_template_new (BakeRecipe* recipe, const gchar* id);
BakeTemplate* bake_template_construct (GType object_type, BakeRecipe* recipe, const gchar* id);
BakeCompilable* bake_compilable_new (BakeRecipe* recipe, const gchar* type_name, const gchar* id);
BakeCompilable* bake_compilable_construct (GType object_type, BakeRecipe* recipe, const gchar* type_name, const gchar* id);
gchar* bake_compilable_get_flags (BakeCompilable* self, const gchar* name, const gchar* fallback);
GList* bake_compilable_get_sources (BakeCompilable* self, GError** error);
GList* bake_compilable_get_packages (BakeCompilable* self, GError** error);
gchar* bake_compilable_get_compiler (BakeCompilable* self);
gchar* bake_compilable_get_name (BakeCompilable* self);
gchar* bake_compilable_get_gettext_domain (BakeCompilable* self);
gboolean bake_compilable_get_install (BakeCompilable* self);
gboolean bake_compilable_get_debug (BakeCompilable* self);
gchar* bake_compilable_get_compile_flags (BakeCompilable* self);
gchar* bake_compilable_get_link_flags (BakeCompilable* self);
GType bake_test_get_type (void) G_GNUC_CONST;
BakeProgram* bake_program_new (BakeRecipe* recipe, const gchar* id);
BakeProgram* bake_program_construct (GType object_type, BakeRecipe* recipe, const gchar* id);
gchar* bake_program_get_install_directory (BakeProgram* self);
BakeTest* bake_test_new (BakeRecipe* recipe, const gchar* program_id, const gchar* id);
BakeTest* bake_test_construct (GType object_type, BakeRecipe* recipe, const gchar* program_id, const gchar* id);
BakeLibrary* bake_library_new (BakeRecipe* recipe, const gchar* id);
BakeLibrary* bake_library_construct (GType object_type, BakeRecipe* recipe, const gchar* id);
gchar* bake_library_get_install_directory (BakeLibrary* self);
BakeData* bake_data_new (BakeRecipe* recipe, const gchar* id);
BakeData* bake_data_construct (GType object_type, BakeRecipe* recipe, const gchar* id);
gchar* bake_data_get_gettext_domain (BakeData* self);
gboolean bake_data_get_install (BakeData* self);
gchar* bake_data_get_install_directory (BakeData* self);
GList* split_variable (const gchar* value);
BakeRule* bake_rule_new (BakeRecipe* recipe, gboolean pretty_print);
BakeRule* bake_rule_construct (GType object_type, BakeRecipe* recipe, gboolean pretty_print);
void bake_rule_add_input (BakeRule* self, const gchar* input);
void bake_rule_add_output (BakeRule* self, const gchar* output);
void bake_rule_add_command (BakeRule* self, const gchar* command);
gboolean bake_rule_has_command (BakeRule* self, const gchar* command);
void bake_rule_add_status_command (BakeRule* self, const gchar* status);
void bake_rule_add_error_command (BakeRule* self, const gchar* status);
gchar* bake_rule_make_status_command (BakeRule* self, const gchar* status);
GList* bake_rule_get_commands (BakeRule* self);
gchar* bake_rule_to_string (BakeRule* self);
BakeCleanRule* bake_clean_rule_new (BakeRecipe* recipe, gboolean pretty_print);
BakeCleanRule* bake_clean_rule_construct (GType object_type, BakeRecipe* recipe, gboolean pretty_print);
void bake_clean_rule_add_clean_file (BakeCleanRule* self, const gchar* file);
gchar* bake_get_relative_path (const gchar* source_path, const gchar* target_path);
gchar* bake_join_relative_dir (const gchar* base_dir, const gchar* relative_dir);
gchar* bake_remove_extension (const gchar* filename);
gchar* bake_replace_extension (const gchar* filename, const gchar* extension);


G_END_DECLS

#endif
