} \
STATIC_METHOD(cname, dtorimpl, void(cname this))
-#define ATTRIB(cname, name, type, val) \
- class(cname).type name; \
+#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_4(cname, name, type, val) \
+ ATTRIB_3(cname, name, type); \
INIT(cname) \
{ \
noref bool strzone; /* Error on strzone() calls. */ \
this.name = val; \
- }
+ } \
+ ATTRIB_3(cname, name, type)
#define STATIC_ATTRIB(cname, name, type, val) \
type cname##_##name; \
}
#define ATTRIBARRAY(cname, name, type, cnt) \
- class(cname).type name[cnt];
+ class(cname) .type name[cnt]
#define ENDCLASS(cname) \
INIT(cname) \