]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/util-post.qh
Merge branch 'master' into TimePath/global_self
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / util-post.qh
1 #ifndef UTIL_POST_H
2 #define UTIL_POST_H
3
4 [[alias("self")]] entity __self;
5
6 #define WITH(type, name, value, block) do { \
7     type __with_save = (name); \
8     name = (value); \
9     LAMBDA(block) \
10     name = __with_save; \
11 } while (0)
12
13 // Step 1: auto oldself
14 #if 1
15 #define SELFPARAM() noref entity this = __self
16 #define setself(s) (__self = s)
17 #define self __self
18 #endif
19
20 // Step 2: check SELFPARAM() is present for functions that use self
21 #if 0
22 #define SELFPARAM() [[alias("__self")]] noref entity this = __self
23 #define setself(s) (__self = s)
24 #define self this
25 #endif
26
27 // Step 3: const self
28 #if 0
29 #define SELFPARAM() noref const entity this = __self
30 entity setself(entity e) { return self = e; }
31 entity getself() { return self; }
32 #define self getself()
33 #endif
34
35 // Step 4: enable when possible
36 #if 0
37 #define SELFPARAM() noref const entity this = __self
38 #define self this
39 #endif
40
41 #define spawn() new(entity)
42
43 #endif