home *** CD-ROM | disk | FTP | other *** search
Text File | 2008-11-20 | 42.6 KB | 1,804 lines |
- /*
- _____________________________________________________________________________
-
- Word Functions Header v3.3
- _____________________________________________________________________________
-
- 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
-
- See documentation for more information about the following functions.
-
- Usage in script:
- 1. !include "WordFunc.nsh"
- 2. [Section|Function]
- ${WordFunction} "Param1" "Param2" "..." $var
- [SectionEnd|FunctionEnd]
-
-
- WordFunction=[WordFind|WordFindS|WordFind2X|WordFind2XS|WordFind3X|WordFind3XS|
- WordReplace|WordReplaceS|WordAdd|WordAddS|WordInsert|WordInsertS|
- StrFilter|StrFilterS|VersionCompare|VersionConvert]
-
- _____________________________________________________________________________
-
- Thanks to:
- _____________________________________________________________________________
-
- WordFind3X
- Afrow UK (Based on his idea of Function "StrSortLR")
- StrFilter
- sunjammer (Function "StrUpper")
- VersionCompare
- Afrow UK (Based on his Function "VersionCheckNew2")
- VersionConvert
- Afrow UK (Based on his idea of Function "CharIndexReplace")
- */
-
-
- ;_____________________________________________________________________________
- ;
- ; Macros
- ;_____________________________________________________________________________
- ;
- ; Change log window verbosity (default: 3=no script)
- ;
- ; Example:
- ; !include "WordFunc.nsh"
- ; !insertmacro WordFind
- ; ${WORDFUNC_VERBOSE} 4 # all verbosity
- ; !insertmacro WordReplace
- ; ${WORDFUNC_VERBOSE} 3 # no script
-
- !ifndef WORDFUNC_INCLUDED
- !define WORDFUNC_INCLUDED
-
- !include Util.nsh
-
- !verbose push
- !verbose 3
- !ifndef _WORDFUNC_VERBOSE
- !define _WORDFUNC_VERBOSE 3
- !endif
- !verbose ${_WORDFUNC_VERBOSE}
- !define WORDFUNC_VERBOSE `!insertmacro WORDFUNC_VERBOSE`
- !verbose pop
-
- !macro WORDFUNC_VERBOSE _VERBOSE
- !verbose push
- !verbose 3
- !undef _WORDFUNC_VERBOSE
- !define _WORDFUNC_VERBOSE ${_VERBOSE}
- !verbose pop
- !macroend
-
-
- !macro WordFindCall _ART _STRING _DELIMITER _OPTION _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_DELIMITER}`
- Push `${_OPTION}`
- ${CallArtificialFunction}${_ART} WordFind_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordFindSCall _ART _STRING _DELIMITER _OPTION _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_DELIMITER}`
- Push `${_OPTION}`
- ${CallArtificialFunction}${_ART} WordFindS_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordFind2XCall _STRING _DELIMITER1 _DELIMITER2 _NUMBER _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_DELIMITER1}`
- Push `${_DELIMITER2}`
- Push `${_NUMBER}`
- ${CallArtificialFunction} WordFind2X_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordFind2XSCall _STRING _DELIMITER1 _DELIMITER2 _NUMBER _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_DELIMITER1}`
- Push `${_DELIMITER2}`
- Push `${_NUMBER}`
- ${CallArtificialFunction} WordFind2XS_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordFind3XCall _STRING _DELIMITER1 _CENTER _DELIMITER2 _NUMBER _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_DELIMITER1}`
- Push `${_CENTER}`
- Push `${_DELIMITER2}`
- Push `${_NUMBER}`
- ${CallArtificialFunction} WordFind3X_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordFind3XSCall _STRING _DELIMITER1 _CENTER _DELIMITER2 _NUMBER _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_DELIMITER1}`
- Push `${_CENTER}`
- Push `${_DELIMITER2}`
- Push `${_NUMBER}`
- ${CallArtificialFunction} WordFind3XS_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordReplaceCall _STRING _WORD1 _WORD2 _NUMBER _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_WORD1}`
- Push `${_WORD2}`
- Push `${_NUMBER}`
- ${CallArtificialFunction} WordReplace_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordReplaceSCall _STRING _WORD1 _WORD2 _NUMBER _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_WORD1}`
- Push `${_WORD2}`
- Push `${_NUMBER}`
- ${CallArtificialFunction} WordReplaceS_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordAddCall _STRING1 _DELIMITER _STRING2 _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING1}`
- Push `${_DELIMITER}`
- Push `${_STRING2}`
- ${CallArtificialFunction} WordAdd_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordAddSCall _STRING1 _DELIMITER _STRING2 _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING1}`
- Push `${_DELIMITER}`
- Push `${_STRING2}`
- ${CallArtificialFunction} WordAddS_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordInsertCall _STRING _DELIMITER _WORD _NUMBER _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_DELIMITER}`
- Push `${_WORD}`
- Push `${_NUMBER}`
- ${CallArtificialFunction} WordInsert_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordInsertSCall _STRING _DELIMITER _WORD _NUMBER _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_DELIMITER}`
- Push `${_WORD}`
- Push `${_NUMBER}`
- ${CallArtificialFunction} WordInsertS_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro StrFilterCall _STRING _FILTER _INCLUDE _EXCLUDE _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_FILTER}`
- Push `${_INCLUDE}`
- Push `${_EXCLUDE}`
- ${CallArtificialFunction} StrFilter_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro StrFilterSCall _STRING _FILTER _INCLUDE _EXCLUDE _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_STRING}`
- Push `${_FILTER}`
- Push `${_INCLUDE}`
- Push `${_EXCLUDE}`
- ${CallArtificialFunction} StrFilterS_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro VersionCompareCall _VER1 _VER2 _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_VER1}`
- Push `${_VER2}`
- ${CallArtificialFunction} VersionCompare_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro VersionConvertCall _VERSION _CHARLIST _RESULT
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
- Push `${_VERSION}`
- Push `${_CHARLIST}`
- ${CallArtificialFunction} VersionConvert_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro WordFindBody _WORDFUNC_S
- Exch $1
- Exch
- Exch $0
- Exch
- Exch 2
- Exch $R0
- Exch 2
- Push $2
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $8
- Push $9
- Push $R1
- Push $R2
- ClearErrors
-
- StrCpy $9 ''
- StrCpy $2 $1 1
- StrCpy $1 $1 '' 1
- StrCmp $2 'E' 0 +3
- StrCpy $9 E
- goto -4
-
- StrCpy $3 ''
- StrCmp${_WORDFUNC_S} $2 '+' +6
- StrCmp${_WORDFUNC_S} $2 '-' +5
- StrCmp${_WORDFUNC_S} $2 '/' WordFunc_WordFind${_WORDFUNC_S}_restart
- StrCmp${_WORDFUNC_S} $2 '#' WordFunc_WordFind${_WORDFUNC_S}_restart
- StrCmp${_WORDFUNC_S} $2 '*' WordFunc_WordFind${_WORDFUNC_S}_restart
- goto WordFunc_WordFind${_WORDFUNC_S}_error3
-
- StrCpy $4 $1 1 -1
- StrCmp${_WORDFUNC_S} $4 '*' +4
- StrCmp${_WORDFUNC_S} $4 '}' +3
- StrCmp${_WORDFUNC_S} $4 '{' +2
- goto +4
- StrCpy $1 $1 -1
- StrCpy $3 '$4$3'
- goto -7
- StrCmp${_WORDFUNC_S} $3 '*' WordFunc_WordFind${_WORDFUNC_S}_error3
- StrCmp${_WORDFUNC_S} $3 '**' WordFunc_WordFind${_WORDFUNC_S}_error3
- StrCmp${_WORDFUNC_S} $3 '}{' WordFunc_WordFind${_WORDFUNC_S}_error3
- IntOp $1 $1 + 0
- StrCmp${_WORDFUNC_S} $1 0 WordFunc_WordFind${_WORDFUNC_S}_error2
-
- WordFunc_WordFind${_WORDFUNC_S}_restart:
- StrCmp${_WORDFUNC_S} $R0 '' WordFunc_WordFind${_WORDFUNC_S}_error1
- StrCpy $4 0
- StrCpy $5 0
- StrCpy $6 0
- StrLen $7 $0
- goto WordFunc_WordFind${_WORDFUNC_S}_loop
-
- WordFunc_WordFind${_WORDFUNC_S}_preloop:
- IntOp $6 $6 + 1
-
- WordFunc_WordFind${_WORDFUNC_S}_loop:
- StrCpy $8 $R0 $7 $6
- StrCmp${_WORDFUNC_S} $8$5 0 WordFunc_WordFind${_WORDFUNC_S}_error1
- StrLen $R2 $8
- IntCmp $R2 0 +2
- StrCmp${_WORDFUNC_S} $8 $0 +5 WordFunc_WordFind${_WORDFUNC_S}_preloop
- StrCmp${_WORDFUNC_S} $3 '{' WordFunc_WordFind${_WORDFUNC_S}_minus
- StrCmp${_WORDFUNC_S} $3 '}' WordFunc_WordFind${_WORDFUNC_S}_minus
- StrCmp${_WORDFUNC_S} $2 '*' WordFunc_WordFind${_WORDFUNC_S}_minus
- StrCmp${_WORDFUNC_S} $5 $6 WordFunc_WordFind${_WORDFUNC_S}_minus +5
- StrCmp${_WORDFUNC_S} $3 '{' +4
- StrCmp${_WORDFUNC_S} $3 '}' +3
- StrCmp${_WORDFUNC_S} $2 '*' +2
- StrCmp${_WORDFUNC_S} $5 $6 WordFunc_WordFind${_WORDFUNC_S}_nextword
- IntOp $4 $4 + 1
- StrCmp${_WORDFUNC_S} $2$4 +$1 WordFunc_WordFind${_WORDFUNC_S}_plus
- StrCmp${_WORDFUNC_S} $2 '/' 0 WordFunc_WordFind${_WORDFUNC_S}_nextword
- IntOp $8 $6 - $5
- StrCpy $8 $R0 $8 $5
- StrCmp${_WORDFUNC_S} $1 $8 0 WordFunc_WordFind${_WORDFUNC_S}_nextword
- StrCpy $R1 $4
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- WordFunc_WordFind${_WORDFUNC_S}_nextword:
- IntOp $6 $6 + $7
- StrCpy $5 $6
- goto WordFunc_WordFind${_WORDFUNC_S}_loop
-
- WordFunc_WordFind${_WORDFUNC_S}_minus:
- StrCmp${_WORDFUNC_S} $2 '-' 0 WordFunc_WordFind${_WORDFUNC_S}_sum
- StrCpy $2 '+'
- IntOp $1 $4 - $1
- IntOp $1 $1 + 1
- IntCmp $1 0 WordFunc_WordFind${_WORDFUNC_S}_error2 WordFunc_WordFind${_WORDFUNC_S}_error2 WordFunc_WordFind${_WORDFUNC_S}_restart
- WordFunc_WordFind${_WORDFUNC_S}_sum:
- StrCmp${_WORDFUNC_S} $2 '#' 0 WordFunc_WordFind${_WORDFUNC_S}_sumdelim
- StrCpy $R1 $4
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- WordFunc_WordFind${_WORDFUNC_S}_sumdelim:
- StrCmp${_WORDFUNC_S} $2 '*' 0 WordFunc_WordFind${_WORDFUNC_S}_error2
- StrCpy $R1 $4
- goto WordFunc_WordFind${_WORDFUNC_S}_end
-
- WordFunc_WordFind${_WORDFUNC_S}_plus:
- StrCmp${_WORDFUNC_S} $3 '' 0 +4
- IntOp $6 $6 - $5
- StrCpy $R1 $R0 $6 $5
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $3 '{' 0 +3
- StrCpy $R1 $R0 $6
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $3 '}' 0 +4
- IntOp $6 $6 + $7
- StrCpy $R1 $R0 '' $6
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $3 '{*' +2
- StrCmp${_WORDFUNC_S} $3 '*{' 0 +3
- StrCpy $R1 $R0 $6
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $3 '*}' +2
- StrCmp${_WORDFUNC_S} $3 '}*' 0 +3
- StrCpy $R1 $R0 '' $5
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $3 '}}' 0 +3
- StrCpy $R1 $R0 '' $6
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $3 '{{' 0 +3
- StrCpy $R1 $R0 $5
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $3 '{}' 0 WordFunc_WordFind${_WORDFUNC_S}_error3
- StrLen $3 $R0
- StrCmp${_WORDFUNC_S} $3 $6 0 +3
- StrCpy $0 ''
- goto +2
- IntOp $6 $6 + $7
- StrCpy $8 $R0 '' $6
- StrCmp${_WORDFUNC_S} $4$8 1 +6
- StrCmp${_WORDFUNC_S} $4 1 +2 +7
- IntOp $6 $6 + $7
- StrCpy $3 $R0 $7 $6
- StrCmp${_WORDFUNC_S} $3 '' +2
- StrCmp${_WORDFUNC_S} $3 $0 -3 +3
- StrCpy $R1 ''
- goto WordFunc_WordFind${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $5 0 0 +3
- StrCpy $0 ''
- goto +2
- IntOp $5 $5 - $7
- StrCpy $3 $R0 $5
- StrCpy $R1 '$3$0$8'
- goto WordFunc_WordFind${_WORDFUNC_S}_end
-
- WordFunc_WordFind${_WORDFUNC_S}_error3:
- StrCpy $R1 3
- goto WordFunc_WordFind${_WORDFUNC_S}_error
- WordFunc_WordFind${_WORDFUNC_S}_error2:
- StrCpy $R1 2
- goto WordFunc_WordFind${_WORDFUNC_S}_error
- WordFunc_WordFind${_WORDFUNC_S}_error1:
- StrCpy $R1 1
- WordFunc_WordFind${_WORDFUNC_S}_error:
- StrCmp $9 'E' 0 +3
- SetErrors
-
- WordFunc_WordFind${_WORDFUNC_S}_end:
- StrCpy $R0 $R1
-
- Pop $R2
- Pop $R1
- Pop $9
- Pop $8
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- Exch $R0
- !macroend
-
- !define WordFind `!insertmacro WordFindCall ''`
- !define un.WordFind `!insertmacro WordFindCall ''`
-
- !macro WordFind
- !macroend
-
- !macro un.WordFind
- !macroend
-
- !macro WordFind_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordFindBody ''
-
- !verbose pop
- !macroend
-
- !define WordFindS `!insertmacro WordFindSCall ''`
- !define un.WordFindS `!insertmacro WordFindSCall ''`
-
- !macro WordFindS
- !macroend
-
- !macro un.WordFindS
- !macroend
-
- !macro WordFindS_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordFindBody 'S'
-
- !verbose pop
- !macroend
-
- !macro WordFind2XBody _WORDFUNC_S
- Exch $2
- Exch
- Exch $1
- Exch
- Exch 2
- Exch $0
- Exch 2
- Exch 3
- Exch $R0
- Exch 3
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $8
- Push $9
- Push $R1
- Push $R2
- ClearErrors
-
- StrCpy $R2 ''
- StrCpy $3 $2 1
- StrCpy $2 $2 '' 1
- StrCmp $3 'E' 0 +3
- StrCpy $R2 E
- goto -4
-
- StrCmp${_WORDFUNC_S} $3 '+' +5
- StrCmp${_WORDFUNC_S} $3 '-' +4
- StrCmp${_WORDFUNC_S} $3 '#' WordFunc_WordFind2X${_WORDFUNC_S}_restart
- StrCmp${_WORDFUNC_S} $3 '/' WordFunc_WordFind2X${_WORDFUNC_S}_restart
- goto WordFunc_WordFind2X${_WORDFUNC_S}_error3
-
- StrCpy $4 $2 2 -2
- StrCmp${_WORDFUNC_S} $4 '{{' +9
- StrCmp${_WORDFUNC_S} $4 '}}' +8
- StrCmp${_WORDFUNC_S} $4 '{*' +7
- StrCmp${_WORDFUNC_S} $4 '*{' +6
- StrCmp${_WORDFUNC_S} $4 '*}' +5
- StrCmp${_WORDFUNC_S} $4 '}*' +4
- StrCmp${_WORDFUNC_S} $4 '{}' +3
- StrCpy $4 ''
- goto +2
- StrCpy $2 $2 -2
- IntOp $2 $2 + 0
- StrCmp${_WORDFUNC_S} $2 0 WordFunc_WordFind2X${_WORDFUNC_S}_error2
-
- WordFunc_WordFind2X${_WORDFUNC_S}_restart:
- StrCmp${_WORDFUNC_S} $R0 '' WordFunc_WordFind2X${_WORDFUNC_S}_error1
- StrCpy $5 -1
- StrCpy $6 0
- StrCpy $7 ''
- StrLen $8 $0
- StrLen $9 $1
-
- WordFunc_WordFind2X${_WORDFUNC_S}_loop:
- IntOp $5 $5 + 1
-
- WordFunc_WordFind2X${_WORDFUNC_S}_delim1:
- StrCpy $R1 $R0 $8 $5
- StrCmp${_WORDFUNC_S} $R1$6 0 WordFunc_WordFind2X${_WORDFUNC_S}_error1
- StrCmp${_WORDFUNC_S} $R1 '' WordFunc_WordFind2X${_WORDFUNC_S}_minus
- StrCmp${_WORDFUNC_S} $R1 $0 +2
- StrCmp${_WORDFUNC_S} $7 '' WordFunc_WordFind2X${_WORDFUNC_S}_loop WordFunc_WordFind2X${_WORDFUNC_S}_delim2
- StrCmp${_WORDFUNC_S} $0 $1 0 +2
- StrCmp${_WORDFUNC_S} $7 '' 0 WordFunc_WordFind2X${_WORDFUNC_S}_delim2
- IntOp $7 $5 + $8
- StrCpy $5 $7
- goto WordFunc_WordFind2X${_WORDFUNC_S}_delim1
-
- WordFunc_WordFind2X${_WORDFUNC_S}_delim2:
- StrCpy $R1 $R0 $9 $5
- StrCmp${_WORDFUNC_S} $R1 $1 0 WordFunc_WordFind2X${_WORDFUNC_S}_loop
- IntOp $6 $6 + 1
- StrCmp${_WORDFUNC_S} $3$6 '+$2' WordFunc_WordFind2X${_WORDFUNC_S}_plus
- StrCmp${_WORDFUNC_S} $3 '/' 0 WordFunc_WordFind2X${_WORDFUNC_S}_nextword
- IntOp $R1 $5 - $7
- StrCpy $R1 $R0 $R1 $7
- StrCmp${_WORDFUNC_S} $R1 $2 0 +3
- StrCpy $R1 $6
- goto WordFunc_WordFind2X${_WORDFUNC_S}_end
- WordFunc_WordFind2X${_WORDFUNC_S}_nextword:
- IntOp $5 $5 + $9
- StrCpy $7 ''
- goto WordFunc_WordFind2X${_WORDFUNC_S}_delim1
-
- WordFunc_WordFind2X${_WORDFUNC_S}_minus:
- StrCmp${_WORDFUNC_S} $3 '-' 0 WordFunc_WordFind2X${_WORDFUNC_S}_sum
- StrCpy $3 +
- IntOp $2 $6 - $2
- IntOp $2 $2 + 1
- IntCmp $2 0 WordFunc_WordFind2X${_WORDFUNC_S}_error2 WordFunc_WordFind2X${_WORDFUNC_S}_error2 WordFunc_WordFind2X${_WORDFUNC_S}_restart
- WordFunc_WordFind2X${_WORDFUNC_S}_sum:
- StrCmp${_WORDFUNC_S} $3 '#' 0 WordFunc_WordFind2X${_WORDFUNC_S}_error2
- StrCpy $R1 $6
- goto WordFunc_WordFind2X${_WORDFUNC_S}_end
-
- WordFunc_WordFind2X${_WORDFUNC_S}_plus:
- StrCmp${_WORDFUNC_S} $4 '' 0 +4
- IntOp $R1 $5 - $7
- StrCpy $R1 $R0 $R1 $7
- goto WordFunc_WordFind2X${_WORDFUNC_S}_end
- IntOp $5 $5 + $9
- IntOp $7 $7 - $8
- StrCmp${_WORDFUNC_S} $4 '{*' +2
- StrCmp${_WORDFUNC_S} $4 '*{' 0 +3
- StrCpy $R1 $R0 $5
- goto WordFunc_WordFind2X${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $4 '*}' +2
- StrCmp${_WORDFUNC_S} $4 '}*' 0 +3
- StrCpy $R1 $R0 '' $7
- goto WordFunc_WordFind2X${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $4 '}}' 0 +3
- StrCpy $R1 $R0 '' $5
- goto WordFunc_WordFind2X${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $4 '{{' 0 +3
- StrCpy $R1 $R0 $7
- goto WordFunc_WordFind2X${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $4 '{}' 0 WordFunc_WordFind2X${_WORDFUNC_S}_error3
- StrCpy $5 $R0 '' $5
- StrCpy $7 $R0 $7
- StrCpy $R1 '$7$5'
- goto WordFunc_WordFind2X${_WORDFUNC_S}_end
-
- WordFunc_WordFind2X${_WORDFUNC_S}_error3:
- StrCpy $R1 3
- goto WordFunc_WordFind2X${_WORDFUNC_S}_error
- WordFunc_WordFind2X${_WORDFUNC_S}_error2:
- StrCpy $R1 2
- goto WordFunc_WordFind2X${_WORDFUNC_S}_error
- WordFunc_WordFind2X${_WORDFUNC_S}_error1:
- StrCpy $R1 1
- WordFunc_WordFind2X${_WORDFUNC_S}_error:
- StrCmp $R2 'E' 0 +3
- SetErrors
-
- WordFunc_WordFind2X${_WORDFUNC_S}_end:
- StrCpy $R0 $R1
-
- Pop $R2
- Pop $R1
- Pop $9
- Pop $8
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- Exch $R0
- !macroend
-
- !define WordFind2X `!insertmacro WordFind2XCall`
- !define un.WordFind2X `!insertmacro WordFind2XCall`
-
- !macro WordFind2X
- !macroend
-
- !macro un.WordFind2X
- !macroend
-
- !macro WordFind2X_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordFind2XBody ''
-
- !verbose pop
- !macroend
-
- !define WordFind2XS `!insertmacro WordFind2XSCall`
- !define un.WordFind2XS `!insertmacro WordFind2XSCall`
-
- !macro WordFind2XS
- !macroend
-
- !macro un.WordFind2XS
- !macroend
-
- !macro WordFind2XS_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordFind2XBody 'S'
-
- !verbose pop
- !macroend
-
- !macro WordFind3XBody _WORDFUNC_S
- Exch $3
- Exch
- Exch $2
- Exch
- Exch 2
- Exch $1
- Exch 2
- Exch 3
- Exch $0
- Exch 3
- Exch 4
- Exch $R0
- Exch 4
- Push $4
- Push $5
- Push $6
- Push $7
- Push $8
- Push $9
- Push $R1
- Push $R2
- Push $R3
- Push $R4
- Push $R5
- ClearErrors
-
- StrCpy $R5 ''
- StrCpy $4 $3 1
- StrCpy $3 $3 '' 1
- StrCmp $4 'E' 0 +3
- StrCpy $R5 E
- goto -4
-
- StrCmp${_WORDFUNC_S} $4 '+' +5
- StrCmp${_WORDFUNC_S} $4 '-' +4
- StrCmp${_WORDFUNC_S} $4 '#' WordFunc_WordFind3X${_WORDFUNC_S}_restart
- StrCmp${_WORDFUNC_S} $4 '/' WordFunc_WordFind3X${_WORDFUNC_S}_restart
- goto WordFunc_WordFind3X${_WORDFUNC_S}_error3
-
- StrCpy $5 $3 2 -2
- StrCmp${_WORDFUNC_S} $5 '{{' +9
- StrCmp${_WORDFUNC_S} $5 '}}' +8
- StrCmp${_WORDFUNC_S} $5 '{*' +7
- StrCmp${_WORDFUNC_S} $5 '*{' +6
- StrCmp${_WORDFUNC_S} $5 '*}' +5
- StrCmp${_WORDFUNC_S} $5 '}*' +4
- StrCmp${_WORDFUNC_S} $5 '{}' +3
- StrCpy $5 ''
- goto +2
- StrCpy $3 $3 -2
- IntOp $3 $3 + 0
- StrCmp${_WORDFUNC_S} $3 0 WordFunc_WordFind3X${_WORDFUNC_S}_error2
-
- WordFunc_WordFind3X${_WORDFUNC_S}_restart:
- StrCmp${_WORDFUNC_S} $R0 '' WordFunc_WordFind3X${_WORDFUNC_S}_error1
- StrCpy $6 -1
- StrCpy $7 0
- StrCpy $8 ''
- StrCpy $9 ''
- StrLen $R1 $0
- StrLen $R2 $1
- StrLen $R3 $2
-
- WordFunc_WordFind3X${_WORDFUNC_S}_loop:
- IntOp $6 $6 + 1
-
- WordFunc_WordFind3X${_WORDFUNC_S}_delim1:
- StrCpy $R4 $R0 $R1 $6
- StrCmp${_WORDFUNC_S} $R4$7 0 WordFunc_WordFind3X${_WORDFUNC_S}_error1
- StrCmp${_WORDFUNC_S} $R4 '' WordFunc_WordFind3X${_WORDFUNC_S}_minus
- StrCmp${_WORDFUNC_S} $R4 $0 +2
- StrCmp${_WORDFUNC_S} $8 '' WordFunc_WordFind3X${_WORDFUNC_S}_loop WordFunc_WordFind3X${_WORDFUNC_S}_center
- StrCmp${_WORDFUNC_S} $0 $1 +2
- StrCmp${_WORDFUNC_S} $0 $2 0 +2
- StrCmp${_WORDFUNC_S} $8 '' 0 WordFunc_WordFind3X${_WORDFUNC_S}_center
- IntOp $8 $6 + $R1
- StrCpy $6 $8
- goto WordFunc_WordFind3X${_WORDFUNC_S}_delim1
-
- WordFunc_WordFind3X${_WORDFUNC_S}_center:
- StrCmp${_WORDFUNC_S} $9 '' 0 WordFunc_WordFind3X${_WORDFUNC_S}_delim2
- StrCpy $R4 $R0 $R2 $6
- StrCmp${_WORDFUNC_S} $R4 $1 0 WordFunc_WordFind3X${_WORDFUNC_S}_loop
- IntOp $9 $6 + $R2
- StrCpy $6 $9
- goto WordFunc_WordFind3X${_WORDFUNC_S}_delim1
-
- WordFunc_WordFind3X${_WORDFUNC_S}_delim2:
- StrCpy $R4 $R0 $R3 $6
- StrCmp${_WORDFUNC_S} $R4 $2 0 WordFunc_WordFind3X${_WORDFUNC_S}_loop
- IntOp $7 $7 + 1
- StrCmp${_WORDFUNC_S} $4$7 '+$3' WordFunc_WordFind3X${_WORDFUNC_S}_plus
- StrCmp${_WORDFUNC_S} $4 '/' 0 WordFunc_WordFind3X${_WORDFUNC_S}_nextword
- IntOp $R4 $6 - $8
- StrCpy $R4 $R0 $R4 $8
- StrCmp${_WORDFUNC_S} $R4 $3 0 +3
- StrCpy $R4 $7
- goto WordFunc_WordFind3X${_WORDFUNC_S}_end
- WordFunc_WordFind3X${_WORDFUNC_S}_nextword:
- IntOp $6 $6 + $R3
- StrCpy $8 ''
- StrCpy $9 ''
- goto WordFunc_WordFind3X${_WORDFUNC_S}_delim1
-
- WordFunc_WordFind3X${_WORDFUNC_S}_minus:
- StrCmp${_WORDFUNC_S} $4 '-' 0 WordFunc_WordFind3X${_WORDFUNC_S}_sum
- StrCpy $4 +
- IntOp $3 $7 - $3
- IntOp $3 $3 + 1
- IntCmp $3 0 WordFunc_WordFind3X${_WORDFUNC_S}_error2 WordFunc_WordFind3X${_WORDFUNC_S}_error2 WordFunc_WordFind3X${_WORDFUNC_S}_restart
- WordFunc_WordFind3X${_WORDFUNC_S}_sum:
- StrCmp${_WORDFUNC_S} $4 '#' 0 WordFunc_WordFind3X${_WORDFUNC_S}_error2
- StrCpy $R4 $7
- goto WordFunc_WordFind3X${_WORDFUNC_S}_end
-
- WordFunc_WordFind3X${_WORDFUNC_S}_plus:
- StrCmp${_WORDFUNC_S} $5 '' 0 +4
- IntOp $R4 $6 - $8
- StrCpy $R4 $R0 $R4 $8
- goto WordFunc_WordFind3X${_WORDFUNC_S}_end
- IntOp $6 $6 + $R3
- IntOp $8 $8 - $R1
- StrCmp${_WORDFUNC_S} $5 '{*' +2
- StrCmp${_WORDFUNC_S} $5 '*{' 0 +3
- StrCpy $R4 $R0 $6
- goto WordFunc_WordFind3X${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $5 '*}' +2
- StrCmp${_WORDFUNC_S} $5 '}*' 0 +3
- StrCpy $R4 $R0 '' $8
- goto WordFunc_WordFind3X${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $5 '}}' 0 +3
- StrCpy $R4 $R0 '' $6
- goto WordFunc_WordFind3X${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $5 '{{' 0 +3
- StrCpy $R4 $R0 $8
- goto WordFunc_WordFind3X${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $5 '{}' 0 WordFunc_WordFind3X${_WORDFUNC_S}_error3
- StrCpy $6 $R0 '' $6
- StrCpy $8 $R0 $8
- StrCpy $R4 '$8$6'
- goto WordFunc_WordFind3X${_WORDFUNC_S}_end
-
- WordFunc_WordFind3X${_WORDFUNC_S}_error3:
- StrCpy $R4 3
- goto WordFunc_WordFind3X${_WORDFUNC_S}_error
- WordFunc_WordFind3X${_WORDFUNC_S}_error2:
- StrCpy $R4 2
- goto WordFunc_WordFind3X${_WORDFUNC_S}_error
- WordFunc_WordFind3X${_WORDFUNC_S}_error1:
- StrCpy $R4 1
- WordFunc_WordFind3X${_WORDFUNC_S}_error:
- StrCmp $R5 'E' 0 +3
- SetErrors
-
- WordFunc_WordFind3X${_WORDFUNC_S}_end:
- StrCpy $R0 $R4
- Pop $R5
- Pop $R4
- Pop $R3
- Pop $R2
- Pop $R1
- Pop $9
- Pop $8
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- Exch $R0
- !macroend
-
- !define WordFind3X `!insertmacro WordFind3XCall`
- !define un.WordFind3X `!insertmacro WordFind3XCall`
-
- !macro WordFind3X
- !macroend
-
- !macro un.WordFind3X
- !macroend
-
- !macro WordFind3X_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordFind3XBody ''
-
- !verbose pop
- !macroend
-
- !define WordFind3XS `!insertmacro WordFind3XSCall`
- !define un.WordFind3XS `!insertmacro WordFind3XSCall`
-
- !macro WordFind3XS
- !macroend
-
- !macro un.WordFind3XS
- !macroend
-
- !macro WordFind3XS_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordFind3XBody 'S'
-
- !verbose pop
- !macroend
-
- !macro WordReplaceBody _WORDFUNC_S
- Exch $2
- Exch
- Exch $1
- Exch
- Exch 2
- Exch $0
- Exch 2
- Exch 3
- Exch $R0
- Exch 3
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $8
- Push $9
- Push $R1
- ClearErrors
-
- StrCpy $R1 $R0
- StrCpy $9 ''
- StrCpy $3 $2 1
- StrCpy $2 $2 '' 1
- StrCmp $3 'E' 0 +3
- StrCpy $9 E
- goto -4
-
- StrCpy $4 $2 1 -1
- StrCpy $5 ''
- StrCpy $6 ''
- StrLen $7 $0
-
- StrCmp${_WORDFUNC_S} $7 0 WordFunc_WordReplace${_WORDFUNC_S}_error1
- StrCmp${_WORDFUNC_S} $R0 '' WordFunc_WordReplace${_WORDFUNC_S}_error1
- StrCmp${_WORDFUNC_S} $3 '{' WordFunc_WordReplace${_WORDFUNC_S}_beginning
- StrCmp${_WORDFUNC_S} $3 '}' WordFunc_WordReplace${_WORDFUNC_S}_ending WordFunc_WordReplace${_WORDFUNC_S}_errorchk
-
- WordFunc_WordReplace${_WORDFUNC_S}_beginning:
- StrCpy $8 $R0 $7
- StrCmp${_WORDFUNC_S} $8 $0 0 +4
- StrCpy $R0 $R0 '' $7
- StrCpy $5 '$5$1'
- goto -4
- StrCpy $3 $2 1
- StrCmp${_WORDFUNC_S} $3 '}' 0 WordFunc_WordReplace${_WORDFUNC_S}_merge
-
- WordFunc_WordReplace${_WORDFUNC_S}_ending:
- StrCpy $8 $R0 '' -$7
- StrCmp${_WORDFUNC_S} $8 $0 0 +4
- StrCpy $R0 $R0 -$7
- StrCpy $6 '$6$1'
- goto -4
-
- WordFunc_WordReplace${_WORDFUNC_S}_merge:
- StrCmp${_WORDFUNC_S} $4 '*' 0 +5
- StrCmp${_WORDFUNC_S} $5 '' +2
- StrCpy $5 $1
- StrCmp${_WORDFUNC_S} $6 '' +2
- StrCpy $6 $1
- StrCpy $R0 '$5$R0$6'
- goto WordFunc_WordReplace${_WORDFUNC_S}_end
-
- WordFunc_WordReplace${_WORDFUNC_S}_errorchk:
- StrCmp${_WORDFUNC_S} $3 '+' +2
- StrCmp${_WORDFUNC_S} $3 '-' 0 WordFunc_WordReplace${_WORDFUNC_S}_error3
-
- StrCpy $5 $2 1
- IntOp $2 $2 + 0
- StrCmp${_WORDFUNC_S} $2 0 0 WordFunc_WordReplace${_WORDFUNC_S}_one
- StrCmp${_WORDFUNC_S} $5 0 WordFunc_WordReplace${_WORDFUNC_S}_error2
- StrCpy $3 ''
-
- WordFunc_WordReplace${_WORDFUNC_S}_all:
- StrCpy $5 0
- StrCpy $2 $R0 $7 $5
- StrCmp${_WORDFUNC_S} $2 '' +4
- StrCmp${_WORDFUNC_S} $2 $0 +6
- IntOp $5 $5 + 1
- goto -4
- StrCmp${_WORDFUNC_S} $R0 $R1 WordFunc_WordReplace${_WORDFUNC_S}_error1
- StrCpy $R0 '$3$R0'
- goto WordFunc_WordReplace${_WORDFUNC_S}_end
- StrCpy $2 $R0 $5
- IntOp $5 $5 + $7
- StrCmp${_WORDFUNC_S} $4 '*' 0 +3
- StrCpy $6 $R0 $7 $5
- StrCmp${_WORDFUNC_S} $6 $0 -3
- StrCpy $R0 $R0 '' $5
- StrCpy $3 '$3$2$1'
- goto WordFunc_WordReplace${_WORDFUNC_S}_all
-
- WordFunc_WordReplace${_WORDFUNC_S}_one:
- StrCpy $5 0
- StrCpy $8 0
- goto WordFunc_WordReplace${_WORDFUNC_S}_loop
-
- WordFunc_WordReplace${_WORDFUNC_S}_preloop:
- IntOp $5 $5 + 1
-
- WordFunc_WordReplace${_WORDFUNC_S}_loop:
- StrCpy $6 $R0 $7 $5
- StrCmp${_WORDFUNC_S} $6$8 0 WordFunc_WordReplace${_WORDFUNC_S}_error1
- StrCmp${_WORDFUNC_S} $6 '' WordFunc_WordReplace${_WORDFUNC_S}_minus
- StrCmp${_WORDFUNC_S} $6 $0 0 WordFunc_WordReplace${_WORDFUNC_S}_preloop
- IntOp $8 $8 + 1
- StrCmp${_WORDFUNC_S} $3$8 +$2 WordFunc_WordReplace${_WORDFUNC_S}_found
- IntOp $5 $5 + $7
- goto WordFunc_WordReplace${_WORDFUNC_S}_loop
-
- WordFunc_WordReplace${_WORDFUNC_S}_minus:
- StrCmp${_WORDFUNC_S} $3 '-' 0 WordFunc_WordReplace${_WORDFUNC_S}_error2
- StrCpy $3 +
- IntOp $2 $8 - $2
- IntOp $2 $2 + 1
- IntCmp $2 0 WordFunc_WordReplace${_WORDFUNC_S}_error2 WordFunc_WordReplace${_WORDFUNC_S}_error2 WordFunc_WordReplace${_WORDFUNC_S}_one
-
- WordFunc_WordReplace${_WORDFUNC_S}_found:
- StrCpy $3 $R0 $5
- StrCmp${_WORDFUNC_S} $4 '*' 0 +5
- StrCpy $6 $3 '' -$7
- StrCmp${_WORDFUNC_S} $6 $0 0 +3
- StrCpy $3 $3 -$7
- goto -3
- IntOp $5 $5 + $7
- StrCmp${_WORDFUNC_S} $4 '*' 0 +3
- StrCpy $6 $R0 $7 $5
- StrCmp${_WORDFUNC_S} $6 $0 -3
- StrCpy $R0 $R0 '' $5
- StrCpy $R0 '$3$1$R0'
- goto WordFunc_WordReplace${_WORDFUNC_S}_end
-
- WordFunc_WordReplace${_WORDFUNC_S}_error3:
- StrCpy $R0 3
- goto WordFunc_WordReplace${_WORDFUNC_S}_error
- WordFunc_WordReplace${_WORDFUNC_S}_error2:
- StrCpy $R0 2
- goto WordFunc_WordReplace${_WORDFUNC_S}_error
- WordFunc_WordReplace${_WORDFUNC_S}_error1:
- StrCpy $R0 1
- WordFunc_WordReplace${_WORDFUNC_S}_error:
- StrCmp $9 'E' +3
- StrCpy $R0 $R1
- goto +2
- SetErrors
-
- WordFunc_WordReplace${_WORDFUNC_S}_end:
- Pop $R1
- Pop $9
- Pop $8
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- Exch $R0
- !macroend
-
- !define WordReplace `!insertmacro WordReplaceCall`
- !define un.WordReplace `!insertmacro WordReplaceCall`
-
- !macro WordReplace
- !macroend
-
- !macro un.WordReplace
- !macroend
-
- !macro WordReplace_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordReplaceBody ''
-
- !verbose pop
- !macroend
-
- !define WordReplaceS `!insertmacro WordReplaceSCall`
- !define un.WordReplaceS `!insertmacro WordReplaceSCall`
-
- !macro WordReplaceS
- !macroend
-
- !macro un.WordReplaceS
- !macroend
-
- !macro WordReplaceS_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordReplaceBody 'S'
-
- !verbose pop
- !macroend
-
- !macro WordAddBody _WORDFUNC_S
- Exch $1
- Exch
- Exch $0
- Exch
- Exch 2
- Exch $R0
- Exch 2
- Push $2
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $R1
- ClearErrors
-
- StrCpy $7 ''
- StrCpy $2 $1 1
- StrCmp $2 'E' 0 +4
- StrCpy $7 E
- StrCpy $1 $1 '' 1
- goto -4
-
- StrCpy $5 0
- StrCpy $R1 $R0
- StrCpy $2 $1 '' 1
- StrCpy $1 $1 1
- StrCmp${_WORDFUNC_S} $1 '+' +2
- StrCmp${_WORDFUNC_S} $1 '-' 0 WordFunc_WordAdd${_WORDFUNC_S}_error3
-
- StrCmp${_WORDFUNC_S} $0 '' WordFunc_WordAdd${_WORDFUNC_S}_error1
- StrCmp${_WORDFUNC_S} $2 '' WordFunc_WordAdd${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $R0 '' 0 +5
- StrCmp${_WORDFUNC_S} $1 '-' WordFunc_WordAdd${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $1 '+' 0 +3
- StrCpy $R0 $2
- goto WordFunc_WordAdd${_WORDFUNC_S}_end
-
- WordFunc_WordAdd${_WORDFUNC_S}_loop:
- IntOp $5 $5 + 1
- !insertmacro WordFind${_WORDFUNC_S}Call 2 $2 $0 E+$5 $3
- IfErrors 0 WordFunc_WordAdd${_WORDFUNC_S}_/word
- StrCmp${_WORDFUNC_S} $3 2 +4
- StrCmp${_WORDFUNC_S} $3$5 11 0 +3
- StrCpy $3 $2
- goto WordFunc_WordAdd${_WORDFUNC_S}_/word
- StrCmp${_WORDFUNC_S} $1 '-' WordFunc_WordAdd${_WORDFUNC_S}_end WordFunc_WordAdd${_WORDFUNC_S}_preend
-
- WordFunc_WordAdd${_WORDFUNC_S}_/word:
- !insertmacro WordFind${_WORDFUNC_S}Call 2 $R0 $0 E/$3 $4
- IfErrors +2
- StrCmp${_WORDFUNC_S} $1 '-' WordFunc_WordAdd${_WORDFUNC_S}_delete WordFunc_WordAdd${_WORDFUNC_S}_loop
- StrCmp${_WORDFUNC_S} $1$4 '-1' +2
- StrCmp${_WORDFUNC_S} $1 '-' WordFunc_WordAdd${_WORDFUNC_S}_loop +4
- StrCmp${_WORDFUNC_S} $R0 $3 0 WordFunc_WordAdd${_WORDFUNC_S}_loop
- StrCpy $R0 ''
- goto WordFunc_WordAdd${_WORDFUNC_S}_end
- StrCmp${_WORDFUNC_S} $1$4 '+1' 0 +2
- StrCmp${_WORDFUNC_S} $R0 $3 WordFunc_WordAdd${_WORDFUNC_S}_loop
- StrCmp${_WORDFUNC_S} $R0 $R1 +3
- StrCpy $R1 '$R1$0$3'
- goto WordFunc_WordAdd${_WORDFUNC_S}_loop
- StrLen $6 $0
- StrCpy $6 $R0 '' -$6
- StrCmp${_WORDFUNC_S} $6 $0 0 -4
- StrCpy $R1 '$R1$3'
- goto WordFunc_WordAdd${_WORDFUNC_S}_loop
-
- WordFunc_WordAdd${_WORDFUNC_S}_delete:
- !insertmacro WordFind${_WORDFUNC_S}Call 2 $R0 $0 E+$4{} $R0
- goto WordFunc_WordAdd${_WORDFUNC_S}_/word
-
- WordFunc_WordAdd${_WORDFUNC_S}_error3:
- StrCpy $R1 3
- goto WordFunc_WordAdd${_WORDFUNC_S}_error
- WordFunc_WordAdd${_WORDFUNC_S}_error1:
- StrCpy $R1 1
- WordFunc_WordAdd${_WORDFUNC_S}_error:
- StrCmp $7 'E' 0 WordFunc_WordAdd${_WORDFUNC_S}_end
- SetErrors
-
- WordFunc_WordAdd${_WORDFUNC_S}_preend:
- StrCpy $R0 $R1
-
- WordFunc_WordAdd${_WORDFUNC_S}_end:
- Pop $R1
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- Exch $R0
- !macroend
-
- !define WordAdd `!insertmacro WordAddCall`
- !define un.WordAdd `!insertmacro WordAddCall`
-
- !macro WordAdd
- !macroend
-
- !macro un.WordAdd
- !macroend
-
- !macro WordAdd_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordAddBody ''
-
- !verbose pop
- !macroend
-
- !define WordAddS `!insertmacro WordAddSCall`
- !define un.WordAddS `!insertmacro WordAddSCall`
-
- !macro WordAddS
- !macroend
-
- !macro un.WordAddS
- !macroend
-
- !macro WordAddS_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordAddBody 'S'
-
- !verbose pop
- !macroend
-
- !macro WordInsertBody _WORDFUNC_S
- Exch $2
- Exch
- Exch $1
- Exch
- Exch 2
- Exch $0
- Exch 2
- Exch 3
- Exch $R0
- Exch 3
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $8
- Push $9
- Push $R1
- ClearErrors
-
- StrCpy $5 ''
- StrCpy $6 $0
- StrCpy $7 }
-
- StrCpy $9 ''
- StrCpy $R1 $R0
- StrCpy $3 $2 1
- StrCpy $2 $2 '' 1
- StrCmp $3 'E' 0 +3
- StrCpy $9 'E'
- goto -4
-
- StrCmp${_WORDFUNC_S} $3 '+' +2
- StrCmp${_WORDFUNC_S} $3 '-' 0 WordFunc_WordInsert${_WORDFUNC_S}_error3
- IntOp $2 $2 + 0
- StrCmp${_WORDFUNC_S} $2 0 WordFunc_WordInsert${_WORDFUNC_S}_error2
- StrCmp${_WORDFUNC_S} $0 '' WordFunc_WordInsert${_WORDFUNC_S}_error1
-
- StrCmp${_WORDFUNC_S} $2 1 0 WordFunc_WordInsert${_WORDFUNC_S}_two
- GetLabelAddress $8 WordFunc_WordInsert${_WORDFUNC_S}_oneback
- StrCmp${_WORDFUNC_S} $3 '+' WordFunc_WordInsert${_WORDFUNC_S}_call
- StrCpy $7 {
- goto WordFunc_WordInsert${_WORDFUNC_S}_call
- WordFunc_WordInsert${_WORDFUNC_S}_oneback:
- IfErrors 0 +2
- StrCpy $4 $R0
- StrCmp${_WORDFUNC_S} $3 '+' 0 +3
- StrCpy $R0 '$1$0$4'
- goto WordFunc_WordInsert${_WORDFUNC_S}_end
- StrCpy $R0 '$4$0$1'
- goto WordFunc_WordInsert${_WORDFUNC_S}_end
-
- WordFunc_WordInsert${_WORDFUNC_S}_two:
- IntOp $2 $2 - 1
- GetLabelAddress $8 WordFunc_WordInsert${_WORDFUNC_S}_twoback
- StrCmp${_WORDFUNC_S} $3 '+' 0 WordFunc_WordInsert${_WORDFUNC_S}_call
- StrCpy $7 {
- goto WordFunc_WordInsert${_WORDFUNC_S}_call
- WordFunc_WordInsert${_WORDFUNC_S}_twoback:
- IfErrors 0 WordFunc_WordInsert${_WORDFUNC_S}_tree
- StrCmp${_WORDFUNC_S} $2$4 11 0 WordFunc_WordInsert${_WORDFUNC_S}_error2
- StrCmp${_WORDFUNC_S} $3 '+' 0 +3
- StrCpy $R0 '$R0$0$1'
- goto WordFunc_WordInsert${_WORDFUNC_S}_end
- StrCpy $R0 '$1$0$R0'
- goto WordFunc_WordInsert${_WORDFUNC_S}_end
-
- WordFunc_WordInsert${_WORDFUNC_S}_tree:
- StrCpy $7 }
- StrCpy $5 $4
- IntOp $2 $2 + 1
- GetLabelAddress $8 WordFunc_WordInsert${_WORDFUNC_S}_treeback
- StrCmp${_WORDFUNC_S} $3 '+' WordFunc_WordInsert${_WORDFUNC_S}_call
- StrCpy $7 {
- goto WordFunc_WordInsert${_WORDFUNC_S}_call
- WordFunc_WordInsert${_WORDFUNC_S}_treeback:
- IfErrors 0 +3
- StrCpy $4 ''
- StrCpy $6 ''
- StrCmp${_WORDFUNC_S} $3 '+' 0 +3
- StrCpy $R0 '$5$0$1$6$4'
- goto WordFunc_WordInsert${_WORDFUNC_S}_end
- StrCpy $R0 '$4$6$1$0$5'
- goto WordFunc_WordInsert${_WORDFUNC_S}_end
-
- WordFunc_WordInsert${_WORDFUNC_S}_call:
- !insertmacro WordFind${_WORDFUNC_S}Call 2 $R0 $0 E$3$2*$7 $4
- goto $8
-
- WordFunc_WordInsert${_WORDFUNC_S}_error3:
- StrCpy $R0 3
- goto WordFunc_WordInsert${_WORDFUNC_S}_error
- WordFunc_WordInsert${_WORDFUNC_S}_error2:
- StrCpy $R0 2
- goto WordFunc_WordInsert${_WORDFUNC_S}_error
- WordFunc_WordInsert${_WORDFUNC_S}_error1:
- StrCpy $R0 1
- WordFunc_WordInsert${_WORDFUNC_S}_error:
- StrCmp $9 'E' +3
- StrCpy $R0 $R1
- goto +2
- SetErrors
-
- WordFunc_WordInsert${_WORDFUNC_S}_end:
- Pop $R1
- Pop $9
- Pop $8
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- Exch $R0
- !macroend
-
- !define WordInsert `!insertmacro WordInsertCall`
- !define un.WordInsert `!insertmacro WordInsertCall`
-
- !macro WordInsert
- !macroend
-
- !macro un.WordInsert
- !macroend
-
- !macro WordInsert_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordInsertBody ''
-
- !verbose pop
- !macroend
-
-
- !define WordInsertS `!insertmacro WordInsertSCall`
- !define un.WordInsertS `!insertmacro WordInsertSCall`
-
- !macro WordInsertS
- !macroend
-
- !macro un.WordInsertS
- !macroend
-
- !macro WordInsertS_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro WordInsertBody 'S'
-
- !verbose pop
- !macroend
-
- !macro StrFilterBody _WORDFUNC_S
- Exch $2
- Exch
- Exch $1
- Exch
- Exch 2
- Exch $0
- Exch 2
- Exch 3
- Exch $R0
- Exch 3
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $R1
- Push $R2
- Push $R3
- Push $R4
- Push $R5
- Push $R6
- Push $R7
- Push $R8
- ClearErrors
-
- StrCpy $R2 $0 '' -3
- StrCmp $R2 "eng" WordFunc_StrFilter${_WORDFUNC_S}_eng
- StrCmp $R2 "rus" WordFunc_StrFilter${_WORDFUNC_S}_rus
- WordFunc_StrFilter${_WORDFUNC_S}_eng:
- StrCpy $4 65
- StrCpy $5 90
- StrCpy $6 97
- StrCpy $7 122
- goto WordFunc_StrFilter${_WORDFUNC_S}_langend
- WordFunc_StrFilter${_WORDFUNC_S}_rus:
- StrCpy $4 192
- StrCpy $5 223
- StrCpy $6 224
- StrCpy $7 255
- goto WordFunc_StrFilter${_WORDFUNC_S}_langend
- ;...
-
- WordFunc_StrFilter${_WORDFUNC_S}_langend:
- StrCpy $R7 ''
- StrCpy $R8 ''
-
- StrCmp${_WORDFUNC_S} $2 '' 0 WordFunc_StrFilter${_WORDFUNC_S}_begin
-
- WordFunc_StrFilter${_WORDFUNC_S}_restart1:
- StrCpy $2 ''
- StrCpy $3 $0 1
- StrCmp${_WORDFUNC_S} $3 '+' +2
- StrCmp${_WORDFUNC_S} $3 '-' 0 +3
- StrCpy $0 $0 '' 1
- goto +2
- StrCpy $3 ''
-
- IntOp $0 $0 + 0
- StrCmp${_WORDFUNC_S} $0 0 +5
- StrCpy $R7 $0 1 0
- StrCpy $R8 $0 1 1
- StrCpy $R2 $0 1 2
- StrCmp${_WORDFUNC_S} $R2 '' WordFunc_StrFilter${_WORDFUNC_S}_filter WordFunc_StrFilter${_WORDFUNC_S}_error
-
- WordFunc_StrFilter${_WORDFUNC_S}_restart2:
- StrCmp${_WORDFUNC_S} $3 '' WordFunc_StrFilter${_WORDFUNC_S}_end
- StrCpy $R7 ''
- StrCpy $R8 '+-'
- goto WordFunc_StrFilter${_WORDFUNC_S}_begin
-
- WordFunc_StrFilter${_WORDFUNC_S}_filter:
- StrCmp${_WORDFUNC_S} $R7 '1' +3
- StrCmp${_WORDFUNC_S} $R7 '2' +2
- StrCmp${_WORDFUNC_S} $R7 '3' 0 WordFunc_StrFilter${_WORDFUNC_S}_error
-
- StrCmp${_WORDFUNC_S} $R8 '' WordFunc_StrFilter${_WORDFUNC_S}_begin
- StrCmp${_WORDFUNC_S} $R7$R8 '23' +2
- StrCmp${_WORDFUNC_S} $R7$R8 '32' 0 +3
- StrCpy $R7 -1
- goto WordFunc_StrFilter${_WORDFUNC_S}_begin
- StrCmp${_WORDFUNC_S} $R7$R8 '13' +2
- StrCmp${_WORDFUNC_S} $R7$R8 '31' 0 +3
- StrCpy $R7 -2
- goto WordFunc_StrFilter${_WORDFUNC_S}_begin
- StrCmp${_WORDFUNC_S} $R7$R8 '12' +2
- StrCmp${_WORDFUNC_S} $R7$R8 '21' 0 WordFunc_StrFilter${_WORDFUNC_S}_error
- StrCpy $R7 -3
-
- WordFunc_StrFilter${_WORDFUNC_S}_begin:
- StrCpy $R6 0
- StrCpy $R1 ''
-
- WordFunc_StrFilter${_WORDFUNC_S}_loop:
- StrCpy $R2 $R0 1 $R6
- StrCmp${_WORDFUNC_S} $R2 '' WordFunc_StrFilter${_WORDFUNC_S}_restartchk
-
- StrCmp${_WORDFUNC_S} $2 '' +7
- StrCpy $R4 0
- StrCpy $R5 $2 1 $R4
- StrCmp${_WORDFUNC_S} $R5 '' WordFunc_StrFilter${_WORDFUNC_S}_addsymbol
- StrCmp${_WORDFUNC_S} $R5 $R2 WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol
- IntOp $R4 $R4 + 1
- goto -4
-
- StrCmp${_WORDFUNC_S} $1 '' +7
- StrCpy $R4 0
- StrCpy $R5 $1 1 $R4
- StrCmp${_WORDFUNC_S} $R5 '' +4
- StrCmp${_WORDFUNC_S} $R5 $R2 WordFunc_StrFilter${_WORDFUNC_S}_addsymbol
- IntOp $R4 $R4 + 1
- goto -4
-
- StrCmp${_WORDFUNC_S} $R7 '1' +2
- StrCmp${_WORDFUNC_S} $R7 '-1' 0 +4
- StrCpy $R4 48
- StrCpy $R5 57
- goto WordFunc_StrFilter${_WORDFUNC_S}_loop2
- StrCmp${_WORDFUNC_S} $R8 '+-' 0 +2
- StrCmp${_WORDFUNC_S} $3 '+' 0 +4
- StrCpy $R4 $4
- StrCpy $R5 $5
- goto WordFunc_StrFilter${_WORDFUNC_S}_loop2
- StrCpy $R4 $6
- StrCpy $R5 $7
-
- WordFunc_StrFilter${_WORDFUNC_S}_loop2:
- IntFmt $R3 '%c' $R4
- StrCmp $R2 $R3 WordFunc_StrFilter${_WORDFUNC_S}_found
- StrCmp $R4 $R5 WordFunc_StrFilter${_WORDFUNC_S}_notfound
- IntOp $R4 $R4 + 1
- goto WordFunc_StrFilter${_WORDFUNC_S}_loop2
-
- WordFunc_StrFilter${_WORDFUNC_S}_found:
- StrCmp${_WORDFUNC_S} $R8 '+-' WordFunc_StrFilter${_WORDFUNC_S}_setcase
- StrCmp${_WORDFUNC_S} $R7 '3' WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol
- StrCmp${_WORDFUNC_S} $R7 '-3' WordFunc_StrFilter${_WORDFUNC_S}_addsymbol
- StrCmp${_WORDFUNC_S} $R8 '' WordFunc_StrFilter${_WORDFUNC_S}_addsymbol WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol
-
- WordFunc_StrFilter${_WORDFUNC_S}_notfound:
- StrCmp${_WORDFUNC_S} $R8 '+-' WordFunc_StrFilter${_WORDFUNC_S}_addsymbol
- StrCmp${_WORDFUNC_S} $R7 '3' 0 +2
- StrCmp${_WORDFUNC_S} $R5 57 WordFunc_StrFilter${_WORDFUNC_S}_addsymbol +3
- StrCmp${_WORDFUNC_S} $R7 '-3' 0 +5
- StrCmp${_WORDFUNC_S} $R5 57 WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol
- StrCpy $R4 48
- StrCpy $R5 57
- goto WordFunc_StrFilter${_WORDFUNC_S}_loop2
- StrCmp${_WORDFUNC_S} $R8 '' WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol WordFunc_StrFilter${_WORDFUNC_S}_addsymbol
-
- WordFunc_StrFilter${_WORDFUNC_S}_setcase:
- StrCpy $R2 $R3
- WordFunc_StrFilter${_WORDFUNC_S}_addsymbol:
- StrCpy $R1 $R1$R2
- WordFunc_StrFilter${_WORDFUNC_S}_skipsymbol:
- IntOp $R6 $R6 + 1
- goto WordFunc_StrFilter${_WORDFUNC_S}_loop
-
- WordFunc_StrFilter${_WORDFUNC_S}_error:
- SetErrors
- StrCpy $R0 ''
- goto WordFunc_StrFilter${_WORDFUNC_S}_end
-
- WordFunc_StrFilter${_WORDFUNC_S}_restartchk:
- StrCpy $R0 $R1
- StrCmp${_WORDFUNC_S} $2 '' 0 WordFunc_StrFilter${_WORDFUNC_S}_restart1
- StrCmp${_WORDFUNC_S} $R8 '+-' 0 WordFunc_StrFilter${_WORDFUNC_S}_restart2
-
- WordFunc_StrFilter${_WORDFUNC_S}_end:
- Pop $R8
- Pop $R7
- Pop $R6
- Pop $R5
- Pop $R4
- Pop $R3
- Pop $R2
- Pop $R1
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- Exch $R0
- !macroend
-
- !define StrFilter `!insertmacro StrFilterCall`
- !define un.StrFilter `!insertmacro StrFilterCall`
-
- !macro StrFilter
- !macroend
-
- !macro un.StrFilter
- !macroend
-
- !macro StrFilter_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro StrFilterBody ''
-
- !verbose pop
- !macroend
-
-
- !define StrFilterS `!insertmacro StrFilterSCall`
- !define un.StrFilterS `!insertmacro StrFilterSCall`
-
- !macro StrFilterS
- !macroend
-
- !macro un.StrFilterS
- !macroend
-
- !macro StrFilterS_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- !insertmacro StrFilterBody 'S'
-
- !verbose pop
- !macroend
-
- !define VersionCompare `!insertmacro VersionCompareCall`
- !define un.VersionCompare `!insertmacro VersionCompareCall`
-
- !macro VersionCompare
- !macroend
-
- !macro un.VersionCompare
- !macroend
-
- !macro VersionCompare_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- Exch $1
- Exch
- Exch $0
- Exch
- Push $2
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
-
- WordFunc_VersionCompare_begin:
- StrCpy $2 -1
- IntOp $2 $2 + 1
- StrCpy $3 $0 1 $2
- StrCmp $3 '' +2
- StrCmp $3 '.' 0 -3
- StrCpy $4 $0 $2
- IntOp $2 $2 + 1
- StrCpy $0 $0 '' $2
-
- StrCpy $2 -1
- IntOp $2 $2 + 1
- StrCpy $3 $1 1 $2
- StrCmp $3 '' +2
- StrCmp $3 '.' 0 -3
- StrCpy $5 $1 $2
- IntOp $2 $2 + 1
- StrCpy $1 $1 '' $2
-
- StrCmp $4$5 '' WordFunc_VersionCompare_equal
-
- StrCpy $6 -1
- IntOp $6 $6 + 1
- StrCpy $3 $4 1 $6
- StrCmp $3 '0' -2
- StrCmp $3 '' 0 +2
- StrCpy $4 0
-
- StrCpy $7 -1
- IntOp $7 $7 + 1
- StrCpy $3 $5 1 $7
- StrCmp $3 '0' -2
- StrCmp $3 '' 0 +2
- StrCpy $5 0
-
- StrCmp $4 0 0 +2
- StrCmp $5 0 WordFunc_VersionCompare_begin WordFunc_VersionCompare_newer2
- StrCmp $5 0 WordFunc_VersionCompare_newer1
- IntCmp $6 $7 0 WordFunc_VersionCompare_newer1 WordFunc_VersionCompare_newer2
-
- StrCpy $4 '1$4'
- StrCpy $5 '1$5'
- IntCmp $4 $5 WordFunc_VersionCompare_begin WordFunc_VersionCompare_newer2 WordFunc_VersionCompare_newer1
-
- WordFunc_VersionCompare_equal:
- StrCpy $0 0
- goto WordFunc_VersionCompare_end
- WordFunc_VersionCompare_newer1:
- StrCpy $0 1
- goto WordFunc_VersionCompare_end
- WordFunc_VersionCompare_newer2:
- StrCpy $0 2
-
- WordFunc_VersionCompare_end:
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Exch $0
-
- !verbose pop
- !macroend
-
- !define VersionConvert `!insertmacro VersionConvertCall`
- !define un.VersionConvert `!insertmacro VersionConvertCall`
-
- !macro VersionConvert
- !macroend
-
- !macro un.VersionConvert
- !macroend
-
- !macro VersionConvert_
- !verbose push
- !verbose ${_WORDFUNC_VERBOSE}
-
- Exch $1
- Exch
- Exch $0
- Exch
- Push $2
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
-
- StrCmp $1 '' 0 +2
- StrCpy $1 'abcdefghijklmnopqrstuvwxyz'
- StrCpy $1 $1 99
-
- StrCpy $2 0
- StrCpy $7 'dot'
- goto WordFunc_VersionConvert_loop
-
- WordFunc_VersionConvert_preloop:
- IntOp $2 $2 + 1
-
- WordFunc_VersionConvert_loop:
- StrCpy $3 $0 1 $2
- StrCmp $3 '' WordFunc_VersionConvert_endcheck
- StrCmp $3 '.' WordFunc_VersionConvert_dot
- StrCmp $3 '0' WordFunc_VersionConvert_digit
- IntCmp $3 '0' WordFunc_VersionConvert_letter WordFunc_VersionConvert_letter WordFunc_VersionConvert_digit
-
- WordFunc_VersionConvert_dot:
- StrCmp $7 'dot' WordFunc_VersionConvert_replacespecial
- StrCpy $7 'dot'
- goto WordFunc_VersionConvert_preloop
-
- WordFunc_VersionConvert_digit:
- StrCmp $7 'letter' WordFunc_VersionConvert_insertdot
- StrCpy $7 'digit'
- goto WordFunc_VersionConvert_preloop
-
- WordFunc_VersionConvert_letter:
- StrCpy $5 0
- StrCpy $4 $1 1 $5
- IntOp $5 $5 + 1
- StrCmp $4 '' WordFunc_VersionConvert_replacespecial
- StrCmp $4 $3 0 -3
- IntCmp $5 9 0 0 +2
- StrCpy $5 '0$5'
-
- StrCmp $7 'letter' +2
- StrCmp $7 'dot' 0 +3
- StrCpy $6 ''
- goto +2
- StrCpy $6 '.'
-
- StrCpy $4 $0 $2
- IntOp $2 $2 + 1
- StrCpy $0 $0 '' $2
- StrCpy $0 '$4$6$5$0'
- StrLen $4 '$6$5'
- IntOp $2 $2 + $4
- IntOp $2 $2 - 1
- StrCpy $7 'letter'
- goto WordFunc_VersionConvert_loop
-
- WordFunc_VersionConvert_replacespecial:
- StrCmp $7 'dot' 0 +3
- StrCpy $6 ''
- goto +2
- StrCpy $6 '.'
-
- StrCpy $4 $0 $2
- IntOp $2 $2 + 1
- StrCpy $0 $0 '' $2
- StrCpy $0 '$4$6$0'
- StrLen $4 $6
- IntOp $2 $2 + $4
- IntOp $2 $2 - 1
- StrCpy $7 'dot'
- goto WordFunc_VersionConvert_loop
-
- WordFunc_VersionConvert_insertdot:
- StrCpy $4 $0 $2
- StrCpy $0 $0 '' $2
- StrCpy $0 '$4.$0'
- StrCpy $7 'dot'
- goto WordFunc_VersionConvert_preloop
-
- WordFunc_VersionConvert_endcheck:
- StrCpy $4 $0 1 -1
- StrCmp $4 '.' 0 WordFunc_VersionConvert_end
- StrCpy $0 $0 -1
- goto -3
-
- WordFunc_VersionConvert_end:
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Exch $0
-
- !verbose pop
- !macroend
-
- !endif
-