// Internal #define DOUBLES(var1,var2) ##var1##_##var2 #define TRIPLES(var1,var2,var3) ##var1##_##var2##_##var3 #define ADDON DOUBLES(PREFIX,COMPONENT) #define GVAR(var1) DOUBLES(ADDON,var1) // External #define AFUNC(var1,var2) TRIPLES(DOUBLES(ace,var1),fnc,var2) #define BFUNC(var1) TRIPLES(BIS,fnc,var1) #define CFUNC(var1) TRIPLES(CBA,fnc,var1) #define TFUNC(var1) TRIPLES(TFAR,fnc,var1) // Main #define QUOTE(var1) #var1 #define VERSION_CONFIG version = MAJOR.MINOR; versionStr = QUOTE(MAJOR.MINOR.PATCH.BUILD); versionAr[] = {MAJOR,MINOR,PATCH,BUILD} // Path #define PATHTOF_SYS(var1,var2,var3) \MAINPREFIX\var1\SUBPREFIX\var2\var3 #define PATHTOF(var1) PATHTOF_SYS(PREFIX,COMPONENT,var1) #define PATHTOEF(var1,var2) PATHTOF_SYS(PREFIX,var1,var2) #define QPATHTOF(var1) QUOTE(PATHTOF(var1)) #define QPATHTOEF(var1,var2) QUOTE(PATHTOEF(var1,var2)) #define PATHTOR_SYS(var1,var2,var3) MAINPREFIX\var1\SUBPREFIX\var2\var3 #define PATHTOR(var1) PATHTOR_SYS(PREFIX,COMPONENT,var1) #define PATHTOER(var1,var2) PATHTOR_SYS(PREFIX,var1,var2) #define QPATHTOR(var1) QUOTE(PATHTOR(var1)) #define QPATHTOER(var1,var2) QUOTE(PATHTOER(var1,var2)) // Class #define CLASS(var1) DOUBLES(PREFIX,var1) #define QCLASS(var1) QUOTE(DOUBLES(PREFIX,var1)) // Stringtable #define CSTRING(var1) QUOTE(TRIPLES($STR,ADDON,var1)) #define ECSTRING(var1,var2) QUOTE(TRIPLES($STR,DOUBLES(PREFIX,var1),var2)) // Inventory #define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ name = #ITEM; \ count = COUNT; \ } #ifdef DISABLE_COMPILE_CACHE #undef PREP #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QPATHTOF(functions\DOUBLES(fnc,fncName).sqf) #else #undef PREP #define PREP(fncName) [QPATHTOF(functions\DOUBLES(fnc,fncName).sqf), QFUNC(fncName)] call CBA_fnc_compileFunction #endif