#define OVERLOAD(F, ...) OVERLOAD_(F,##__VA_ARGS__)(__VA_ARGS__)
#endif
+#if defined(CSQC)
+ #define etof(e) num_for_edict(e)
+ #define ftoe(i) entitybyindex(i)
+#elif defined(SVQC)
+ #define etof(e) num_for_edict(e)
+ #define ftoe(i) edict_num(i)
+#elif defined(MENUQC)
+ // already defined
+#endif
+
+#undef etof
+// avoid bounds checks
+#define etof(e) stof(sprintf("%i", e))
+
#define GET(name) name##get
#define GETTER(type, name) type GET(name)() { return name; }
-
+#define PROPERTY(type, name) type name; GETTER(type, name)
#define LAMBDA(...) { __VA_ARGS__; }
-// Can't wrap with do-while as block may contain continue or break
+// With block may not contain continue or break
#define WITH(type, name, value, block) \
+ do \
{ \
type __with_save = (name); \
name = (value); \
LAMBDA(block) \
name = __with_save; \
- } do \
- { \
} \
while (0)