]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/oo/implementation.h
Merge remote-tracking branch 'origin/samual/serverlist'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / oo / implementation.h
index ed6bd71f36087d7527c52fe03cef45388bb03c2b..28b7f08e4eff2ea0a5ad64e74ff532a8b3fa6b5c 100644 (file)
@@ -1,5 +1,5 @@
-#ifdef INTERFACE
-#undef INTERFACE
+#ifndef INTERFACE
+#define INTERFACE
 #endif
 
 #ifndef IMPLEMENTATION
 #undef SUPER
 #endif
 
+// for the constructor
+#define CLASS(cname)                       entity spawn##cname() { entity me;
+#define EXTENDS(base)                      me = spawn##base (); entity basevtbl; basevtbl = base##_vtbl;
+#define METHOD(cname,name,prototype)       me.name = cname##_##name;
+#define ATTRIB(cname,name,type,val)        me.name = val;
+#define ATTRIBARRAY(cname,name,type,cnt)
+#define ENDCLASS(cname)                    me.instanceOf##cname = 1; me.classname = #cname; if(!cname##_vtbl) cname##_vtbl = spawnVtbl(me, basevtbl); return me; }
+
+// for the implementation
 #define SUPER(cname) (cname##_vtbl.vtblbase)