/* gen-project.h generated by valac 0.12.1.1-323029-dirty, the Vala compiler, do not modify */


#ifndef __GEN_PROJECT_H__
#define __GEN_PROJECT_H__

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

G_BEGIN_DECLS


#define GEN_PROJECT_TYPE_PROJECT_GENERATOR (gen_project_project_generator_get_type ())
#define GEN_PROJECT_PROJECT_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEN_PROJECT_TYPE_PROJECT_GENERATOR, GenProjectProjectGenerator))
#define GEN_PROJECT_PROJECT_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEN_PROJECT_TYPE_PROJECT_GENERATOR, GenProjectProjectGeneratorClass))
#define GEN_PROJECT_IS_PROJECT_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEN_PROJECT_TYPE_PROJECT_GENERATOR))
#define GEN_PROJECT_IS_PROJECT_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEN_PROJECT_TYPE_PROJECT_GENERATOR))
#define GEN_PROJECT_PROJECT_GENERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEN_PROJECT_TYPE_PROJECT_GENERATOR, GenProjectProjectGeneratorClass))

typedef struct _GenProjectProjectGenerator GenProjectProjectGenerator;
typedef struct _GenProjectProjectGeneratorClass GenProjectProjectGeneratorClass;
typedef struct _GenProjectProjectGeneratorPrivate GenProjectProjectGeneratorPrivate;

#define GEN_PROJECT_TYPE_PROJECT_OPTIONS (gen_project_project_options_get_type ())
#define GEN_PROJECT_PROJECT_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEN_PROJECT_TYPE_PROJECT_OPTIONS, GenProjectProjectOptions))
#define GEN_PROJECT_PROJECT_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEN_PROJECT_TYPE_PROJECT_OPTIONS, GenProjectProjectOptionsClass))
#define GEN_PROJECT_IS_PROJECT_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEN_PROJECT_TYPE_PROJECT_OPTIONS))
#define GEN_PROJECT_IS_PROJECT_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEN_PROJECT_TYPE_PROJECT_OPTIONS))
#define GEN_PROJECT_PROJECT_OPTIONS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEN_PROJECT_TYPE_PROJECT_OPTIONS, GenProjectProjectOptionsClass))

typedef struct _GenProjectProjectOptions GenProjectProjectOptions;
typedef struct _GenProjectProjectOptionsClass GenProjectProjectOptionsClass;
typedef struct _GenProjectProjectOptionsPrivate GenProjectProjectOptionsPrivate;

#define GEN_PROJECT_TYPE_TEMPLATE_DEFINITION (gen_project_template_definition_get_type ())
#define GEN_PROJECT_TEMPLATE_DEFINITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEN_PROJECT_TYPE_TEMPLATE_DEFINITION, GenProjectTemplateDefinition))
#define GEN_PROJECT_TEMPLATE_DEFINITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEN_PROJECT_TYPE_TEMPLATE_DEFINITION, GenProjectTemplateDefinitionClass))
#define GEN_PROJECT_IS_TEMPLATE_DEFINITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEN_PROJECT_TYPE_TEMPLATE_DEFINITION))
#define GEN_PROJECT_IS_TEMPLATE_DEFINITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEN_PROJECT_TYPE_TEMPLATE_DEFINITION))
#define GEN_PROJECT_TEMPLATE_DEFINITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEN_PROJECT_TYPE_TEMPLATE_DEFINITION, GenProjectTemplateDefinitionClass))

typedef struct _GenProjectTemplateDefinition GenProjectTemplateDefinition;
typedef struct _GenProjectTemplateDefinitionClass GenProjectTemplateDefinitionClass;

#define GEN_PROJECT_TYPE_PROJECT_LICENSE (gen_project_project_license_get_type ())
typedef struct _GenProjectTemplateDefinitionPrivate GenProjectTemplateDefinitionPrivate;

#define GEN_PROJECT_TYPE_TEMPLATES (gen_project_templates_get_type ())
#define GEN_PROJECT_TEMPLATES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEN_PROJECT_TYPE_TEMPLATES, GenProjectTemplates))
#define GEN_PROJECT_TEMPLATES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEN_PROJECT_TYPE_TEMPLATES, GenProjectTemplatesClass))
#define GEN_PROJECT_IS_TEMPLATES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEN_PROJECT_TYPE_TEMPLATES))
#define GEN_PROJECT_IS_TEMPLATES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEN_PROJECT_TYPE_TEMPLATES))
#define GEN_PROJECT_TEMPLATES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEN_PROJECT_TYPE_TEMPLATES, GenProjectTemplatesClass))

typedef struct _GenProjectTemplates GenProjectTemplates;
typedef struct _GenProjectTemplatesClass GenProjectTemplatesClass;
typedef struct _GenProjectTemplatesPrivate GenProjectTemplatesPrivate;

#define GEN_PROJECT_TYPE_PROJECT_TYPE (gen_project_project_type_get_type ())

struct _GenProjectProjectGenerator {
	GObject parent_instance;
	GenProjectProjectGeneratorPrivate * priv;
};

struct _GenProjectProjectGeneratorClass {
	GObjectClass parent_class;
};

typedef enum  {
	GEN_PROJECT_PROJECT_LICENSE_GPL2,
	GEN_PROJECT_PROJECT_LICENSE_GPL3,
	GEN_PROJECT_PROJECT_LICENSE_LGPL2,
	GEN_PROJECT_PROJECT_LICENSE_LGPL3
} GenProjectProjectLicense;

struct _GenProjectProjectOptions {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GenProjectProjectOptionsPrivate * priv;
	GenProjectTemplateDefinition* template;
	gchar* path;
	gboolean version;
	gchar* author;
	gchar* email;
	gchar* name;
	gchar** files;
	gint files_length1;
	GenProjectProjectLicense license;
};

struct _GenProjectProjectOptionsClass {
	GTypeClass parent_class;
	void (*finalize) (GenProjectProjectOptions *self);
};

struct _GenProjectTemplateDefinition {
	GObject parent_instance;
	GenProjectTemplateDefinitionPrivate * priv;
};

struct _GenProjectTemplateDefinitionClass {
	GObjectClass parent_class;
};

struct _GenProjectTemplates {
	GObject parent_instance;
	GenProjectTemplatesPrivate * priv;
};

struct _GenProjectTemplatesClass {
	GObjectClass parent_class;
};

typedef enum  {
	GEN_PROJECT_PROJECT_TYPE_CONSOLE_APPLICATION,
	GEN_PROJECT_PROJECT_TYPE_GTK_APPLICATION
} GenProjectProjectType;


GType gen_project_project_generator_get_type (void) G_GNUC_CONST;
gpointer gen_project_project_options_ref (gpointer instance);
void gen_project_project_options_unref (gpointer instance);
GParamSpec* gen_project_param_spec_project_options (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void gen_project_value_set_project_options (GValue* value, gpointer v_object);
void gen_project_value_take_project_options (GValue* value, gpointer v_object);
gpointer gen_project_value_get_project_options (const GValue* value);
GType gen_project_project_options_get_type (void) G_GNUC_CONST;
GenProjectProjectGenerator* gen_project_project_generator_new (GenProjectProjectOptions* options);
GenProjectProjectGenerator* gen_project_project_generator_construct (GType object_type, GenProjectProjectOptions* options);
void gen_project_project_generator_create_project (GenProjectProjectGenerator* self);
GenProjectProjectOptions* gen_project_project_generator_get_options (GenProjectProjectGenerator* self);
GType gen_project_template_definition_get_type (void) G_GNUC_CONST;
GType gen_project_project_license_get_type (void) G_GNUC_CONST;
GenProjectProjectOptions* gen_project_project_options_new (void);
GenProjectProjectOptions* gen_project_project_options_construct (GType object_type);
GenProjectTemplateDefinition* gen_project_template_definition_load (const gchar* filename);
gint gen_project_template_definition_get_id (GenProjectTemplateDefinition* self);
const gchar* gen_project_template_definition_get_version (GenProjectTemplateDefinition* self);
const gchar* gen_project_template_definition_get_name (GenProjectTemplateDefinition* self);
const gchar* gen_project_template_definition_get_description (GenProjectTemplateDefinition* self);
const gchar* gen_project_template_definition_get_details (GenProjectTemplateDefinition* self);
const gchar* gen_project_template_definition_get_language (GenProjectTemplateDefinition* self);
const gchar* gen_project_template_definition_get_build_system (GenProjectTemplateDefinition* self);
GList* gen_project_template_definition_get_tags (GenProjectTemplateDefinition* self);
const gchar* gen_project_template_definition_get_icon_filename (GenProjectTemplateDefinition* self);
const gchar* gen_project_template_definition_get_archive_filename (GenProjectTemplateDefinition* self);
GType gen_project_templates_get_type (void) G_GNUC_CONST;
GenProjectTemplates* gen_project_templates_load (gchar** user_path, int user_path_length1);
GList* gen_project_templates_get_definitions (GenProjectTemplates* self);
GType gen_project_project_type_get_type (void) G_GNUC_CONST;


G_END_DECLS

#endif
