--- /dev/null
+/* ProjectLoader.c generated by valac, the Vala compiler
+ * generated from ProjectLoader.vala, do not modify */
+
+/* Copyright 2009 Yorba Foundation
+ *
+ * This software is licensed under the GNU Lesser General Public License
+ * (version 2.1 or later). See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+#include <glib/gstdio.h>
+#include <gobject/gvaluecollector.h>
+
+
+#define MODEL_TYPE_LOADER_HANDLER (model_loader_handler_get_type ())
+#define MODEL_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandler))
+#define MODEL_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass))
+#define MODEL_IS_LOADER_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LOADER_HANDLER))
+#define MODEL_IS_LOADER_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LOADER_HANDLER))
+#define MODEL_LOADER_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LOADER_HANDLER, ModelLoaderHandlerClass))
+
+typedef struct _ModelLoaderHandler ModelLoaderHandler;
+typedef struct _ModelLoaderHandlerClass ModelLoaderHandlerClass;
+typedef struct _ModelLoaderHandlerPrivate ModelLoaderHandlerPrivate;
+
+#define MODEL_TYPE_XML_TREE_LOADER (model_xml_tree_loader_get_type ())
+#define MODEL_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoader))
+#define MODEL_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass))
+#define MODEL_IS_XML_TREE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_TREE_LOADER))
+#define MODEL_IS_XML_TREE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_TREE_LOADER))
+#define MODEL_XML_TREE_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderClass))
+
+typedef struct _ModelXmlTreeLoader ModelXmlTreeLoader;
+typedef struct _ModelXmlTreeLoaderClass ModelXmlTreeLoaderClass;
+typedef struct _ModelXmlTreeLoaderPrivate ModelXmlTreeLoaderPrivate;
+
+#define MODEL_TYPE_XML_ELEMENT (model_xml_element_get_type ())
+#define MODEL_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElement))
+#define MODEL_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass))
+#define MODEL_IS_XML_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_XML_ELEMENT))
+#define MODEL_IS_XML_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_XML_ELEMENT))
+#define MODEL_XML_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_XML_ELEMENT, ModelXmlElementClass))
+
+typedef struct _ModelXmlElement ModelXmlElement;
+typedef struct _ModelXmlElementClass ModelXmlElementClass;
+#define _model_xml_element_unref0(var) ((var == NULL) ? NULL : (var = (model_xml_element_unref (var), NULL)))
+#define _g_markup_parse_context_free0(var) ((var == NULL) ? NULL : (var = (g_markup_parse_context_free (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+typedef struct _ModelParamSpecXmlTreeLoader ModelParamSpecXmlTreeLoader;
+
+#define MODEL_TYPE_PROJECT_BUILDER (model_project_builder_get_type ())
+#define MODEL_PROJECT_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilder))
+#define MODEL_PROJECT_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderClass))
+#define MODEL_IS_PROJECT_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_BUILDER))
+#define MODEL_IS_PROJECT_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_BUILDER))
+#define MODEL_PROJECT_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderClass))
+
+typedef struct _ModelProjectBuilder ModelProjectBuilder;
+typedef struct _ModelProjectBuilderClass ModelProjectBuilderClass;
+typedef struct _ModelProjectBuilderPrivate ModelProjectBuilderPrivate;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+typedef struct _ModelXmlElementPrivate ModelXmlElementPrivate;
+
+#define LOGGING_TYPE_FACILITY (logging_facility_get_type ())
+
+#define LOGGING_TYPE_LEVEL (logging_level_get_type ())
+typedef struct _ModelParamSpecXmlElement ModelParamSpecXmlElement;
+
+#define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ())
+#define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader))
+#define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
+#define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER))
+#define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER))
+#define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
+
+typedef struct _ModelProjectLoader ModelProjectLoader;
+typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass;
+typedef struct _ModelProjectLoaderPrivate ModelProjectLoaderPrivate;
+#define _model_xml_tree_loader_unref0(var) ((var == NULL) ? NULL : (var = (model_xml_tree_loader_unref (var), NULL)))
+
+struct _ModelLoaderHandler {
+ GObject parent_instance;
+ ModelLoaderHandlerPrivate * priv;
+};
+
+struct _ModelLoaderHandlerClass {
+ GObjectClass parent_class;
+ gboolean (*commit_library) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+ gboolean (*commit_marina) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+ gboolean (*commit_track) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+ gboolean (*commit_clip) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+ gboolean (*commit_clipfile) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+ gboolean (*commit_time_signature_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+ gboolean (*commit_tempo_entry) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+ gboolean (*commit_click) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+ gboolean (*commit_library_preference) (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+ void (*leave_library) (ModelLoaderHandler* self);
+ void (*leave_marina) (ModelLoaderHandler* self);
+ void (*leave_track) (ModelLoaderHandler* self);
+ void (*leave_clip) (ModelLoaderHandler* self);
+ void (*leave_clipfile) (ModelLoaderHandler* self);
+};
+
+struct _ModelXmlTreeLoader {
+ GTypeInstance parent_instance;
+ volatile int ref_count;
+ ModelXmlTreeLoaderPrivate * priv;
+ ModelXmlElement* root;
+};
+
+struct _ModelXmlTreeLoaderClass {
+ GTypeClass parent_class;
+ void (*finalize) (ModelXmlTreeLoader *self);
+};
+
+struct _ModelXmlTreeLoaderPrivate {
+ ModelXmlElement* current_element;
+};
+
+struct _ModelParamSpecXmlTreeLoader {
+ GParamSpec parent_instance;
+};
+
+struct _ModelProjectBuilder {
+ GObject parent_instance;
+ ModelProjectBuilderPrivate * priv;
+};
+
+struct _ModelProjectBuilderClass {
+ GObjectClass parent_class;
+};
+
+struct _ModelProjectBuilderPrivate {
+ ModelLoaderHandler* handler;
+};
+
+struct _ModelXmlElement {
+ GTypeInstance parent_instance;
+ volatile int ref_count;
+ ModelXmlElementPrivate * priv;
+ char** attribute_names;
+ gint attribute_names_length1;
+ char** attribute_values;
+ gint attribute_values_length1;
+};
+
+struct _ModelXmlElementClass {
+ GTypeClass parent_class;
+ void (*finalize) (ModelXmlElement *self);
+};
+
+typedef enum {
+ LOGGING_FACILITY_SIGNAL_HANDLERS,
+ LOGGING_FACILITY_DEVELOPER_WARNINGS,
+ LOGGING_FACILITY_GRAPH,
+ LOGGING_FACILITY_LOADING,
+ LOGGING_FACILITY_IMPORT,
+ LOGGING_FACILITY_SINGLEDECODEBIN
+} LoggingFacility;
+
+typedef enum {
+ LOGGING_LEVEL_CRITICAL,
+ LOGGING_LEVEL_HIGH,
+ LOGGING_LEVEL_MEDIUM,
+ LOGGING_LEVEL_LOW,
+ LOGGING_LEVEL_INFO,
+ LOGGING_LEVEL_VERBOSE
+} LoggingLevel;
+
+struct _ModelXmlElementPrivate {
+ char* _name;
+ ModelXmlElement* _parent;
+ GeeArrayList* _children;
+};
+
+struct _ModelParamSpecXmlElement {
+ GParamSpec parent_instance;
+};
+
+struct _ModelProjectLoader {
+ GObject parent_instance;
+ ModelProjectLoaderPrivate * priv;
+};
+
+struct _ModelProjectLoaderClass {
+ GObjectClass parent_class;
+};
+
+struct _ModelProjectLoaderPrivate {
+ char* file_name;
+ ModelLoaderHandler* loader_handler;
+ char* text;
+ gsize text_len;
+ gboolean project_load_completed;
+ gboolean load_completed_fired;
+ gboolean handler_completed;
+};
+
+
+static gpointer model_loader_handler_parent_class = NULL;
+static gpointer model_xml_tree_loader_parent_class = NULL;
+static gpointer model_project_builder_parent_class = NULL;
+static gpointer model_xml_element_parent_class = NULL;
+static gpointer model_project_loader_parent_class = NULL;
+
+GType model_loader_handler_get_type (void);
+enum {
+ MODEL_LOADER_HANDLER_DUMMY_PROPERTY
+};
+ModelLoaderHandler* model_loader_handler_new (void);
+ModelLoaderHandler* model_loader_handler_construct (GType object_type);
+gboolean model_loader_handler_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static gboolean model_loader_handler_real_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+gboolean model_loader_handler_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static gboolean model_loader_handler_real_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+gboolean model_loader_handler_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static gboolean model_loader_handler_real_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+gboolean model_loader_handler_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static gboolean model_loader_handler_real_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+gboolean model_loader_handler_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static gboolean model_loader_handler_real_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+gboolean model_loader_handler_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static gboolean model_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+gboolean model_loader_handler_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static gboolean model_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+gboolean model_loader_handler_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static gboolean model_loader_handler_real_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+gboolean model_loader_handler_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static gboolean model_loader_handler_real_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+void model_loader_handler_leave_library (ModelLoaderHandler* self);
+static void model_loader_handler_real_leave_library (ModelLoaderHandler* self);
+void model_loader_handler_leave_marina (ModelLoaderHandler* self);
+static void model_loader_handler_real_leave_marina (ModelLoaderHandler* self);
+void model_loader_handler_leave_track (ModelLoaderHandler* self);
+static void model_loader_handler_real_leave_track (ModelLoaderHandler* self);
+void model_loader_handler_leave_clip (ModelLoaderHandler* self);
+static void model_loader_handler_real_leave_clip (ModelLoaderHandler* self);
+void model_loader_handler_leave_clipfile (ModelLoaderHandler* self);
+static void model_loader_handler_real_leave_clipfile (ModelLoaderHandler* self);
+gpointer model_xml_tree_loader_ref (gpointer instance);
+void model_xml_tree_loader_unref (gpointer instance);
+GParamSpec* model_param_spec_xml_tree_loader (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void model_value_set_xml_tree_loader (GValue* value, gpointer v_object);
+void model_value_take_xml_tree_loader (GValue* value, gpointer v_object);
+gpointer model_value_get_xml_tree_loader (const GValue* value);
+GType model_xml_tree_loader_get_type (void);
+gpointer model_xml_element_ref (gpointer instance);
+void model_xml_element_unref (gpointer instance);
+GParamSpec* model_param_spec_xml_element (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void model_value_set_xml_element (GValue* value, gpointer v_object);
+void model_value_take_xml_element (GValue* value, gpointer v_object);
+gpointer model_value_get_xml_element (const GValue* value);
+GType model_xml_element_get_type (void);
+#define MODEL_XML_TREE_LOADER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_XML_TREE_LOADER, ModelXmlTreeLoaderPrivate))
+enum {
+ MODEL_XML_TREE_LOADER_DUMMY_PROPERTY
+};
+static void model_xml_tree_loader_xml_start_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1);
+static void _model_xml_tree_loader_xml_start_element_gmarkup_parser_start_element_func (GMarkupParseContext* context, const char* element_name, char** attribute_names, char** attribute_values, gpointer self);
+static void model_xml_tree_loader_xml_end_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name);
+static void _model_xml_tree_loader_xml_end_element_gmarkup_parser_end_element_func (GMarkupParseContext* context, const char* element_name, gpointer self);
+ModelXmlTreeLoader* model_xml_tree_loader_new (const char* document);
+ModelXmlTreeLoader* model_xml_tree_loader_construct (GType object_type, const char* document);
+ModelXmlElement* model_xml_element_new (const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent);
+ModelXmlElement* model_xml_element_construct (GType object_type, const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent);
+void model_xml_element_add_child (ModelXmlElement* self, ModelXmlElement* child_element);
+ModelXmlElement* model_xml_element_get_parent (ModelXmlElement* self);
+static void model_xml_tree_loader_finalize (ModelXmlTreeLoader* obj);
+GType model_project_builder_get_type (void);
+#define MODEL_PROJECT_BUILDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_PROJECT_BUILDER, ModelProjectBuilderPrivate))
+enum {
+ MODEL_PROJECT_BUILDER_DUMMY_PROPERTY
+};
+ModelProjectBuilder* model_project_builder_new (ModelLoaderHandler* handler);
+ModelProjectBuilder* model_project_builder_construct (GType object_type, ModelLoaderHandler* handler);
+const char* model_xml_element_get_name (ModelXmlElement* self);
+static gboolean model_project_builder_check_name (ModelProjectBuilder* self, const char* expected_name, ModelXmlElement* node);
+GeeArrayList* model_xml_element_get_children (ModelXmlElement* self);
+static void model_project_builder_handle_clip (ModelProjectBuilder* self, ModelXmlElement* clip);
+GType logging_facility_get_type (void);
+GType logging_level_get_type (void);
+void logging_emit (GObject* object, LoggingFacility facility, LoggingLevel level, const char* message);
+static void model_project_builder_handle_track (ModelProjectBuilder* self, ModelXmlElement* track);
+static void model_project_builder_handle_preference (ModelProjectBuilder* self, ModelXmlElement* preference);
+static void model_project_builder_handle_time_signature (ModelProjectBuilder* self, ModelXmlElement* time_signature);
+static void model_project_builder_handle_tempo (ModelProjectBuilder* self, ModelXmlElement* tempo);
+static void model_project_builder_handle_map (ModelProjectBuilder* self, ModelXmlElement* map);
+static void model_project_builder_handle_library (ModelProjectBuilder* self, ModelXmlElement* library);
+static void model_project_builder_handle_tracks (ModelProjectBuilder* self, ModelXmlElement* tracks);
+static void model_project_builder_handle_preferences (ModelProjectBuilder* self, ModelXmlElement* preferences);
+static void model_project_builder_handle_maps (ModelProjectBuilder* self, ModelXmlElement* maps);
+gboolean model_project_builder_check_project (ModelProjectBuilder* self, ModelXmlElement* root);
+void model_project_builder_build_project (ModelProjectBuilder* self, ModelXmlElement* root);
+static void model_project_builder_finalize (GObject* obj);
+#define MODEL_XML_ELEMENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_XML_ELEMENT, ModelXmlElementPrivate))
+enum {
+ MODEL_XML_ELEMENT_DUMMY_PROPERTY
+};
+static void model_xml_element_set_name (ModelXmlElement* self, const char* value);
+char** copy_array (char** source, int source_length1, int* result_length1);
+static void model_xml_element_set_parent (ModelXmlElement* self, ModelXmlElement* value);
+static void model_xml_element_finalize (ModelXmlElement* obj);
+GType model_project_loader_get_type (void);
+#define MODEL_PROJECT_LOADER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderPrivate))
+enum {
+ MODEL_PROJECT_LOADER_DUMMY_PROPERTY
+};
+static void model_project_loader_on_load_error (ModelProjectLoader* self, const char* _error_);
+static void _model_project_loader_on_load_error_model_loader_handler_load_error (ModelLoaderHandler* _sender, const char* error_message, gpointer self);
+static void model_project_loader_on_handler_complete (ModelProjectLoader* self);
+static void _model_project_loader_on_handler_complete_model_loader_handler_complete (ModelLoaderHandler* _sender, gpointer self);
+ModelProjectLoader* model_project_loader_new (ModelLoaderHandler* loader_handler, const char* file_name);
+ModelProjectLoader* model_project_loader_construct (GType object_type, ModelLoaderHandler* loader_handler, const char* file_name);
+static void _model_project_loader_on_load_error_model_project_builder_error_occurred (ModelProjectBuilder* _sender, const char* _error_, gpointer self);
+void model_project_loader_load (ModelProjectLoader* self);
+static void model_project_loader_finalize (GObject* obj);
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static gint _vala_array_length (gpointer array);
+static int _vala_strcmp0 (const char * str1, const char * str2);
+
+
+
+#line 15 "ProjectLoader.vala"
+ModelLoaderHandler* model_loader_handler_construct (GType object_type) {
+#line 332 "ProjectLoader.c"
+ ModelLoaderHandler * self;
+#line 15 "ProjectLoader.vala"
+ self = (ModelLoaderHandler*) g_object_new (object_type, NULL);
+#line 336 "ProjectLoader.c"
+ return self;
+}
+
+
+#line 15 "ProjectLoader.vala"
+ModelLoaderHandler* model_loader_handler_new (void) {
+#line 15 "ProjectLoader.vala"
+ return model_loader_handler_construct (MODEL_TYPE_LOADER_HANDLER);
+#line 345 "ProjectLoader.c"
+}
+
+
+#line 18 "ProjectLoader.vala"
+static gboolean model_loader_handler_real_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 351 "ProjectLoader.c"
+ gboolean result = FALSE;
+#line 18 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE);
+#line 355 "ProjectLoader.c"
+ result = TRUE;
+#line 19 "ProjectLoader.vala"
+ return result;
+#line 359 "ProjectLoader.c"
+}
+
+
+#line 18 "ProjectLoader.vala"
+gboolean model_loader_handler_commit_library (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 18 "ProjectLoader.vala"
+ return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_library (self, attr_names, attr_names_length1, attr_values, attr_values_length1);
+#line 367 "ProjectLoader.c"
+}
+
+
+#line 22 "ProjectLoader.vala"
+static gboolean model_loader_handler_real_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 373 "ProjectLoader.c"
+ gboolean result = FALSE;
+#line 22 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE);
+#line 377 "ProjectLoader.c"
+ result = TRUE;
+#line 23 "ProjectLoader.vala"
+ return result;
+#line 381 "ProjectLoader.c"
+}
+
+
+#line 22 "ProjectLoader.vala"
+gboolean model_loader_handler_commit_marina (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 22 "ProjectLoader.vala"
+ return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_marina (self, attr_names, attr_names_length1, attr_values, attr_values_length1);
+#line 389 "ProjectLoader.c"
+}
+
+
+#line 26 "ProjectLoader.vala"
+static gboolean model_loader_handler_real_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 395 "ProjectLoader.c"
+ gboolean result = FALSE;
+#line 26 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE);
+#line 399 "ProjectLoader.c"
+ result = TRUE;
+#line 27 "ProjectLoader.vala"
+ return result;
+#line 403 "ProjectLoader.c"
+}
+
+
+#line 26 "ProjectLoader.vala"
+gboolean model_loader_handler_commit_track (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 26 "ProjectLoader.vala"
+ return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_track (self, attr_names, attr_names_length1, attr_values, attr_values_length1);
+#line 411 "ProjectLoader.c"
+}
+
+
+#line 30 "ProjectLoader.vala"
+static gboolean model_loader_handler_real_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 417 "ProjectLoader.c"
+ gboolean result = FALSE;
+#line 30 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE);
+#line 421 "ProjectLoader.c"
+ result = TRUE;
+#line 31 "ProjectLoader.vala"
+ return result;
+#line 425 "ProjectLoader.c"
+}
+
+
+#line 30 "ProjectLoader.vala"
+gboolean model_loader_handler_commit_clip (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 30 "ProjectLoader.vala"
+ return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_clip (self, attr_names, attr_names_length1, attr_values, attr_values_length1);
+#line 433 "ProjectLoader.c"
+}
+
+
+#line 34 "ProjectLoader.vala"
+static gboolean model_loader_handler_real_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 439 "ProjectLoader.c"
+ gboolean result = FALSE;
+#line 34 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE);
+#line 443 "ProjectLoader.c"
+ result = TRUE;
+#line 35 "ProjectLoader.vala"
+ return result;
+#line 447 "ProjectLoader.c"
+}
+
+
+#line 34 "ProjectLoader.vala"
+gboolean model_loader_handler_commit_clipfile (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 34 "ProjectLoader.vala"
+ return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_clipfile (self, attr_names, attr_names_length1, attr_values, attr_values_length1);
+#line 455 "ProjectLoader.c"
+}
+
+
+#line 38 "ProjectLoader.vala"
+static gboolean model_loader_handler_real_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 461 "ProjectLoader.c"
+ gboolean result = FALSE;
+#line 38 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE);
+#line 465 "ProjectLoader.c"
+ result = TRUE;
+#line 39 "ProjectLoader.vala"
+ return result;
+#line 469 "ProjectLoader.c"
+}
+
+
+#line 38 "ProjectLoader.vala"
+gboolean model_loader_handler_commit_time_signature_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 38 "ProjectLoader.vala"
+ return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_time_signature_entry (self, attr_names, attr_names_length1, attr_values, attr_values_length1);
+#line 477 "ProjectLoader.c"
+}
+
+
+#line 42 "ProjectLoader.vala"
+static gboolean model_loader_handler_real_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 483 "ProjectLoader.c"
+ gboolean result = FALSE;
+#line 42 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE);
+#line 487 "ProjectLoader.c"
+ result = TRUE;
+#line 43 "ProjectLoader.vala"
+ return result;
+#line 491 "ProjectLoader.c"
+}
+
+
+#line 42 "ProjectLoader.vala"
+gboolean model_loader_handler_commit_tempo_entry (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 42 "ProjectLoader.vala"
+ return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_tempo_entry (self, attr_names, attr_names_length1, attr_values, attr_values_length1);
+#line 499 "ProjectLoader.c"
+}
+
+
+#line 46 "ProjectLoader.vala"
+static gboolean model_loader_handler_real_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 505 "ProjectLoader.c"
+ gboolean result = FALSE;
+#line 46 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE);
+#line 509 "ProjectLoader.c"
+ result = TRUE;
+#line 47 "ProjectLoader.vala"
+ return result;
+#line 513 "ProjectLoader.c"
+}
+
+
+#line 46 "ProjectLoader.vala"
+gboolean model_loader_handler_commit_click (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 46 "ProjectLoader.vala"
+ return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_click (self, attr_names, attr_names_length1, attr_values, attr_values_length1);
+#line 521 "ProjectLoader.c"
+}
+
+
+#line 50 "ProjectLoader.vala"
+static gboolean model_loader_handler_real_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 527 "ProjectLoader.c"
+ gboolean result = FALSE;
+#line 50 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (self), FALSE);
+#line 531 "ProjectLoader.c"
+ result = TRUE;
+#line 51 "ProjectLoader.vala"
+ return result;
+#line 535 "ProjectLoader.c"
+}
+
+
+#line 50 "ProjectLoader.vala"
+gboolean model_loader_handler_commit_library_preference (ModelLoaderHandler* self, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 50 "ProjectLoader.vala"
+ return MODEL_LOADER_HANDLER_GET_CLASS (self)->commit_library_preference (self, attr_names, attr_names_length1, attr_values, attr_values_length1);
+#line 543 "ProjectLoader.c"
+}
+
+
+#line 54 "ProjectLoader.vala"
+static void model_loader_handler_real_leave_library (ModelLoaderHandler* self) {
+#line 54 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_LOADER_HANDLER (self));
+#line 551 "ProjectLoader.c"
+}
+
+
+#line 54 "ProjectLoader.vala"
+void model_loader_handler_leave_library (ModelLoaderHandler* self) {
+#line 54 "ProjectLoader.vala"
+ MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_library (self);
+#line 559 "ProjectLoader.c"
+}
+
+
+#line 57 "ProjectLoader.vala"
+static void model_loader_handler_real_leave_marina (ModelLoaderHandler* self) {
+#line 57 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_LOADER_HANDLER (self));
+#line 567 "ProjectLoader.c"
+}
+
+
+#line 57 "ProjectLoader.vala"
+void model_loader_handler_leave_marina (ModelLoaderHandler* self) {
+#line 57 "ProjectLoader.vala"
+ MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_marina (self);
+#line 575 "ProjectLoader.c"
+}
+
+
+#line 60 "ProjectLoader.vala"
+static void model_loader_handler_real_leave_track (ModelLoaderHandler* self) {
+#line 60 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_LOADER_HANDLER (self));
+#line 583 "ProjectLoader.c"
+}
+
+
+#line 60 "ProjectLoader.vala"
+void model_loader_handler_leave_track (ModelLoaderHandler* self) {
+#line 60 "ProjectLoader.vala"
+ MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_track (self);
+#line 591 "ProjectLoader.c"
+}
+
+
+#line 63 "ProjectLoader.vala"
+static void model_loader_handler_real_leave_clip (ModelLoaderHandler* self) {
+#line 63 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_LOADER_HANDLER (self));
+#line 599 "ProjectLoader.c"
+}
+
+
+#line 63 "ProjectLoader.vala"
+void model_loader_handler_leave_clip (ModelLoaderHandler* self) {
+#line 63 "ProjectLoader.vala"
+ MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_clip (self);
+#line 607 "ProjectLoader.c"
+}
+
+
+#line 66 "ProjectLoader.vala"
+static void model_loader_handler_real_leave_clipfile (ModelLoaderHandler* self) {
+#line 66 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_LOADER_HANDLER (self));
+#line 615 "ProjectLoader.c"
+}
+
+
+#line 66 "ProjectLoader.vala"
+void model_loader_handler_leave_clipfile (ModelLoaderHandler* self) {
+#line 66 "ProjectLoader.vala"
+ MODEL_LOADER_HANDLER_GET_CLASS (self)->leave_clipfile (self);
+#line 623 "ProjectLoader.c"
+}
+
+
+static void model_loader_handler_class_init (ModelLoaderHandlerClass * klass) {
+ model_loader_handler_parent_class = g_type_class_peek_parent (klass);
+ MODEL_LOADER_HANDLER_CLASS (klass)->commit_library = model_loader_handler_real_commit_library;
+ MODEL_LOADER_HANDLER_CLASS (klass)->commit_marina = model_loader_handler_real_commit_marina;
+ MODEL_LOADER_HANDLER_CLASS (klass)->commit_track = model_loader_handler_real_commit_track;
+ MODEL_LOADER_HANDLER_CLASS (klass)->commit_clip = model_loader_handler_real_commit_clip;
+ MODEL_LOADER_HANDLER_CLASS (klass)->commit_clipfile = model_loader_handler_real_commit_clipfile;
+ MODEL_LOADER_HANDLER_CLASS (klass)->commit_time_signature_entry = model_loader_handler_real_commit_time_signature_entry;
+ MODEL_LOADER_HANDLER_CLASS (klass)->commit_tempo_entry = model_loader_handler_real_commit_tempo_entry;
+ MODEL_LOADER_HANDLER_CLASS (klass)->commit_click = model_loader_handler_real_commit_click;
+ MODEL_LOADER_HANDLER_CLASS (klass)->commit_library_preference = model_loader_handler_real_commit_library_preference;
+ MODEL_LOADER_HANDLER_CLASS (klass)->leave_library = model_loader_handler_real_leave_library;
+ MODEL_LOADER_HANDLER_CLASS (klass)->leave_marina = model_loader_handler_real_leave_marina;
+ MODEL_LOADER_HANDLER_CLASS (klass)->leave_track = model_loader_handler_real_leave_track;
+ MODEL_LOADER_HANDLER_CLASS (klass)->leave_clip = model_loader_handler_real_leave_clip;
+ MODEL_LOADER_HANDLER_CLASS (klass)->leave_clipfile = model_loader_handler_real_leave_clipfile;
+ g_signal_new ("load_error", MODEL_TYPE_LOADER_HANDLER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+ g_signal_new ("complete", MODEL_TYPE_LOADER_HANDLER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+}
+
+
+static void model_loader_handler_instance_init (ModelLoaderHandler * self) {
+}
+
+
+GType model_loader_handler_get_type (void) {
+ static volatile gsize model_loader_handler_type_id__volatile = 0;
+ if (g_once_init_enter (&model_loader_handler_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (ModelLoaderHandlerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_loader_handler_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelLoaderHandler), 0, (GInstanceInitFunc) model_loader_handler_instance_init, NULL };
+ GType model_loader_handler_type_id;
+ model_loader_handler_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelLoaderHandler", &g_define_type_info, 0);
+ g_once_init_leave (&model_loader_handler_type_id__volatile, model_loader_handler_type_id);
+ }
+ return model_loader_handler_type_id__volatile;
+}
+
+
+#line 87 "ProjectLoader.vala"
+static void _model_xml_tree_loader_xml_start_element_gmarkup_parser_start_element_func (GMarkupParseContext* context, const char* element_name, char** attribute_names, char** attribute_values, gpointer self) {
+#line 666 "ProjectLoader.c"
+ model_xml_tree_loader_xml_start_element (self, context, element_name, attribute_names, _vala_array_length (attribute_names), attribute_values, _vala_array_length (attribute_values));
+}
+
+
+#line 100 "ProjectLoader.vala"
+static void _model_xml_tree_loader_xml_end_element_gmarkup_parser_end_element_func (GMarkupParseContext* context, const char* element_name, gpointer self) {
+#line 673 "ProjectLoader.c"
+ model_xml_tree_loader_xml_end_element (self, context, element_name);
+}
+
+
+static glong string_get_length (const char* self) {
+ glong result;
+ g_return_val_if_fail (self != NULL, 0L);
+ result = g_utf8_strlen (self, -1);
+#line 1158 "glib-2.0.vapi"
+ return result;
+#line 684 "ProjectLoader.c"
+}
+
+
+#line 76 "ProjectLoader.vala"
+ModelXmlTreeLoader* model_xml_tree_loader_construct (GType object_type, const char* document) {
+#line 690 "ProjectLoader.c"
+ GError * _inner_error_;
+ ModelXmlTreeLoader* self;
+ GMarkupParser _tmp0_ = {0};
+ GMarkupParser parser;
+ GMarkupParseContext* context;
+#line 76 "ProjectLoader.vala"
+ g_return_val_if_fail (document != NULL, NULL);
+#line 698 "ProjectLoader.c"
+ _inner_error_ = NULL;
+ self = (ModelXmlTreeLoader*) g_type_create_instance (object_type);
+#line 77 "ProjectLoader.vala"
+ parser = (_tmp0_.start_element = _model_xml_tree_loader_xml_start_element_gmarkup_parser_start_element_func, _tmp0_.end_element = _model_xml_tree_loader_xml_end_element_gmarkup_parser_end_element_func, _tmp0_.text = NULL, _tmp0_.passthrough = NULL, _tmp0_);
+#line 79 "ProjectLoader.vala"
+ context = g_markup_parse_context_new (&parser, (GMarkupParseFlags) 0, self, NULL);
+#line 705 "ProjectLoader.c"
+ {
+#line 81 "ProjectLoader.vala"
+ g_markup_parse_context_parse (context, document, (gssize) string_get_length (document), &_inner_error_);
+#line 709 "ProjectLoader.c"
+ if (_inner_error_ != NULL) {
+ if (_inner_error_->domain == G_MARKUP_ERROR) {
+ goto __catch12_g_markup_error;
+ }
+ _g_markup_parse_context_free0 (context);
+ g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+ g_clear_error (&_inner_error_);
+ return NULL;
+ }
+ }
+ goto __finally12;
+ __catch12_g_markup_error:
+ {
+ GError * e;
+ e = _inner_error_;
+ _inner_error_ = NULL;
+ {
+ _g_error_free0 (e);
+ }
+ }
+ __finally12:
+ if (_inner_error_ != NULL) {
+ _g_markup_parse_context_free0 (context);
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+ g_clear_error (&_inner_error_);
+ return NULL;
+ }
+ _g_markup_parse_context_free0 (context);
+ return self;
+}
+
+
+#line 76 "ProjectLoader.vala"
+ModelXmlTreeLoader* model_xml_tree_loader_new (const char* document) {
+#line 76 "ProjectLoader.vala"
+ return model_xml_tree_loader_construct (MODEL_TYPE_XML_TREE_LOADER, document);
+#line 746 "ProjectLoader.c"
+}
+
+
+static gpointer _model_xml_element_ref0 (gpointer self) {
+ return self ? model_xml_element_ref (self) : NULL;
+}
+
+
+#line 87 "ProjectLoader.vala"
+static void model_xml_tree_loader_xml_start_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name, char** attr_names, int attr_names_length1, char** attr_values, int attr_values_length1) {
+#line 757 "ProjectLoader.c"
+ ModelXmlElement* new_element;
+ ModelXmlElement* _tmp1_;
+#line 87 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_TREE_LOADER (self));
+#line 87 "ProjectLoader.vala"
+ g_return_if_fail (c != NULL);
+#line 87 "ProjectLoader.vala"
+ g_return_if_fail (name != NULL);
+#line 89 "ProjectLoader.vala"
+ new_element = model_xml_element_new (name, attr_names, attr_names_length1, attr_values, attr_values_length1, self->priv->current_element);
+#line 90 "ProjectLoader.vala"
+ if (self->root == NULL) {
+#line 770 "ProjectLoader.c"
+ ModelXmlElement* _tmp0_;
+#line 91 "ProjectLoader.vala"
+ self->root = (_tmp0_ = _model_xml_element_ref0 (new_element), _model_xml_element_unref0 (self->root), _tmp0_);
+#line 774 "ProjectLoader.c"
+ } else {
+#line 93 "ProjectLoader.vala"
+ g_assert (self->priv->current_element != NULL);
+#line 94 "ProjectLoader.vala"
+ model_xml_element_add_child (self->priv->current_element, new_element);
+#line 780 "ProjectLoader.c"
+ }
+#line 97 "ProjectLoader.vala"
+ self->priv->current_element = (_tmp1_ = _model_xml_element_ref0 (new_element), _model_xml_element_unref0 (self->priv->current_element), _tmp1_);
+#line 784 "ProjectLoader.c"
+ _model_xml_element_unref0 (new_element);
+}
+
+
+#line 100 "ProjectLoader.vala"
+static void model_xml_tree_loader_xml_end_element (ModelXmlTreeLoader* self, GMarkupParseContext* c, const char* name) {
+#line 791 "ProjectLoader.c"
+ ModelXmlElement* _tmp0_;
+#line 100 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_TREE_LOADER (self));
+#line 100 "ProjectLoader.vala"
+ g_return_if_fail (c != NULL);
+#line 100 "ProjectLoader.vala"
+ g_return_if_fail (name != NULL);
+#line 101 "ProjectLoader.vala"
+ g_assert (self->priv->current_element != NULL);
+#line 102 "ProjectLoader.vala"
+ self->priv->current_element = (_tmp0_ = _model_xml_element_ref0 (model_xml_element_get_parent (self->priv->current_element)), _model_xml_element_unref0 (self->priv->current_element), _tmp0_);
+#line 803 "ProjectLoader.c"
+}
+
+
+static void model_value_xml_tree_loader_init (GValue* value) {
+ value->data[0].v_pointer = NULL;
+}
+
+
+static void model_value_xml_tree_loader_free_value (GValue* value) {
+ if (value->data[0].v_pointer) {
+ model_xml_tree_loader_unref (value->data[0].v_pointer);
+ }
+}
+
+
+static void model_value_xml_tree_loader_copy_value (const GValue* src_value, GValue* dest_value) {
+ if (src_value->data[0].v_pointer) {
+ dest_value->data[0].v_pointer = model_xml_tree_loader_ref (src_value->data[0].v_pointer);
+ } else {
+ dest_value->data[0].v_pointer = NULL;
+ }
+}
+
+
+static gpointer model_value_xml_tree_loader_peek_pointer (const GValue* value) {
+ return value->data[0].v_pointer;
+}
+
+
+static gchar* model_value_xml_tree_loader_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+ if (collect_values[0].v_pointer) {
+ ModelXmlTreeLoader* object;
+ object = collect_values[0].v_pointer;
+ if (object->parent_instance.g_class == NULL) {
+ return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+ } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
+ return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+ }
+ value->data[0].v_pointer = model_xml_tree_loader_ref (object);
+ } else {
+ value->data[0].v_pointer = NULL;
+ }
+ return NULL;
+}
+
+
+static gchar* model_value_xml_tree_loader_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+ ModelXmlTreeLoader** object_p;
+ object_p = collect_values[0].v_pointer;
+ if (!object_p) {
+ return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
+ }
+ if (!value->data[0].v_pointer) {
+ *object_p = NULL;
+ } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) {
+ *object_p = value->data[0].v_pointer;
+ } else {
+ *object_p = model_xml_tree_loader_ref (value->data[0].v_pointer);
+ }
+ return NULL;
+}
+
+
+GParamSpec* model_param_spec_xml_tree_loader (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
+ ModelParamSpecXmlTreeLoader* spec;
+ g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_XML_TREE_LOADER), NULL);
+ spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
+ G_PARAM_SPEC (spec)->value_type = object_type;
+ return G_PARAM_SPEC (spec);
+}
+
+
+gpointer model_value_get_xml_tree_loader (const GValue* value) {
+ g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_TREE_LOADER), NULL);
+ return value->data[0].v_pointer;
+}
+
+
+void model_value_set_xml_tree_loader (GValue* value, gpointer v_object) {
+ ModelXmlTreeLoader* old;
+ g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_TREE_LOADER));
+ old = value->data[0].v_pointer;
+ if (v_object) {
+ g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_TREE_LOADER));
+ g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+ value->data[0].v_pointer = v_object;
+ model_xml_tree_loader_ref (value->data[0].v_pointer);
+ } else {
+ value->data[0].v_pointer = NULL;
+ }
+ if (old) {
+ model_xml_tree_loader_unref (old);
+ }
+}
+
+
+void model_value_take_xml_tree_loader (GValue* value, gpointer v_object) {
+ ModelXmlTreeLoader* old;
+ g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_TREE_LOADER));
+ old = value->data[0].v_pointer;
+ if (v_object) {
+ g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_TREE_LOADER));
+ g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+ value->data[0].v_pointer = v_object;
+ } else {
+ value->data[0].v_pointer = NULL;
+ }
+ if (old) {
+ model_xml_tree_loader_unref (old);
+ }
+}
+
+
+static void model_xml_tree_loader_class_init (ModelXmlTreeLoaderClass * klass) {
+ model_xml_tree_loader_parent_class = g_type_class_peek_parent (klass);
+ MODEL_XML_TREE_LOADER_CLASS (klass)->finalize = model_xml_tree_loader_finalize;
+ g_type_class_add_private (klass, sizeof (ModelXmlTreeLoaderPrivate));
+}
+
+
+static void model_xml_tree_loader_instance_init (ModelXmlTreeLoader * self) {
+ self->priv = MODEL_XML_TREE_LOADER_GET_PRIVATE (self);
+ self->priv->current_element = NULL;
+ self->root = NULL;
+ self->ref_count = 1;
+}
+
+
+static void model_xml_tree_loader_finalize (ModelXmlTreeLoader* obj) {
+ ModelXmlTreeLoader * self;
+ self = MODEL_XML_TREE_LOADER (obj);
+ _model_xml_element_unref0 (self->priv->current_element);
+ _model_xml_element_unref0 (self->root);
+}
+
+
+GType model_xml_tree_loader_get_type (void) {
+ static volatile gsize model_xml_tree_loader_type_id__volatile = 0;
+ if (g_once_init_enter (&model_xml_tree_loader_type_id__volatile)) {
+ static const GTypeValueTable g_define_type_value_table = { model_value_xml_tree_loader_init, model_value_xml_tree_loader_free_value, model_value_xml_tree_loader_copy_value, model_value_xml_tree_loader_peek_pointer, "p", model_value_xml_tree_loader_collect_value, "p", model_value_xml_tree_loader_lcopy_value };
+ static const GTypeInfo g_define_type_info = { sizeof (ModelXmlTreeLoaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_xml_tree_loader_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelXmlTreeLoader), 0, (GInstanceInitFunc) model_xml_tree_loader_instance_init, &g_define_type_value_table };
+ static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
+ GType model_xml_tree_loader_type_id;
+ model_xml_tree_loader_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelXmlTreeLoader", &g_define_type_info, &g_define_type_fundamental_info, 0);
+ g_once_init_leave (&model_xml_tree_loader_type_id__volatile, model_xml_tree_loader_type_id);
+ }
+ return model_xml_tree_loader_type_id__volatile;
+}
+
+
+gpointer model_xml_tree_loader_ref (gpointer instance) {
+ ModelXmlTreeLoader* self;
+ self = instance;
+ g_atomic_int_inc (&self->ref_count);
+ return instance;
+}
+
+
+void model_xml_tree_loader_unref (gpointer instance) {
+ ModelXmlTreeLoader* self;
+ self = instance;
+ if (g_atomic_int_dec_and_test (&self->ref_count)) {
+ MODEL_XML_TREE_LOADER_GET_CLASS (self)->finalize (self);
+ g_type_free_instance ((GTypeInstance *) self);
+ }
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+ return self ? g_object_ref (self) : NULL;
+}
+
+
+#line 114 "ProjectLoader.vala"
+ModelProjectBuilder* model_project_builder_construct (GType object_type, ModelLoaderHandler* handler) {
+#line 979 "ProjectLoader.c"
+ ModelProjectBuilder * self;
+ ModelLoaderHandler* _tmp0_;
+#line 114 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (handler), NULL);
+#line 114 "ProjectLoader.vala"
+ self = (ModelProjectBuilder*) g_object_new (object_type, NULL);
+#line 115 "ProjectLoader.vala"
+ self->priv->handler = (_tmp0_ = _g_object_ref0 (handler), _g_object_unref0 (self->priv->handler), _tmp0_);
+#line 988 "ProjectLoader.c"
+ return self;
+}
+
+
+#line 114 "ProjectLoader.vala"
+ModelProjectBuilder* model_project_builder_new (ModelLoaderHandler* handler) {
+#line 114 "ProjectLoader.vala"
+ return model_project_builder_construct (MODEL_TYPE_PROJECT_BUILDER, handler);
+#line 997 "ProjectLoader.c"
+}
+
+
+#line 118 "ProjectLoader.vala"
+static gboolean model_project_builder_check_name (ModelProjectBuilder* self, const char* expected_name, ModelXmlElement* node) {
+#line 1003 "ProjectLoader.c"
+ gboolean result = FALSE;
+ char* _tmp0_;
+#line 118 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_PROJECT_BUILDER (self), FALSE);
+#line 118 "ProjectLoader.vala"
+ g_return_val_if_fail (expected_name != NULL, FALSE);
+#line 118 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_XML_ELEMENT (node), FALSE);
+#line 119 "ProjectLoader.vala"
+ if (_vala_strcmp0 (model_xml_element_get_name (node), expected_name) == 0) {
+#line 1014 "ProjectLoader.c"
+ result = TRUE;
+#line 120 "ProjectLoader.vala"
+ return result;
+#line 1018 "ProjectLoader.c"
+ }
+#line 123 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "error-occurred", _tmp0_ = g_strdup_printf ("expected %s, got %s", expected_name, model_xml_element_get_name (node)));
+#line 1022 "ProjectLoader.c"
+ _g_free0 (_tmp0_);
+ result = FALSE;
+#line 124 "ProjectLoader.vala"
+ return result;
+#line 1027 "ProjectLoader.c"
+}
+
+
+#line 127 "ProjectLoader.vala"
+static void model_project_builder_handle_clip (ModelProjectBuilder* self, ModelXmlElement* clip) {
+#line 127 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 127 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (clip));
+#line 128 "ProjectLoader.vala"
+ if (model_project_builder_check_name (self, "clip", clip)) {
+#line 129 "ProjectLoader.vala"
+ if (model_loader_handler_commit_clip (self->priv->handler, clip->attribute_names, clip->attribute_names_length1, clip->attribute_values, clip->attribute_values_length1)) {
+#line 130 "ProjectLoader.vala"
+ if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (clip))) != 0) {
+#line 131 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "error-occurred", "clip cannot have children");
+#line 1045 "ProjectLoader.c"
+ }
+#line 133 "ProjectLoader.vala"
+ model_loader_handler_leave_clip (self->priv->handler);
+#line 1049 "ProjectLoader.c"
+ }
+ }
+}
+
+
+#line 138 "ProjectLoader.vala"
+static void model_project_builder_handle_track (ModelProjectBuilder* self, ModelXmlElement* track) {
+#line 138 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 138 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (track));
+#line 139 "ProjectLoader.vala"
+ if (model_project_builder_check_name (self, "track", track)) {
+#line 140 "ProjectLoader.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_VERBOSE, "loading track");
+#line 141 "ProjectLoader.vala"
+ if (model_loader_handler_commit_track (self->priv->handler, track->attribute_names, track->attribute_names_length1, track->attribute_values, track->attribute_values_length1)) {
+#line 1067 "ProjectLoader.c"
+ {
+ GeeIterator* _child_it;
+ _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (track)));
+#line 142 "ProjectLoader.vala"
+ while (TRUE) {
+#line 1073 "ProjectLoader.c"
+ ModelXmlElement* child;
+#line 142 "ProjectLoader.vala"
+ if (!gee_iterator_next (_child_it)) {
+#line 142 "ProjectLoader.vala"
+ break;
+#line 1079 "ProjectLoader.c"
+ }
+#line 142 "ProjectLoader.vala"
+ child = (ModelXmlElement*) gee_iterator_get (_child_it);
+#line 143 "ProjectLoader.vala"
+ model_project_builder_handle_clip (self, child);
+#line 1085 "ProjectLoader.c"
+ _model_xml_element_unref0 (child);
+ }
+ _g_object_unref0 (_child_it);
+ }
+#line 145 "ProjectLoader.vala"
+ model_loader_handler_leave_track (self->priv->handler);
+#line 1092 "ProjectLoader.c"
+ }
+ }
+}
+
+
+#line 150 "ProjectLoader.vala"
+static void model_project_builder_handle_preference (ModelProjectBuilder* self, ModelXmlElement* preference) {
+#line 150 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 150 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (preference));
+#line 151 "ProjectLoader.vala"
+ if (_vala_strcmp0 ("click", model_xml_element_get_name (preference)) == 0) {
+#line 152 "ProjectLoader.vala"
+ model_loader_handler_commit_click (self->priv->handler, preference->attribute_names, preference->attribute_names_length1, preference->attribute_values, preference->attribute_values_length1);
+#line 1108 "ProjectLoader.c"
+ } else {
+#line 153 "ProjectLoader.vala"
+ if (_vala_strcmp0 ("library", model_xml_element_get_name (preference)) == 0) {
+#line 154 "ProjectLoader.vala"
+ model_loader_handler_commit_library_preference (self->priv->handler, preference->attribute_names, preference->attribute_names_length1, preference->attribute_values, preference->attribute_values_length1);
+#line 1114 "ProjectLoader.c"
+ } else {
+ char* _tmp0_;
+#line 157 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "error-occurred", _tmp0_ = g_strdup_printf ("Unknown preference: %s", model_xml_element_get_name (preference)));
+#line 1119 "ProjectLoader.c"
+ _g_free0 (_tmp0_);
+ }
+ }
+}
+
+
+#line 161 "ProjectLoader.vala"
+static void model_project_builder_handle_time_signature (ModelProjectBuilder* self, ModelXmlElement* time_signature) {
+#line 161 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 161 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (time_signature));
+#line 1132 "ProjectLoader.c"
+ {
+ GeeIterator* _child_it;
+ _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (time_signature)));
+#line 162 "ProjectLoader.vala"
+ while (TRUE) {
+#line 1138 "ProjectLoader.c"
+ ModelXmlElement* child;
+#line 162 "ProjectLoader.vala"
+ if (!gee_iterator_next (_child_it)) {
+#line 162 "ProjectLoader.vala"
+ break;
+#line 1144 "ProjectLoader.c"
+ }
+#line 162 "ProjectLoader.vala"
+ child = (ModelXmlElement*) gee_iterator_get (_child_it);
+#line 163 "ProjectLoader.vala"
+ if (model_project_builder_check_name (self, "entry", child)) {
+#line 164 "ProjectLoader.vala"
+ if (!model_loader_handler_commit_time_signature_entry (self->priv->handler, child->attribute_names, child->attribute_names_length1, child->attribute_values, child->attribute_values_length1)) {
+#line 166 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "error-occurred", "Improper time signature node");
+#line 1154 "ProjectLoader.c"
+ }
+ }
+ _model_xml_element_unref0 (child);
+ }
+ _g_object_unref0 (_child_it);
+ }
+}
+
+
+#line 172 "ProjectLoader.vala"
+static void model_project_builder_handle_tempo (ModelProjectBuilder* self, ModelXmlElement* tempo) {
+#line 172 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 172 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (tempo));
+#line 1170 "ProjectLoader.c"
+ {
+ GeeIterator* _child_it;
+ _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (tempo)));
+#line 173 "ProjectLoader.vala"
+ while (TRUE) {
+#line 1176 "ProjectLoader.c"
+ ModelXmlElement* child;
+#line 173 "ProjectLoader.vala"
+ if (!gee_iterator_next (_child_it)) {
+#line 173 "ProjectLoader.vala"
+ break;
+#line 1182 "ProjectLoader.c"
+ }
+#line 173 "ProjectLoader.vala"
+ child = (ModelXmlElement*) gee_iterator_get (_child_it);
+#line 174 "ProjectLoader.vala"
+ if (model_project_builder_check_name (self, "entry", child)) {
+#line 175 "ProjectLoader.vala"
+ if (!model_loader_handler_commit_tempo_entry (self->priv->handler, child->attribute_names, child->attribute_names_length1, child->attribute_values, child->attribute_values_length1)) {
+#line 176 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "error-occurred", "Improper tempo node");
+#line 1192 "ProjectLoader.c"
+ }
+ }
+ _model_xml_element_unref0 (child);
+ }
+ _g_object_unref0 (_child_it);
+ }
+}
+
+
+#line 182 "ProjectLoader.vala"
+static void model_project_builder_handle_map (ModelProjectBuilder* self, ModelXmlElement* map) {
+#line 1204 "ProjectLoader.c"
+ GQuark _tmp1_;
+ const char* _tmp0_;
+ static GQuark _tmp1__label0 = 0;
+ static GQuark _tmp1__label1 = 0;
+#line 182 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 182 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (map));
+#line 1213 "ProjectLoader.c"
+ _tmp0_ = model_xml_element_get_name (map);
+ _tmp1_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_);
+ if (_tmp1_ == ((0 != _tmp1__label0) ? _tmp1__label0 : (_tmp1__label0 = g_quark_from_static_string ("tempo"))))
+ switch (0) {
+ default:
+ {
+#line 185 "ProjectLoader.vala"
+ model_project_builder_handle_tempo (self, map);
+#line 186 "ProjectLoader.vala"
+ break;
+#line 1224 "ProjectLoader.c"
+ }
+ } else if (_tmp1_ == ((0 != _tmp1__label1) ? _tmp1__label1 : (_tmp1__label1 = g_quark_from_static_string ("time_signature"))))
+ switch (0) {
+ default:
+ {
+#line 188 "ProjectLoader.vala"
+ model_project_builder_handle_time_signature (self, map);
+#line 189 "ProjectLoader.vala"
+ break;
+#line 1234 "ProjectLoader.c"
+ }
+ } else
+ switch (0) {
+ default:
+ {
+#line 191 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "error-occurred", "improper map node");
+#line 192 "ProjectLoader.vala"
+ break;
+#line 1244 "ProjectLoader.c"
+ }
+ }
+}
+
+
+#line 196 "ProjectLoader.vala"
+static void model_project_builder_handle_library (ModelProjectBuilder* self, ModelXmlElement* library) {
+#line 196 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 196 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (library));
+#line 197 "ProjectLoader.vala"
+ if (model_loader_handler_commit_library (self->priv->handler, library->attribute_names, library->attribute_names_length1, library->attribute_values, library->attribute_values_length1)) {
+#line 1258 "ProjectLoader.c"
+ {
+ GeeIterator* _child_it;
+ _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (library)));
+#line 198 "ProjectLoader.vala"
+ while (TRUE) {
+#line 1264 "ProjectLoader.c"
+ ModelXmlElement* child;
+#line 198 "ProjectLoader.vala"
+ if (!gee_iterator_next (_child_it)) {
+#line 198 "ProjectLoader.vala"
+ break;
+#line 1270 "ProjectLoader.c"
+ }
+#line 198 "ProjectLoader.vala"
+ child = (ModelXmlElement*) gee_iterator_get (_child_it);
+#line 199 "ProjectLoader.vala"
+ if (!model_loader_handler_commit_clipfile (self->priv->handler, child->attribute_names, child->attribute_names_length1, child->attribute_values, child->attribute_values_length1)) {
+#line 200 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "error-occurred", "Improper library node");
+#line 1278 "ProjectLoader.c"
+ }
+ _model_xml_element_unref0 (child);
+ }
+ _g_object_unref0 (_child_it);
+ }
+#line 202 "ProjectLoader.vala"
+ model_loader_handler_leave_library (self->priv->handler);
+#line 1286 "ProjectLoader.c"
+ }
+}
+
+
+#line 206 "ProjectLoader.vala"
+static void model_project_builder_handle_tracks (ModelProjectBuilder* self, ModelXmlElement* tracks) {
+#line 206 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 206 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (tracks));
+#line 1297 "ProjectLoader.c"
+ {
+ GeeIterator* _child_it;
+ _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (tracks)));
+#line 207 "ProjectLoader.vala"
+ while (TRUE) {
+#line 1303 "ProjectLoader.c"
+ ModelXmlElement* child;
+#line 207 "ProjectLoader.vala"
+ if (!gee_iterator_next (_child_it)) {
+#line 207 "ProjectLoader.vala"
+ break;
+#line 1309 "ProjectLoader.c"
+ }
+#line 207 "ProjectLoader.vala"
+ child = (ModelXmlElement*) gee_iterator_get (_child_it);
+#line 208 "ProjectLoader.vala"
+ model_project_builder_handle_track (self, child);
+#line 1315 "ProjectLoader.c"
+ _model_xml_element_unref0 (child);
+ }
+ _g_object_unref0 (_child_it);
+ }
+}
+
+
+#line 212 "ProjectLoader.vala"
+static void model_project_builder_handle_preferences (ModelProjectBuilder* self, ModelXmlElement* preferences) {
+#line 212 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 212 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (preferences));
+#line 1329 "ProjectLoader.c"
+ {
+ GeeIterator* _child_it;
+ _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (preferences)));
+#line 213 "ProjectLoader.vala"
+ while (TRUE) {
+#line 1335 "ProjectLoader.c"
+ ModelXmlElement* child;
+#line 213 "ProjectLoader.vala"
+ if (!gee_iterator_next (_child_it)) {
+#line 213 "ProjectLoader.vala"
+ break;
+#line 1341 "ProjectLoader.c"
+ }
+#line 213 "ProjectLoader.vala"
+ child = (ModelXmlElement*) gee_iterator_get (_child_it);
+#line 214 "ProjectLoader.vala"
+ model_project_builder_handle_preference (self, child);
+#line 1347 "ProjectLoader.c"
+ _model_xml_element_unref0 (child);
+ }
+ _g_object_unref0 (_child_it);
+ }
+}
+
+
+#line 217 "ProjectLoader.vala"
+static void model_project_builder_handle_maps (ModelProjectBuilder* self, ModelXmlElement* maps) {
+#line 217 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 217 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (maps));
+#line 1361 "ProjectLoader.c"
+ {
+ GeeIterator* _child_it;
+ _child_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (model_xml_element_get_children (maps)));
+#line 218 "ProjectLoader.vala"
+ while (TRUE) {
+#line 1367 "ProjectLoader.c"
+ ModelXmlElement* child;
+#line 218 "ProjectLoader.vala"
+ if (!gee_iterator_next (_child_it)) {
+#line 218 "ProjectLoader.vala"
+ break;
+#line 1373 "ProjectLoader.c"
+ }
+#line 218 "ProjectLoader.vala"
+ child = (ModelXmlElement*) gee_iterator_get (_child_it);
+#line 219 "ProjectLoader.vala"
+ model_project_builder_handle_map (self, child);
+#line 1379 "ProjectLoader.c"
+ _model_xml_element_unref0 (child);
+ }
+ _g_object_unref0 (_child_it);
+ }
+}
+
+
+#line 222 "ProjectLoader.vala"
+gboolean model_project_builder_check_project (ModelProjectBuilder* self, ModelXmlElement* root) {
+#line 1389 "ProjectLoader.c"
+ gboolean result = FALSE;
+ gboolean _tmp0_ = FALSE;
+#line 222 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_PROJECT_BUILDER (self), FALSE);
+#line 222 "ProjectLoader.vala"
+ g_return_val_if_fail ((root == NULL) || MODEL_IS_XML_ELEMENT (root), FALSE);
+#line 223 "ProjectLoader.vala"
+ if (root == NULL) {
+#line 224 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "error-occurred", "Invalid XML file!");
+#line 1400 "ProjectLoader.c"
+ result = FALSE;
+#line 225 "ProjectLoader.vala"
+ return result;
+#line 1404 "ProjectLoader.c"
+ }
+#line 228 "ProjectLoader.vala"
+ if (model_project_builder_check_name (self, "marina", root)) {
+#line 229 "ProjectLoader.vala"
+ _tmp0_ = model_loader_handler_commit_marina (self->priv->handler, root->attribute_names, root->attribute_names_length1, root->attribute_values, root->attribute_values_length1);
+#line 1410 "ProjectLoader.c"
+ } else {
+#line 228 "ProjectLoader.vala"
+ _tmp0_ = FALSE;
+#line 1414 "ProjectLoader.c"
+ }
+#line 228 "ProjectLoader.vala"
+ if (_tmp0_) {
+#line 1418 "ProjectLoader.c"
+ gboolean _tmp1_ = FALSE;
+ gboolean _tmp2_ = FALSE;
+ gboolean _tmp3_ = FALSE;
+ ModelXmlElement* _tmp4_;
+ gboolean _tmp5_;
+ gboolean _tmp8_ = FALSE;
+#line 230 "ProjectLoader.vala"
+ if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) != 3) {
+#line 230 "ProjectLoader.vala"
+ _tmp1_ = gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) != 4;
+#line 1429 "ProjectLoader.c"
+ } else {
+#line 230 "ProjectLoader.vala"
+ _tmp1_ = FALSE;
+#line 1433 "ProjectLoader.c"
+ }
+#line 230 "ProjectLoader.vala"
+ if (_tmp1_) {
+#line 231 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "error-occurred", "Improper number of children!");
+#line 1439 "ProjectLoader.c"
+ result = FALSE;
+#line 232 "ProjectLoader.vala"
+ return result;
+#line 1443 "ProjectLoader.c"
+ }
+#line 235 "ProjectLoader.vala"
+ if ((_tmp5_ = !model_project_builder_check_name (self, "library", _tmp4_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 0)), _model_xml_element_unref0 (_tmp4_), _tmp5_)) {
+#line 235 "ProjectLoader.vala"
+ _tmp3_ = TRUE;
+#line 1449 "ProjectLoader.c"
+ } else {
+ ModelXmlElement* _tmp6_;
+#line 236 "ProjectLoader.vala"
+ _tmp3_ = !model_project_builder_check_name (self, "tracks", _tmp6_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 1));
+#line 1454 "ProjectLoader.c"
+ _model_xml_element_unref0 (_tmp6_);
+ }
+#line 235 "ProjectLoader.vala"
+ if (_tmp3_) {
+#line 235 "ProjectLoader.vala"
+ _tmp2_ = TRUE;
+#line 1461 "ProjectLoader.c"
+ } else {
+ ModelXmlElement* _tmp7_;
+#line 237 "ProjectLoader.vala"
+ _tmp2_ = !model_project_builder_check_name (self, "preferences", _tmp7_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 2));
+#line 1466 "ProjectLoader.c"
+ _model_xml_element_unref0 (_tmp7_);
+ }
+#line 235 "ProjectLoader.vala"
+ if (_tmp2_) {
+#line 1471 "ProjectLoader.c"
+ result = FALSE;
+#line 238 "ProjectLoader.vala"
+ return result;
+#line 1475 "ProjectLoader.c"
+ }
+#line 240 "ProjectLoader.vala"
+ if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) == 4) {
+#line 1479 "ProjectLoader.c"
+ ModelXmlElement* _tmp9_;
+#line 240 "ProjectLoader.vala"
+ _tmp8_ = !model_project_builder_check_name (self, "maps", _tmp9_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 3));
+#line 1483 "ProjectLoader.c"
+ _model_xml_element_unref0 (_tmp9_);
+ } else {
+#line 240 "ProjectLoader.vala"
+ _tmp8_ = FALSE;
+#line 1488 "ProjectLoader.c"
+ }
+#line 240 "ProjectLoader.vala"
+ if (_tmp8_) {
+#line 1492 "ProjectLoader.c"
+ result = FALSE;
+#line 241 "ProjectLoader.vala"
+ return result;
+#line 1496 "ProjectLoader.c"
+ }
+ } else {
+ result = FALSE;
+#line 244 "ProjectLoader.vala"
+ return result;
+#line 1502 "ProjectLoader.c"
+ }
+ result = TRUE;
+#line 245 "ProjectLoader.vala"
+ return result;
+#line 1507 "ProjectLoader.c"
+}
+
+
+#line 248 "ProjectLoader.vala"
+void model_project_builder_build_project (ModelProjectBuilder* self, ModelXmlElement* root) {
+#line 1513 "ProjectLoader.c"
+ ModelXmlElement* _tmp0_;
+ ModelXmlElement* _tmp1_;
+ ModelXmlElement* _tmp2_;
+#line 248 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_BUILDER (self));
+#line 248 "ProjectLoader.vala"
+ g_return_if_fail ((root == NULL) || MODEL_IS_XML_ELEMENT (root));
+#line 249 "ProjectLoader.vala"
+ model_project_builder_handle_library (self, _tmp0_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 0));
+#line 1523 "ProjectLoader.c"
+ _model_xml_element_unref0 (_tmp0_);
+#line 250 "ProjectLoader.vala"
+ model_project_builder_handle_tracks (self, _tmp1_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 1));
+#line 1527 "ProjectLoader.c"
+ _model_xml_element_unref0 (_tmp1_);
+#line 251 "ProjectLoader.vala"
+ model_project_builder_handle_preferences (self, _tmp2_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 2));
+#line 1531 "ProjectLoader.c"
+ _model_xml_element_unref0 (_tmp2_);
+#line 252 "ProjectLoader.vala"
+ if (gee_collection_get_size (GEE_COLLECTION (model_xml_element_get_children (root))) == 4) {
+#line 1535 "ProjectLoader.c"
+ ModelXmlElement* _tmp3_;
+#line 253 "ProjectLoader.vala"
+ model_project_builder_handle_maps (self, _tmp3_ = (ModelXmlElement*) gee_abstract_list_get (GEE_ABSTRACT_LIST (model_xml_element_get_children (root)), 3));
+#line 1539 "ProjectLoader.c"
+ _model_xml_element_unref0 (_tmp3_);
+ }
+#line 256 "ProjectLoader.vala"
+ model_loader_handler_leave_marina (self->priv->handler);
+#line 1544 "ProjectLoader.c"
+}
+
+
+static void model_project_builder_class_init (ModelProjectBuilderClass * klass) {
+ model_project_builder_parent_class = g_type_class_peek_parent (klass);
+ g_type_class_add_private (klass, sizeof (ModelProjectBuilderPrivate));
+ G_OBJECT_CLASS (klass)->finalize = model_project_builder_finalize;
+ g_signal_new ("error_occurred", MODEL_TYPE_PROJECT_BUILDER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+}
+
+
+static void model_project_builder_instance_init (ModelProjectBuilder * self) {
+ self->priv = MODEL_PROJECT_BUILDER_GET_PRIVATE (self);
+}
+
+
+static void model_project_builder_finalize (GObject* obj) {
+ ModelProjectBuilder * self;
+ self = MODEL_PROJECT_BUILDER (obj);
+ _g_object_unref0 (self->priv->handler);
+ G_OBJECT_CLASS (model_project_builder_parent_class)->finalize (obj);
+}
+
+
+GType model_project_builder_get_type (void) {
+ static volatile gsize model_project_builder_type_id__volatile = 0;
+ if (g_once_init_enter (&model_project_builder_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (ModelProjectBuilderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_project_builder_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelProjectBuilder), 0, (GInstanceInitFunc) model_project_builder_instance_init, NULL };
+ GType model_project_builder_type_id;
+ model_project_builder_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelProjectBuilder", &g_define_type_info, 0);
+ g_once_init_leave (&model_project_builder_type_id__volatile, model_project_builder_type_id);
+ }
+ return model_project_builder_type_id__volatile;
+}
+
+
+#line 272 "ProjectLoader.vala"
+ModelXmlElement* model_xml_element_construct (GType object_type, const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent) {
+#line 1583 "ProjectLoader.c"
+ ModelXmlElement* self;
+ char** _tmp1_;
+ gint _tmp0_;
+ char** _tmp3_;
+ gint _tmp2_;
+ GeeArrayList* _tmp4_;
+#line 272 "ProjectLoader.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 272 "ProjectLoader.vala"
+ g_return_val_if_fail ((parent == NULL) || MODEL_IS_XML_ELEMENT (parent), NULL);
+#line 1594 "ProjectLoader.c"
+ self = (ModelXmlElement*) g_type_create_instance (object_type);
+#line 274 "ProjectLoader.vala"
+ model_xml_element_set_name (self, name);
+#line 276 "ProjectLoader.vala"
+ self->attribute_names = (_tmp1_ = copy_array (attribute_names, attribute_names_length1, &_tmp0_), self->attribute_names = (_vala_array_free (self->attribute_names, self->attribute_names_length1, (GDestroyNotify) g_free), NULL), self->attribute_names_length1 = _tmp0_, _tmp1_);
+#line 277 "ProjectLoader.vala"
+ self->attribute_values = (_tmp3_ = copy_array (attribute_values, attribute_values_length1, &_tmp2_), self->attribute_values = (_vala_array_free (self->attribute_values, self->attribute_values_length1, (GDestroyNotify) g_free), NULL), self->attribute_values_length1 = _tmp2_, _tmp3_);
+#line 278 "ProjectLoader.vala"
+ model_xml_element_set_parent (self, parent);
+#line 279 "ProjectLoader.vala"
+ self->priv->_children = (_tmp4_ = gee_array_list_new (MODEL_TYPE_XML_ELEMENT, (GBoxedCopyFunc) model_xml_element_ref, model_xml_element_unref, NULL), _g_object_unref0 (self->priv->_children), _tmp4_);
+#line 1606 "ProjectLoader.c"
+ return self;
+}
+
+
+#line 272 "ProjectLoader.vala"
+ModelXmlElement* model_xml_element_new (const char* name, char** attribute_names, int attribute_names_length1, char** attribute_values, int attribute_values_length1, ModelXmlElement* parent) {
+#line 272 "ProjectLoader.vala"
+ return model_xml_element_construct (MODEL_TYPE_XML_ELEMENT, name, attribute_names, attribute_names_length1, attribute_values, attribute_values_length1, parent);
+#line 1615 "ProjectLoader.c"
+}
+
+
+#line 282 "ProjectLoader.vala"
+void model_xml_element_add_child (ModelXmlElement* self, ModelXmlElement* child_element) {
+#line 282 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (self));
+#line 282 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (child_element));
+#line 283 "ProjectLoader.vala"
+ gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->_children), child_element);
+#line 1627 "ProjectLoader.c"
+}
+
+
+const char* model_xml_element_get_name (ModelXmlElement* self) {
+ const char* result;
+ g_return_val_if_fail (MODEL_IS_XML_ELEMENT (self), NULL);
+ result = self->priv->_name;
+#line 261 "ProjectLoader.vala"
+ return result;
+#line 1637 "ProjectLoader.c"
+}
+
+
+static void model_xml_element_set_name (ModelXmlElement* self, const char* value) {
+ char* _tmp0_;
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (self));
+ self->priv->_name = (_tmp0_ = g_strdup (value), _g_free0 (self->priv->_name), _tmp0_);
+}
+
+
+GeeArrayList* model_xml_element_get_children (ModelXmlElement* self) {
+ GeeArrayList* result;
+ g_return_val_if_fail (MODEL_IS_XML_ELEMENT (self), NULL);
+ result = self->priv->_children;
+#line 267 "ProjectLoader.vala"
+ return result;
+#line 1654 "ProjectLoader.c"
+}
+
+
+ModelXmlElement* model_xml_element_get_parent (ModelXmlElement* self) {
+ ModelXmlElement* result;
+ g_return_val_if_fail (MODEL_IS_XML_ELEMENT (self), NULL);
+ result = self->priv->_parent;
+#line 269 "ProjectLoader.vala"
+ return result;
+#line 1664 "ProjectLoader.c"
+}
+
+
+static void model_xml_element_set_parent (ModelXmlElement* self, ModelXmlElement* value) {
+ g_return_if_fail (MODEL_IS_XML_ELEMENT (self));
+ self->priv->_parent = value;
+}
+
+
+static void model_value_xml_element_init (GValue* value) {
+ value->data[0].v_pointer = NULL;
+}
+
+
+static void model_value_xml_element_free_value (GValue* value) {
+ if (value->data[0].v_pointer) {
+ model_xml_element_unref (value->data[0].v_pointer);
+ }
+}
+
+
+static void model_value_xml_element_copy_value (const GValue* src_value, GValue* dest_value) {
+ if (src_value->data[0].v_pointer) {
+ dest_value->data[0].v_pointer = model_xml_element_ref (src_value->data[0].v_pointer);
+ } else {
+ dest_value->data[0].v_pointer = NULL;
+ }
+}
+
+
+static gpointer model_value_xml_element_peek_pointer (const GValue* value) {
+ return value->data[0].v_pointer;
+}
+
+
+static gchar* model_value_xml_element_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+ if (collect_values[0].v_pointer) {
+ ModelXmlElement* object;
+ object = collect_values[0].v_pointer;
+ if (object->parent_instance.g_class == NULL) {
+ return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+ } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
+ return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+ }
+ value->data[0].v_pointer = model_xml_element_ref (object);
+ } else {
+ value->data[0].v_pointer = NULL;
+ }
+ return NULL;
+}
+
+
+static gchar* model_value_xml_element_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+ ModelXmlElement** object_p;
+ object_p = collect_values[0].v_pointer;
+ if (!object_p) {
+ return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
+ }
+ if (!value->data[0].v_pointer) {
+ *object_p = NULL;
+ } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) {
+ *object_p = value->data[0].v_pointer;
+ } else {
+ *object_p = model_xml_element_ref (value->data[0].v_pointer);
+ }
+ return NULL;
+}
+
+
+GParamSpec* model_param_spec_xml_element (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
+ ModelParamSpecXmlElement* spec;
+ g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_XML_ELEMENT), NULL);
+ spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
+ G_PARAM_SPEC (spec)->value_type = object_type;
+ return G_PARAM_SPEC (spec);
+}
+
+
+gpointer model_value_get_xml_element (const GValue* value) {
+ g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_ELEMENT), NULL);
+ return value->data[0].v_pointer;
+}
+
+
+void model_value_set_xml_element (GValue* value, gpointer v_object) {
+ ModelXmlElement* old;
+ g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_ELEMENT));
+ old = value->data[0].v_pointer;
+ if (v_object) {
+ g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_ELEMENT));
+ g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+ value->data[0].v_pointer = v_object;
+ model_xml_element_ref (value->data[0].v_pointer);
+ } else {
+ value->data[0].v_pointer = NULL;
+ }
+ if (old) {
+ model_xml_element_unref (old);
+ }
+}
+
+
+void model_value_take_xml_element (GValue* value, gpointer v_object) {
+ ModelXmlElement* old;
+ g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_XML_ELEMENT));
+ old = value->data[0].v_pointer;
+ if (v_object) {
+ g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_XML_ELEMENT));
+ g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+ value->data[0].v_pointer = v_object;
+ } else {
+ value->data[0].v_pointer = NULL;
+ }
+ if (old) {
+ model_xml_element_unref (old);
+ }
+}
+
+
+static void model_xml_element_class_init (ModelXmlElementClass * klass) {
+ model_xml_element_parent_class = g_type_class_peek_parent (klass);
+ MODEL_XML_ELEMENT_CLASS (klass)->finalize = model_xml_element_finalize;
+ g_type_class_add_private (klass, sizeof (ModelXmlElementPrivate));
+}
+
+
+static void model_xml_element_instance_init (ModelXmlElement * self) {
+ self->priv = MODEL_XML_ELEMENT_GET_PRIVATE (self);
+ self->ref_count = 1;
+}
+
+
+static void model_xml_element_finalize (ModelXmlElement* obj) {
+ ModelXmlElement * self;
+ self = MODEL_XML_ELEMENT (obj);
+ _g_free0 (self->priv->_name);
+ self->attribute_names = (_vala_array_free (self->attribute_names, self->attribute_names_length1, (GDestroyNotify) g_free), NULL);
+ self->attribute_values = (_vala_array_free (self->attribute_values, self->attribute_values_length1, (GDestroyNotify) g_free), NULL);
+ _g_object_unref0 (self->priv->_children);
+}
+
+
+GType model_xml_element_get_type (void) {
+ static volatile gsize model_xml_element_type_id__volatile = 0;
+ if (g_once_init_enter (&model_xml_element_type_id__volatile)) {
+ static const GTypeValueTable g_define_type_value_table = { model_value_xml_element_init, model_value_xml_element_free_value, model_value_xml_element_copy_value, model_value_xml_element_peek_pointer, "p", model_value_xml_element_collect_value, "p", model_value_xml_element_lcopy_value };
+ static const GTypeInfo g_define_type_info = { sizeof (ModelXmlElementClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_xml_element_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelXmlElement), 0, (GInstanceInitFunc) model_xml_element_instance_init, &g_define_type_value_table };
+ static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
+ GType model_xml_element_type_id;
+ model_xml_element_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelXmlElement", &g_define_type_info, &g_define_type_fundamental_info, 0);
+ g_once_init_leave (&model_xml_element_type_id__volatile, model_xml_element_type_id);
+ }
+ return model_xml_element_type_id__volatile;
+}
+
+
+gpointer model_xml_element_ref (gpointer instance) {
+ ModelXmlElement* self;
+ self = instance;
+ g_atomic_int_inc (&self->ref_count);
+ return instance;
+}
+
+
+void model_xml_element_unref (gpointer instance) {
+ ModelXmlElement* self;
+ self = instance;
+ if (g_atomic_int_dec_and_test (&self->ref_count)) {
+ MODEL_XML_ELEMENT_GET_CLASS (self)->finalize (self);
+ g_type_free_instance ((GTypeInstance *) self);
+ }
+}
+
+
+#line 307 "ProjectLoader.vala"
+static void _model_project_loader_on_load_error_model_loader_handler_load_error (ModelLoaderHandler* _sender, const char* error_message, gpointer self) {
+#line 1841 "ProjectLoader.c"
+ model_project_loader_on_load_error (self, error_message);
+}
+
+
+#line 312 "ProjectLoader.vala"
+static void _model_project_loader_on_handler_complete_model_loader_handler_complete (ModelLoaderHandler* _sender, gpointer self) {
+#line 1848 "ProjectLoader.c"
+ model_project_loader_on_handler_complete (self);
+}
+
+
+#line 300 "ProjectLoader.vala"
+ModelProjectLoader* model_project_loader_construct (GType object_type, ModelLoaderHandler* loader_handler, const char* file_name) {
+#line 1855 "ProjectLoader.c"
+ ModelProjectLoader * self;
+ char* _tmp0_;
+ ModelLoaderHandler* _tmp1_;
+#line 300 "ProjectLoader.vala"
+ g_return_val_if_fail (MODEL_IS_LOADER_HANDLER (loader_handler), NULL);
+#line 300 "ProjectLoader.vala"
+ self = (ModelProjectLoader*) g_object_new (object_type, NULL);
+#line 301 "ProjectLoader.vala"
+ self->priv->file_name = (_tmp0_ = g_strdup (file_name), _g_free0 (self->priv->file_name), _tmp0_);
+#line 302 "ProjectLoader.vala"
+ self->priv->loader_handler = (_tmp1_ = _g_object_ref0 (loader_handler), _g_object_unref0 (self->priv->loader_handler), _tmp1_);
+#line 303 "ProjectLoader.vala"
+ g_signal_connect_object (loader_handler, "load-error", (GCallback) _model_project_loader_on_load_error_model_loader_handler_load_error, self, 0);
+#line 304 "ProjectLoader.vala"
+ g_signal_connect_object (loader_handler, "complete", (GCallback) _model_project_loader_on_handler_complete_model_loader_handler_complete, self, 0);
+#line 1871 "ProjectLoader.c"
+ return self;
+}
+
+
+#line 300 "ProjectLoader.vala"
+ModelProjectLoader* model_project_loader_new (ModelLoaderHandler* loader_handler, const char* file_name) {
+#line 300 "ProjectLoader.vala"
+ return model_project_loader_construct (MODEL_TYPE_PROJECT_LOADER, loader_handler, file_name);
+#line 1880 "ProjectLoader.c"
+}
+
+
+#line 307 "ProjectLoader.vala"
+static void model_project_loader_on_load_error (ModelProjectLoader* self, const char* _error_) {
+#line 307 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_LOADER (self));
+#line 307 "ProjectLoader.vala"
+ g_return_if_fail (_error_ != NULL);
+#line 308 "ProjectLoader.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_load_error");
+#line 309 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "load-error", _error_);
+#line 1894 "ProjectLoader.c"
+}
+
+
+#line 312 "ProjectLoader.vala"
+static void model_project_loader_on_handler_complete (ModelProjectLoader* self) {
+#line 1900 "ProjectLoader.c"
+ gboolean _tmp0_ = FALSE;
+#line 312 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_LOADER (self));
+#line 313 "ProjectLoader.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_SIGNAL_HANDLERS, LOGGING_LEVEL_INFO, "on_handler_complete");
+#line 314 "ProjectLoader.vala"
+ self->priv->handler_completed = TRUE;
+#line 315 "ProjectLoader.vala"
+ if (self->priv->project_load_completed) {
+#line 315 "ProjectLoader.vala"
+ _tmp0_ = !self->priv->load_completed_fired;
+#line 1912 "ProjectLoader.c"
+ } else {
+#line 315 "ProjectLoader.vala"
+ _tmp0_ = FALSE;
+#line 1916 "ProjectLoader.c"
+ }
+#line 315 "ProjectLoader.vala"
+ if (_tmp0_) {
+#line 316 "ProjectLoader.vala"
+ self->priv->load_completed_fired = TRUE;
+#line 317 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "load-complete");
+#line 1924 "ProjectLoader.c"
+ }
+}
+
+
+#line 307 "ProjectLoader.vala"
+static void _model_project_loader_on_load_error_model_project_builder_error_occurred (ModelProjectBuilder* _sender, const char* _error_, gpointer self) {
+#line 1931 "ProjectLoader.c"
+ model_project_loader_on_load_error (self, _error_);
+}
+
+
+#line 321 "ProjectLoader.vala"
+void model_project_loader_load (ModelProjectLoader* self) {
+#line 1938 "ProjectLoader.c"
+ GError * _inner_error_;
+ char* _tmp3_;
+ ModelXmlTreeLoader* tree_loader;
+ ModelProjectBuilder* builder;
+#line 321 "ProjectLoader.vala"
+ g_return_if_fail (MODEL_IS_PROJECT_LOADER (self));
+#line 1945 "ProjectLoader.c"
+ _inner_error_ = NULL;
+ {
+ char* _tmp1_;
+ char* _tmp0_ = NULL;
+#line 323 "ProjectLoader.vala"
+ g_file_get_contents (self->priv->file_name, &_tmp0_, &self->priv->text_len, &_inner_error_);
+#line 323 "ProjectLoader.vala"
+ self->priv->text = (_tmp1_ = _tmp0_, _g_free0 (self->priv->text), _tmp1_);
+#line 1954 "ProjectLoader.c"
+ if (_inner_error_ != NULL) {
+ if (_inner_error_->domain == G_FILE_ERROR) {
+ goto __catch13_g_file_error;
+ }
+ g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+ g_clear_error (&_inner_error_);
+ return;
+ }
+ }
+ goto __finally13;
+ __catch13_g_file_error:
+ {
+ GError * e;
+ e = _inner_error_;
+ _inner_error_ = NULL;
+ {
+ char* _tmp2_;
+#line 325 "ProjectLoader.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_MEDIUM, _tmp2_ = g_strdup_printf ("error loading %s: %s", self->priv->file_name, e->message));
+#line 1974 "ProjectLoader.c"
+ _g_free0 (_tmp2_);
+#line 327 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "load-error", e->message);
+#line 328 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "load-complete");
+#line 1980 "ProjectLoader.c"
+ _g_error_free0 (e);
+#line 329 "ProjectLoader.vala"
+ return;
+#line 1984 "ProjectLoader.c"
+ }
+ }
+ __finally13:
+ if (_inner_error_ != NULL) {
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+ g_clear_error (&_inner_error_);
+ return;
+ }
+#line 331 "ProjectLoader.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_VERBOSE, _tmp3_ = g_strdup_printf ("Building tree for %s", self->priv->file_name));
+#line 1995 "ProjectLoader.c"
+ _g_free0 (_tmp3_);
+#line 332 "ProjectLoader.vala"
+ tree_loader = model_xml_tree_loader_new (self->priv->text);
+#line 334 "ProjectLoader.vala"
+ builder = model_project_builder_new (self->priv->loader_handler);
+#line 335 "ProjectLoader.vala"
+ g_signal_connect_object (builder, "error-occurred", (GCallback) _model_project_loader_on_load_error_model_project_builder_error_occurred, self, 0);
+#line 337 "ProjectLoader.vala"
+ if (model_project_builder_check_project (builder, tree_loader->root)) {
+#line 2005 "ProjectLoader.c"
+ gboolean _tmp4_ = FALSE;
+#line 338 "ProjectLoader.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_VERBOSE, "project checked out. starting load");
+#line 339 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "load-started", self->priv->file_name);
+#line 340 "ProjectLoader.vala"
+ model_project_builder_build_project (builder, tree_loader->root);
+#line 341 "ProjectLoader.vala"
+ self->priv->project_load_completed = TRUE;
+#line 342 "ProjectLoader.vala"
+ if (self->priv->handler_completed) {
+#line 342 "ProjectLoader.vala"
+ _tmp4_ = !self->priv->load_completed_fired;
+#line 2019 "ProjectLoader.c"
+ } else {
+#line 342 "ProjectLoader.vala"
+ _tmp4_ = FALSE;
+#line 2023 "ProjectLoader.c"
+ }
+#line 342 "ProjectLoader.vala"
+ if (_tmp4_) {
+#line 343 "ProjectLoader.vala"
+ self->priv->load_completed_fired = TRUE;
+#line 344 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "load-complete");
+#line 2031 "ProjectLoader.c"
+ }
+ } else {
+#line 348 "ProjectLoader.vala"
+ logging_emit (G_OBJECT (self), LOGGING_FACILITY_LOADING, LOGGING_LEVEL_INFO, "project did not check out. stopping.");
+#line 349 "ProjectLoader.vala"
+ g_signal_emit_by_name (self, "load-complete");
+#line 2038 "ProjectLoader.c"
+ }
+ _model_xml_tree_loader_unref0 (tree_loader);
+ _g_object_unref0 (builder);
+}
+
+
+static void model_project_loader_class_init (ModelProjectLoaderClass * klass) {
+ model_project_loader_parent_class = g_type_class_peek_parent (klass);
+ g_type_class_add_private (klass, sizeof (ModelProjectLoaderPrivate));
+ G_OBJECT_CLASS (klass)->finalize = model_project_loader_finalize;
+ g_signal_new ("load_started", MODEL_TYPE_PROJECT_LOADER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+ g_signal_new ("load_complete", MODEL_TYPE_PROJECT_LOADER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+ g_signal_new ("load_error", MODEL_TYPE_PROJECT_LOADER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+}
+
+
+static void model_project_loader_instance_init (ModelProjectLoader * self) {
+ self->priv = MODEL_PROJECT_LOADER_GET_PRIVATE (self);
+ self->priv->project_load_completed = FALSE;
+ self->priv->load_completed_fired = FALSE;
+ self->priv->handler_completed = FALSE;
+}
+
+
+static void model_project_loader_finalize (GObject* obj) {
+ ModelProjectLoader * self;
+ self = MODEL_PROJECT_LOADER (obj);
+ _g_free0 (self->priv->file_name);
+ _g_object_unref0 (self->priv->loader_handler);
+ _g_free0 (self->priv->text);
+ G_OBJECT_CLASS (model_project_loader_parent_class)->finalize (obj);
+}
+
+
+GType model_project_loader_get_type (void) {
+ static volatile gsize model_project_loader_type_id__volatile = 0;
+ if (g_once_init_enter (&model_project_loader_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (ModelProjectLoaderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_project_loader_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelProjectLoader), 0, (GInstanceInitFunc) model_project_loader_instance_init, NULL };
+ GType model_project_loader_type_id;
+ model_project_loader_type_id = g_type_register_static (G_TYPE_OBJECT, "ModelProjectLoader", &g_define_type_info, 0);
+ g_once_init_leave (&model_project_loader_type_id__volatile, model_project_loader_type_id);
+ }
+ return model_project_loader_type_id__volatile;
+}
+
+
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+ if ((array != NULL) && (destroy_func != NULL)) {
+ int i;
+ for (i = 0; i < array_length; i = i + 1) {
+ if (((gpointer*) array)[i] != NULL) {
+ destroy_func (((gpointer*) array)[i]);
+ }
+ }
+ }
+}
+
+
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+ _vala_array_destroy (array, array_length, destroy_func);
+ g_free (array);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+ int length;
+ length = 0;
+ if (array) {
+ while (((gpointer*) array)[length]) {
+ length++;
+ }
+ }
+ return length;
+}
+
+
+static int _vala_strcmp0 (const char * str1, const char * str2) {
+ if (str1 == NULL) {
+ return -(str1 != str2);
+ }
+ if (str2 == NULL) {
+ return str1 != str2;
+ }
+ return strcmp (str1, str2);
+}
+
+
+
+