New QC Syntax
=============
-{{\>toc}}
-
It is possible that at some point we decide to switch QC-compiler which requires some changes to the code.
-**For more information see** http://dev.xonotic.org/projects/bocc
+~~For more information see http://dev.xonotic.org/projects/bocc~~
+
+(Update: Blub's bocc compiler didn't make it, but someone else came along, both devs [joined forces](https://github.com/graphitemaster/gmqcc/graphs/contributors) and brought us [GMQCC](https://graphitemaster.github.io/gmqcc/doc.html).
+ This is now the QuakeC compiler used by the Xonotic project.)
Clean syntax:
-------------
|definition|meaning|
|----------|-------|
-|<code>float foo</code>|global variable|
-|<code>float .foo</code>|entity field|
-|<code>.float foo</code>|fieldpointer|
-|<code>.float .foo</code>|entity field of type fieldpointer|
-|<code>float foo(void)</code>|function|
-|<code>float foo\*(void)</code>|function pointer|
-|<code>.float foo(void)</code>|function returning a fieldpointer .float|
-|<code>.float foo\*(void)</code>|function pointer, returning a fieldpointer .float|
-|<code>float .foo(void)</code>|entity field of type function returning float|
-|<code>.float .foo(void)</code>|entity field of type function returning fieldpointer|
+|`float foo`|global variable|
+|`float .foo`|entity field|
+|`.float foo`|fieldpointer|
+|`.float .foo`|entity field of type fieldpointer|
+|`float foo(void)`|function|
+|`float foo*(void)`|function pointer|
+|`.float foo(void)`|function returning a fieldpointer .float|
+|`.float foo*(void)`|function pointer, returning a fieldpointer .float|
+|`float .foo(void)`|entity field of type function returning float|
+|`.float .foo(void)`|entity field of type function returning fieldpointer|
Function definitions:
---------------------
Variadic parameters (do not use yet)
------------------------------------
-(This might get changed to be more flexible so do not rely on this syntax...)
+(This might get changed to be more flexible so do not rely on this syntax…)
-Another "enhancement" is the possibility to have functions with variadic parameter lists. However, the only way to sanely access them (until pointers are allowed) is via a recursive way.
-Here's an example that assumes float parameters and prints them one after the other:
+Another “enhancement” is the possibility to have functions with variadic parameter lists. However, the only way to sanely access them (until pointers are allowed) is via a recursive way.
+Here’s an example that assumes float parameters and prints them one after the other:
void printfloats(float count, float first, ...)
{
myprint(count-1, ...);
}
-So <code>myprint(4, 1, 2, 3, 4)</code> would print <code>"1, 2, 3, 4\\n"</code>
+So `myprint(4, 1, 2, 3, 4)` would print "1, 2, 3, 4\\n"
+