#ifndef UTIL_POST_H #define UTIL_POST_H [[alias("self")]] entity __self; // Step 1: auto oldself #if 1 #define SELFPARAM() noref entity this = __self #define setself(s) (__self = s) #define self __self #define SELFCALL(s, f) (__self = s, f) #define SELFCALL_DONE() (__self = this) #endif // Step 2: check SELFPARAM() is present for functions that use self #if 0 #define SELFPARAM() [[alias("__self")]] noref entity this = __self #define setself(s) (__self = s) #define self this #define SELFCALL(s, f) (this = s, f) #define SELFCALL_DONE() (this = this) #endif // Step 3: const self #if 0 #define SELFPARAM() noref const entity this = __self entity setself(entity e) { return self = e; } entity getself() { return self; } #define self getself() #define SELFCALL(s, f) (__self = s, f) #define SELFCALL_DONE() (__self = this) #endif // Step 4: enable when possible #if 0 #define SELFPARAM() noref const entity this = __self #define self this #define SELFCALL(s, f) (__self = s, f) #define SELFCALL_DONE() (__self = this) #endif #define spawn() new(entity) #endif