void del_Module(Module* module) { if (module == NULL) return; del_Environment(module->env); del_Song_table(module->songs); del_Pat_table(module->pats); del_Connections(module->connections); del_Au_table(module->au_table); del_Bit_array(module->au_controls); del_Input_map(module->au_map); del_Track_list(module->track_list); del_Channel_defaults_list(module->ch_defs); for (int i = 0; i < KQT_SONGS_MAX; ++i) del_Order_list(module->order_lists[i]); for (int i = 0; i < KQT_TUNING_TABLES_MAX; ++i) del_Tuning_table(module->tuning_tables[i]); del_Bind(module->bind); Device_deinit(&module->parent); memory_free(module); return; }
Environment* new_Environment(void) { Environment* env = memory_alloc_item(Environment); if (env == NULL) return NULL; env->vars = NULL; env->iter = NULL; env->vars = new_AAtree( (int (*)(const void*, const void*))strcmp, (void (*)(void*))del_Env_var); env->iter = new_AAiter(env->vars); if (env->vars == NULL || env->iter == NULL) { del_Environment(env); return NULL; } return env; }