#define TYPE_ID ((IntPtr) ui_createWindow) ui_Window* ui_createWindow() { ui_Window* w; w = mem_allocateChunkWithType(sizeof(ui_Window), TYPE_ID); /* ... */ return w; } void ui_deleteWindow(ui_Window* w) { misc_assert_type(w, TYPE_ID); /* ... */ mem_freeChunk(w); }