Added Int32/64/Ptr helper macros to Util.nsh
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6438 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
469e1e26fd
commit
204f371097
2 changed files with 97 additions and 4 deletions
|
@ -4,9 +4,7 @@
|
|||
;
|
||||
; Voodoo macros to make end-user usage easier. This may be documented someday.
|
||||
|
||||
!verbose push
|
||||
!verbose 3
|
||||
|
||||
!verbose push 3
|
||||
!ifndef ___UTIL__NSH___
|
||||
!define ___UTIL__NSH___
|
||||
|
||||
|
@ -51,6 +49,91 @@
|
|||
!macroend
|
||||
!define CallArtificialFunction2 `!insertmacro CallArtificialFunction2`
|
||||
|
||||
!endif # !___UTIL__NSH___
|
||||
|
||||
!define Int32Op '!insertmacro Int32Op '
|
||||
!define Int64Op '!insertmacro Int64Op '
|
||||
!define IntPtrOp '!insertmacro IntPtrOp '
|
||||
!macro Int32Op r a o b
|
||||
!if ${NSIS_PTR_SIZE} <= 4
|
||||
IntOp ${r} ${a} ${o} ${b}
|
||||
!else
|
||||
!error "Int32Op not implemented"
|
||||
!endif
|
||||
!macroend
|
||||
!macro Int64Op r a o b
|
||||
System::Int64Op ${a} ${o} ${b}
|
||||
Pop ${r}
|
||||
!macroend
|
||||
!macro IntPtrOp r a o b
|
||||
!if ${NSIS_PTR_SIZE} <= 4
|
||||
${Int32Op} ${r} ${a} ${o} "${b}"
|
||||
!else
|
||||
${Int64Op} ${r} ${a} ${o} "${b}"
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
!define Int32Cmp '!insertmacro Int32Cmp '
|
||||
!define Int64Cmp '!insertmacro Int64Cmp '
|
||||
!define IntPtrCmp '!insertmacro IntPtrCmp '
|
||||
!macro Int32Cmp a b jeek jles jgtr
|
||||
!if ${NSIS_PTR_SIZE} <= 4
|
||||
IntCmp ${a} ${b} "${jeek}" "${jles}" "${jgtr}"
|
||||
!else
|
||||
!error "Int32Cmp not implemented"
|
||||
!endif
|
||||
!macroend
|
||||
!macro Int64Cmp a b jeek jles jgtr
|
||||
!ifmacrondef _LOGICLIB_TEMP
|
||||
!include LogicLib.nsh
|
||||
!endif
|
||||
!echo "Int64Cmp ${a} ${b} ${jeek} ${jles} ${jgtr}"
|
||||
!verbose push 2
|
||||
${IfThen} ${a} L= ${b} ${|} Goto ${jeek} ${|}
|
||||
!insertmacro _L< ${a} ${b} ${jles} ${jgtr}
|
||||
!verbose pop
|
||||
!macroend
|
||||
!macro IntPtrCmp a b jeek jles jgtr
|
||||
!if ${NSIS_PTR_SIZE} <= 4
|
||||
${Int32Cmp} ${a} ${b} ${jeek} ${jles} ${jgtr}
|
||||
!else
|
||||
${Int64Cmp} ${a} ${b} ${jeek} ${jles} ${jgtr}
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
!define Int32CmpU '!insertmacro Int32CmpU '
|
||||
!define Int64CmpU '!insertmacro Int64CmpU '
|
||||
!define IntPtrCmpU '!insertmacro IntPtrCmpU '
|
||||
!macro Int32CmpU a b jeek jles jgtr
|
||||
!if ${NSIS_PTR_SIZE} <= 4
|
||||
IntCmpU ${a} ${b} "${jeek}" "${jles}" "${jgtr}"
|
||||
!else
|
||||
!error "Int32CmpU not implemented"
|
||||
!endif
|
||||
!macroend
|
||||
!macro Int64CmpU a b jeek jles jgtr
|
||||
!ifmacrondef _LOGICLIB_TEMP
|
||||
!include LogicLib.nsh
|
||||
!endif
|
||||
!echo "Int64CmpU ${a} ${b} ${jeek} ${jles} ${jgtr}"
|
||||
!verbose push 2
|
||||
!insertmacro _LOGICLIB_TEMP
|
||||
${IfThen} ${a} L= ${b} ${|} Goto ${jeek} ${|}
|
||||
${If} ${a} L> 0
|
||||
${IfThen} ${b} L< 0 ${|} Goto ${jles} ${|}
|
||||
${ElseIf} ${b} L> 0
|
||||
${IfThen} ${a} L< 0 ${|} Goto ${jgtr} ${|}
|
||||
${EndIf}
|
||||
!insertmacro _L< ${a} ${b} ${jles} ${jgtr}
|
||||
!verbose pop
|
||||
!macroend
|
||||
!macro IntPtrCmpU a b jeek jles jgtr
|
||||
!if ${NSIS_PTR_SIZE} <= 4
|
||||
${Int32CmpU} ${a} ${b} ${jeek} ${jles} ${jgtr}
|
||||
!else
|
||||
${Int64CmpU} ${a} ${b} ${jeek} ${jles} ${jgtr}
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
|
||||
!endif # !___UTIL__NSH___
|
||||
!verbose pop
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue