From: Rudolf Polzer <divVerent@xonotic.org>
Date: Fri, 8 Jul 2011 14:00:36 +0000 (+0200)
Subject: optimize menuqc compiling speed by doing the second interface pass, and the implement... 
X-Git-Tag: xonotic-v0.5.0~148^2~62
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=6085d8e8af9b692e1155cdfce021350e04c078dd;p=xonotic%2Fxonotic-data.pk3dir.git

optimize menuqc compiling speed by doing the second interface pass, and the implementation pass, in one
---

diff --git a/qcsrc/menu/oo/classdefs.h b/qcsrc/menu/oo/classdefs.h
deleted file mode 100644
index 85bc6c2af..000000000
--- a/qcsrc/menu/oo/classdefs.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef INTERFACE
-#define INTERFACE
-#endif
-
-#ifdef IMPLEMENTATION
-#undef IMPLEMENTATION
-#endif
-
-#ifdef CLASS
-#undef CLASS
-#undef EXTENDS
-#undef METHOD
-#undef ATTRIB
-#undef ATTRIBARRAY
-#undef ENDCLASS
-#undef SUPER
-#endif
-
-#define CLASS(cname)                       entity spawn##cname(); entity cname##_vtbl;
-#define EXTENDS(base)                
-#define METHOD(cname,name,prototype)       prototype cname##_##name; .prototype name;
-#define ATTRIB(cname,name,type,val)        .type name;
-#define ATTRIBARRAY(cname,name,type,cnt)   .type name[cnt];
-#define ENDCLASS(cname)                    .float instanceOf##cname;
-#define SUPER(cname)
diff --git a/qcsrc/menu/oo/constructors.h b/qcsrc/menu/oo/constructors.h
deleted file mode 100644
index 4e758dd47..000000000
--- a/qcsrc/menu/oo/constructors.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef INTERFACE
-#define INTERFACE
-#endif
-
-#ifdef IMPLEMENTATION
-#undef IMPLEMENTATION
-#endif
-
-#ifdef CLASS
-#undef CLASS
-#undef EXTENDS
-#undef METHOD
-#undef ATTRIB
-#undef ATTRIBARRAY
-#undef ENDCLASS
-#undef SUPER
-#endif
-
-#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)   me.name = me.name;
-#define ENDCLASS(cname)                    me.instanceOf##cname = 1; me.classname = #cname; if(!cname##_vtbl) cname##_vtbl = spawnVtbl(me, basevtbl); return me; }
-#define SUPER(cname)
diff --git a/qcsrc/menu/oo/implementation.h b/qcsrc/menu/oo/implementation.h
index ed6bd71f3..34f32e306 100644
--- a/qcsrc/menu/oo/implementation.h
+++ b/qcsrc/menu/oo/implementation.h
@@ -1,5 +1,5 @@
-#ifdef INTERFACE
-#undef INTERFACE
+#ifndef INTERFACE
+#define INTERFACE
 #endif
 
 #ifndef IMPLEMENTATION
@@ -16,4 +16,13 @@
 #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)   me.name = me.name;
+#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)
diff --git a/qcsrc/menu/oo/interface.h b/qcsrc/menu/oo/interface.h
new file mode 100644
index 000000000..85bc6c2af
--- /dev/null
+++ b/qcsrc/menu/oo/interface.h
@@ -0,0 +1,25 @@
+#ifndef INTERFACE
+#define INTERFACE
+#endif
+
+#ifdef IMPLEMENTATION
+#undef IMPLEMENTATION
+#endif
+
+#ifdef CLASS
+#undef CLASS
+#undef EXTENDS
+#undef METHOD
+#undef ATTRIB
+#undef ATTRIBARRAY
+#undef ENDCLASS
+#undef SUPER
+#endif
+
+#define CLASS(cname)                       entity spawn##cname(); entity cname##_vtbl;
+#define EXTENDS(base)                
+#define METHOD(cname,name,prototype)       prototype cname##_##name; .prototype name;
+#define ATTRIB(cname,name,type,val)        .type name;
+#define ATTRIBARRAY(cname,name,type,cnt)   .type name[cnt];
+#define ENDCLASS(cname)                    .float instanceOf##cname;
+#define SUPER(cname)
diff --git a/qcsrc/menu/progs.src b/qcsrc/menu/progs.src
index 34eb5db88..1184c32d1 100644
--- a/qcsrc/menu/progs.src
+++ b/qcsrc/menu/progs.src
@@ -20,10 +20,7 @@ draw.qh
 skin.qh
 xonotic/util.qh
 
-oo/classdefs.h
-	classes.c
-
-oo/constructors.h
+oo/interface.h
 	classes.c
 oo/implementation.h
 	classes.c