#define _INIT_STATIC(cname) [[accumulate]] void spawn##cname##_static(cname this)
#define INIT(cname) [[accumulate]] cname spawn##cname##_1(cname this)
+#if NDEBUG
+ #define DEBUG_STUFF(cname)
+#else
+ #define DEBUG_STUFF(cname) \
+ bool is_##cname(entity e) { return e.instanceOf##cname; } \
+ void isnt_##cname(entity e) { eprint(e); }
+#endif
+
+
#define CLASS(cname, base) \
entityclass(cname, base); \
class(cname).bool instanceOf##cname; \
- bool is_##cname(entity e) { return e.instanceOf##cname; } \
- void isnt_##cname(entity e) { eprint(e); } \
+ DEBUG_STUFF(cname) \
VTBL(cname, base) \
_INIT_STATIC(cname) \
{ \
#define ATTRIB(...) EVAL_ATTRIB(OVERLOAD_(ATTRIB, __VA_ARGS__))
#define EVAL_ATTRIB(...) __VA_ARGS__
-#define ATTRIB_3(cname, name, type) INIT(cname) {} class(cname) .type name
+#define ATTRIB_3(cname, name, type) class(cname) .type name
#define ATTRIB_4(cname, name, type, val) \
ATTRIB_3(cname, name, type); \
INIT(cname) \