diff --git a/code/__HELPERS/nameof.dm b/code/__HELPERS/nameof.dm new file mode 100644 index 00000000000..2de37b5b8c9 --- /dev/null +++ b/code/__HELPERS/nameof.dm @@ -0,0 +1,6 @@ +/** + * NAMEOF: Compile time checked variable name to string conversion + * evaluates to a string equal to "X", but compile errors if X isn't a var on datum. + * datum may be null, but it does need to be a typed var. + **/ +#define NAMEOF(datum, X) (#X || ##datum.##X) diff --git a/code/__HELPERS/varset_callback.dm b/code/__HELPERS/varset_callback.dm index 8748af5ebe8..0c3f87328a1 100644 --- a/code/__HELPERS/varset_callback.dm +++ b/code/__HELPERS/varset_callback.dm @@ -1,6 +1,3 @@ -///datum may be null, but it does need to be a typed var -#define NAMEOF(datum, X) (#X || ##datum.##X) - #define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##target, ##var_name, ##var_value) //dupe code because dm can't handle 3 level deep macros #define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##datum, NAMEOF(##datum, ##var), ##var_value) diff --git a/tgstation.dme b/tgstation.dme index 5fa50069e9d..951dcfb3642 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -403,6 +403,7 @@ #include "code\__HELPERS\memory_helpers.dm" #include "code\__HELPERS\mobs.dm" #include "code\__HELPERS\mouse_control.dm" +#include "code\__HELPERS\nameof.dm" #include "code\__HELPERS\names.dm" #include "code\__HELPERS\path.dm" #include "code\__HELPERS\piping_colors_lists.dm"