static void free_props(tmx_property *p) { if (p) { free_props(p->next); tmx_free_func(p->name); tmx_free_func(p->value); tmx_free_func(p); } }
static void free_tiles(tmx_tile *t) { if (t) { free_tiles(t->next); free_props(t->properties); free_image(t->image); tmx_free_func(t); } }
void tmx_map_free(tmx_map *map) { if (map) { free_ts(map->ts_head); free_props(map->properties); free_layers(map->ly_head); tmx_free_func(map); } }
void tmx_free(tmx_map *map) { if (*map) { free_ts((*map)->ts_head); free_props((*map)->properties); free_layers((*map)->ly_head); tmx_free_func(*map); *map = NULL; } }
static void free_ts(tmx_tileset *ts) { if (ts) { free_ts(ts->next); tmx_free_func(ts->name); free_image(ts->image); free_props(ts->properties); free_tiles(ts->tiles); tmx_free_func(ts); } }
static void free_tiles(tmx_tile *t) { if (t) { free_tiles(t->next); free_props(t->properties); free_image(t->image); free_obj(t->collision); tmx_free_func(t->animation); tmx_free_func(t); } }
static void free_layers(tmx_layer l) { if (l) { free_layers(l->next); tmx_free_func(l->name); if (l->type == L_LAYER) tmx_free_func(l->content.gids); else if (l->type == L_OBJGR) free_obj(l->content.head); free_props(l->properties); tmx_free_func(l); } }
static void free_layers(tmx_layer *l) { if (l) { free_layers(l->next); tmx_free_func(l->name); if (l->type == L_LAYER) tmx_free_func(l->content.gids); else if (l->type == L_OBJGR) free_objgr(l->content.objgr); else if (l->type == L_IMAGE) { free_image(l->content.image); } free_props(l->properties); tmx_free_func(l); } }