#define _INIT_STATIC(cname) [[accumulate]] void spawn##cname##_static(cname this)
#define INIT(cname) [[accumulate]] cname spawn##cname##_1(cname this)
#define _INIT_STATIC(cname) [[accumulate]] void spawn##cname##_static(cname this)
#define INIT(cname) [[accumulate]] cname spawn##cname##_1(cname this)
#define CLASS(cname, base) \
entityclass(cname, base); \
class(cname).bool instanceOf##cname; \
#define CLASS(cname, base) \
entityclass(cname, base); \
class(cname).bool instanceOf##cname; \
#define ATTRIB(...) EVAL_ATTRIB(OVERLOAD_(ATTRIB, __VA_ARGS__))
#define EVAL_ATTRIB(...) __VA_ARGS__
#define ATTRIB(...) EVAL_ATTRIB(OVERLOAD_(ATTRIB, __VA_ARGS__))
#define EVAL_ATTRIB(...) __VA_ARGS__
#define ATTRIB_4(cname, name, type, val) \
ATTRIB_3(cname, name, type); \
INIT(cname) \
#define ATTRIB_4(cname, name, type, val) \
ATTRIB_3(cname, name, type); \
INIT(cname) \
}
#define STATIC_ATTRIB_STRZONE(cname, name, type, val) \
type cname##_##name; \
_INIT_STATIC(cname) \
{ \
}
#define STATIC_ATTRIB_STRZONE(cname, name, type, val) \
type cname##_##name; \
_INIT_STATIC(cname) \
{ \
}
#define ATTRIBARRAY(cname, name, type, cnt) \
}
#define ATTRIBARRAY(cname, name, type, cnt) \