6 #define REGISTER_INIT(ns, id) [[accumulate]] void Register_##ns##_##id##_init(entity this)
8 #define REGISTER(initfunc, ns, array, counter, id, class, fld) \
10 REGISTER_INIT(ns, id) { } \
11 void Register_##ns##_##id() { \
12 entity this = NEW(class); \
15 array[counter++] = this; \
16 Register_##ns##_##id##_init(this); \
18 ACCUMULATE_FUNCTION(initfunc, Register_##ns##_##id) \
21 void __static_init() { }
22 #define static_init() CALL_ACCUMULATED_FUNCTION(__static_init)
23 #define REGISTER_REGISTRY(func) ACCUMULATE_FUNCTION(__static_init, func)
25 #define STATIC_INIT(func) \
26 void _static_##func(); \
27 ACCUMULATE_FUNCTION(__static_init, _static_##func) \