; --------------------- ; Util.nsh ; --------------------- ; ; Voodoo macros to make end-user usage easier. This may be documented someday. !verbose push !verbose 3 !ifndef ___UTIL__NSH___ !define ___UTIL__NSH___ # see WinVer.nsh and *Func.nsh for usage examples !macro CallArtificialFunction NAME !ifndef __UNINSTALL__ !define CallArtificialFunction_TYPE inst !else !define CallArtificialFunction_TYPE uninst !endif Call :.${NAME}${CallArtificialFunction_TYPE} !ifndef ${NAME}${CallArtificialFunction_TYPE}_DEFINED Goto ${NAME}${CallArtificialFunction_TYPE}_DONE !define ${NAME}${CallArtificialFunction_TYPE}_DEFINED .${NAME}${CallArtificialFunction_TYPE}: !insertmacro ${NAME} Return ${NAME}${CallArtificialFunction_TYPE}_DONE: !endif !undef CallArtificialFunction_TYPE !macroend !define CallArtificialFunction `!insertmacro CallArtificialFunction` # for usage of artificial functions inside artificial functions # macro recursion is prohibited !macro CallArtificialFunction2 NAME !ifndef __UNINSTALL__ !define CallArtificialFunction2_TYPE inst !else !define CallArtificialFunction2_TYPE uninst !endif Call :.${NAME}${CallArtificialFunction2_TYPE} !ifndef ${NAME}${CallArtificialFunction2_TYPE}_DEFINED Goto ${NAME}${CallArtificialFunction2_TYPE}_DONE !define ${NAME}${CallArtificialFunction2_TYPE}_DEFINED .${NAME}${CallArtificialFunction2_TYPE}: !insertmacro ${NAME} Return ${NAME}${CallArtificialFunction2_TYPE}_DONE: !endif !undef CallArtificialFunction2_TYPE !macroend !define CallArtificialFunction2 `!insertmacro CallArtificialFunction2` !endif # !___UTIL__NSH___ !verbose pop