static void test_foreach(CuTest *tc) { int total = 0; struct quicklist *ql = 0; ql_push(&ql, (void *)data); ql_push(&ql, (void *)data); ql_foreach(ql, my_callback); CuAssertIntEquals(tc, 152, gtotal); ql_foreachx(ql, my_callbackx, &total); CuAssertIntEquals(tc, 152, total); ql_free(ql); }
void free_region(region *r) { region **bucket; bucket = ®ionhash[r->uid & RHASHMASK]; while (*bucket!=r) { bucket = &(*bucket)->nexthash_; } *bucket = r->nexthash_; free(r->name_); while (r->units) { unit *u = r->units; r->units = u->next; free_unit(u); } ql_foreach(r->ships, (ql_cb)free_ship); ql_free(r->ships); r->ships = 0; ql_foreach(r->buildings, (ql_cb)free_building); ql_free(r->buildings); r->buildings = 0; free(r); }
void free_terrains(void) { ql_foreach(terrains, (ql_cb)free_terrain); ql_free(terrains); terrains = 0; }
void free_regions(void) { ql_foreach(regions, (ql_cb)free_region); ql_free(regions); regions = 0; }
void free_buildingtypes(void) { ql_foreach(buildingtypes, free_buildingtype); ql_free(buildingtypes); buildingtypes = 0; }
void free_shiptypes(void) { ql_foreach(shiptypes, free_shiptype); ql_free(shiptypes); shiptypes = 0; }
void free_donations(void) { ql_foreach(transfers, free); ql_free(transfers); transfers = 0; }