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