home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Programming / nsis-2.46-setup.exe / Include / Util.nsh < prev    next >
Encoding:
Text File  |  2008-11-20  |  1.7 KB  |  57 lines

  1. ; ---------------------
  2. ;       Util.nsh
  3. ; ---------------------
  4. ;
  5. ; Voodoo macros to make end-user usage easier. This may be documented someday.
  6.  
  7. !verbose push
  8. !verbose 3
  9.  
  10. !ifndef ___UTIL__NSH___
  11. !define ___UTIL__NSH___
  12.  
  13. # see WinVer.nsh and *Func.nsh for usage examples
  14. !macro CallArtificialFunction NAME
  15.   !ifndef __UNINSTALL__
  16.     !define CallArtificialFunction_TYPE inst
  17.   !else
  18.     !define CallArtificialFunction_TYPE uninst
  19.   !endif
  20.   Call :.${NAME}${CallArtificialFunction_TYPE}
  21.   !ifndef ${NAME}${CallArtificialFunction_TYPE}_DEFINED
  22.     Goto ${NAME}${CallArtificialFunction_TYPE}_DONE
  23.     !define ${NAME}${CallArtificialFunction_TYPE}_DEFINED
  24.     .${NAME}${CallArtificialFunction_TYPE}:
  25.       !insertmacro ${NAME}
  26.     Return
  27.     ${NAME}${CallArtificialFunction_TYPE}_DONE:
  28.   !endif
  29.   !undef CallArtificialFunction_TYPE
  30. !macroend
  31. !define CallArtificialFunction `!insertmacro CallArtificialFunction`
  32.  
  33. # for usage of artificial functions inside artificial functions
  34. # macro recursion is prohibited
  35. !macro CallArtificialFunction2 NAME
  36.   !ifndef __UNINSTALL__
  37.     !define CallArtificialFunction2_TYPE inst
  38.   !else
  39.     !define CallArtificialFunction2_TYPE uninst
  40.   !endif
  41.   Call :.${NAME}${CallArtificialFunction2_TYPE}
  42.   !ifndef ${NAME}${CallArtificialFunction2_TYPE}_DEFINED
  43.     Goto ${NAME}${CallArtificialFunction2_TYPE}_DONE
  44.     !define ${NAME}${CallArtificialFunction2_TYPE}_DEFINED
  45.     .${NAME}${CallArtificialFunction2_TYPE}:
  46.       !insertmacro ${NAME}
  47.     Return
  48.     ${NAME}${CallArtificialFunction2_TYPE}_DONE:
  49.   !endif
  50.   !undef CallArtificialFunction2_TYPE
  51. !macroend
  52. !define CallArtificialFunction2 `!insertmacro CallArtificialFunction2`
  53.  
  54. !endif # !___UTIL__NSH___
  55.  
  56. !verbose pop
  57.