6 #define REGISTER_INIT(ns, id) [[accumulate]] void Register_##ns##_##id##_init(entity this)
7 #define REGISTER_INIT_POST(ns, id) [[accumulate]] void Register_##ns##_##id##_init_post(entity this)
9 #define REGISTER(initfunc, ns, array, counter, id, fld, inst) \
11 REGISTER_INIT(ns, id) { } \
12 REGISTER_INIT_POST(ns, id) { } \
13 .entity enemy; /* internal next pointer */ \
14 void Register_##ns##_##id() { \
18 array[counter++] = this; \
19 if (!array##_first) array##_first = this; \
20 if ( array##_last) array##_last.enemy = this; \
21 array##_last = this; \
22 Register_##ns##_##id##_init(this); \
23 Register_##ns##_##id##_init_post(this); \
25 ACCUMULATE_FUNCTION(initfunc, Register_##ns##_##id) \