xmlNode* ags_play_notation_audio_run_write(AgsFile *file, xmlNode *parent, AgsPlugin *plugin) { AgsFileLookup *file_lookup; xmlNode *node, *child; xmlNode *dependency_node; GList *list; gchar *id; /* write parent */ node = ags_play_notation_audio_run_parent_plugin_interface->write(file, parent, plugin); /* write dependencies */ child = xmlNewNode(NULL, "ags-dependency-list\0"); xmlNewProp(child, AGS_FILE_ID_PROP, ags_id_generator_create_uuid()); xmlAddChild(node, child); list = AGS_RECALL(plugin)->dependencies; while(list != NULL){ id = ags_id_generator_create_uuid(); dependency_node = xmlNewNode(NULL, "ags-dependency\0"); xmlNewProp(dependency_node, AGS_FILE_ID_PROP, id); xmlAddChild(child, dependency_node); file_lookup = (AgsFileLookup *) g_object_new(AGS_TYPE_FILE_LOOKUP, "file\0", file, "node\0", dependency_node, "reference\0", list->data, NULL); ags_file_add_lookup(file, (GObject *) file_lookup); g_signal_connect(G_OBJECT(file_lookup), "resolve\0", G_CALLBACK(ags_play_notation_audio_run_write_resolve_dependency), G_OBJECT(plugin)); list = list->next; } return(node); }
void ags_count_beats_audio_run_read(AgsFile *file, xmlNode *node, AgsPlugin *plugin) { AgsCountBeatsAudioRun *count_beats_audio_run; AgsFileLookup *file_lookup; xmlNode *iter; /* read parent */ ags_count_beats_audio_run_parent_plugin_interface->read(file, node, plugin); count_beats_audio_run = AGS_COUNT_BEATS_AUDIO_RUN(plugin); /* read depenendency */ iter = node->children; while(iter != NULL){ if(iter->type == XML_ELEMENT_NODE){ if(!xmlStrncmp(iter->name, "ags-dependency-list\0", 19)){ xmlNode *dependency_node; dependency_node = iter->children; while(dependency_node != NULL){ if(dependency_node->type == XML_ELEMENT_NODE){ if(!xmlStrncmp(dependency_node->name, "ags-dependency\0", 15)){ file_lookup = (AgsFileLookup *) g_object_new(AGS_TYPE_FILE_LOOKUP, "file\0", file, "node\0", dependency_node, "reference\0", count_beats_audio_run, NULL); ags_file_add_lookup(file, (GObject *) file_lookup); g_signal_connect(G_OBJECT(file_lookup), "resolve\0", G_CALLBACK(ags_count_beats_audio_run_read_resolve_dependency), count_beats_audio_run); } } dependency_node = dependency_node->next; } } } iter = iter->next; } }
void ags_synth_input_line_read(AgsFile *file, xmlNode *node, AgsPlugin *plugin) { AgsSynthInputLine *gobject; AgsFileLookup *file_lookup; xmlNode *child; gobject = AGS_SYNTH_INPUT_LINE(plugin); ags_file_add_id_ref(file, g_object_new(AGS_TYPE_FILE_ID_REF, "application-context", file->application_context, "file", file, "node", node, "xpath", g_strdup_printf("xpath=//*[@id='%s']", xmlGetProp(node, AGS_FILE_ID_PROP)), "reference", gobject, NULL)); gobject->oscillator = ags_oscillator_new(); file_lookup = (AgsFileLookup *) g_object_new(AGS_TYPE_FILE_LOOKUP, "file", file, "node", node, "reference", gobject, NULL); ags_file_add_lookup(file, (GObject *) file_lookup); g_signal_connect(G_OBJECT(file_lookup), "resolve", G_CALLBACK(ags_synth_input_line_resolve_line), gobject); /* child elements */ child = node->children; while(child != NULL){ if(XML_ELEMENT_NODE == child->type){ if(!xmlStrncmp(child->name, "ags-oscillator", 15)){ ags_file_read_oscillator(file, child, &(gobject->oscillator)); } } child = child->next; } }