Merge remote-tracking branch 'origin/samual/serverlist'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / oo / implementation.h
1 #ifndef INTERFACE
2 #define INTERFACE
3 #endif
4
5 #ifndef IMPLEMENTATION
6 #define IMPLEMENTATION
7 #endif
8
9 #ifdef CLASS
10 #undef CLASS
11 #undef EXTENDS
12 #undef METHOD
13 #undef ATTRIB
14 #undef ATTRIBARRAY
15 #undef ENDCLASS
16 #undef SUPER
17 #endif
18
19 // for the constructor
20 #define CLASS(cname)                       entity spawn##cname() { entity me;
21 #define EXTENDS(base)                      me = spawn##base (); entity basevtbl; basevtbl = base##_vtbl;
22 #define METHOD(cname,name,prototype)       me.name = cname##_##name;
23 #define ATTRIB(cname,name,type,val)        me.name = val;
24 #define ATTRIBARRAY(cname,name,type,cnt)
25 #define ENDCLASS(cname)                    me.instanceOf##cname = 1; me.classname = #cname; if(!cname##_vtbl) cname##_vtbl = spawnVtbl(me, basevtbl); return me; }
26
27 // for the implementation
28 #define SUPER(cname) (cname##_vtbl.vtblbase)