X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Foo.qh;h=7a7a72641a0601a1d857a0654631223d452275dd;hb=b0210c08a287ad4631e16ddf3a83a0b0c546283f;hp=e3206dcf3ee799b584e85bf71457fbe44d20ee3e;hpb=17bfb8ee18b833f2be23fc5420c0dc1666ad2b5e;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/oo.qh b/qcsrc/lib/oo.qh index e3206dcf3..7a7a72641 100644 --- a/qcsrc/lib/oo.qh +++ b/qcsrc/lib/oo.qh @@ -227,13 +227,17 @@ STATIC_INIT(RegisterClasses) } \ 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; \ @@ -264,7 +268,7 @@ STATIC_INIT(RegisterClasses) } #define ATTRIBARRAY(cname, name, type, cnt) \ - class(cname).type name[cnt]; + class(cname) .type name[cnt] #define ENDCLASS(cname) \ INIT(cname) \