]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/lib/enumclass.qh
fix last uncrustify warning
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / enumclass.qh
index 412e9db6bd3a7720344c2e37babde9ee925d72f9..86948075b1c0078f6b874edb7b2813c6f4723836 100644 (file)
@@ -8,16 +8,23 @@
 
 // zero overhead mode, use this for releases
 
-#define ENUMCLASS(id) typedef int id; enum {
+// *INDENT-OFF* uncrustify doesn't like the braces in different macros
+#define ENUMCLASS(id) USING(id, int); enum { CASE(id, Null)
 #define CASE(class, id) class##_##id,
 #define ENUMCLASS_END(id) };
+#define ORDINAL(it) (it)
+#define ENUMCAST(T, it) (it)
+// *INDENT-ON*
 
 #else
 
 // edict overhead mode, use this for type checking
 
-#define ENUMCLASS(id) CLASS(id, Object)
-#define CASE(class, id) class class##_##id; STATIC_INIT(class##_##id) { class##_##id = NEW(class); }
+.int enum_ordinal;
+#define ENUMCLASS(id) CLASS(id, Object) int id##_count; const noref entity id##_Null = nil; CASE(id, Null__)
+#define CASE(class, id) class class##_##id; STATIC_INIT(class##_##id) { entity e = class##_##id = NEW(class); e.enum_ordinal = class##_count++; }
 #define ENUMCLASS_END(id) ENDCLASS(id)
+#define ORDINAL(it) ((it).enum_ordinal)
+#define ENUMCAST(T, it) ftoe(etof(T##_Null__) + (it))
 
 #endif