mirror of https://github.com/CGAL/cgal
52 lines
1.7 KiB
Plaintext
52 lines
1.7 KiB
Plaintext
; StrReplace
|
|
; Replaces all ocurrences of a given needle within a haystack with another string
|
|
; Written by dandaman32
|
|
|
|
Var STR_REPLACE_VAR_0
|
|
Var STR_REPLACE_VAR_1
|
|
Var STR_REPLACE_VAR_2
|
|
Var STR_REPLACE_VAR_3
|
|
Var STR_REPLACE_VAR_4
|
|
Var STR_REPLACE_VAR_5
|
|
Var STR_REPLACE_VAR_6
|
|
Var STR_REPLACE_VAR_7
|
|
Var STR_REPLACE_VAR_8
|
|
|
|
Function StrReplace
|
|
Exch $STR_REPLACE_VAR_2
|
|
Exch 1
|
|
Exch $STR_REPLACE_VAR_1
|
|
Exch 2
|
|
Exch $STR_REPLACE_VAR_0
|
|
StrCpy $STR_REPLACE_VAR_3 -1
|
|
StrLen $STR_REPLACE_VAR_4 $STR_REPLACE_VAR_1
|
|
StrLen $STR_REPLACE_VAR_6 $STR_REPLACE_VAR_0
|
|
loop:
|
|
IntOp $STR_REPLACE_VAR_3 $STR_REPLACE_VAR_3 + 1
|
|
StrCpy $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_4 $STR_REPLACE_VAR_3
|
|
StrCmp $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_1 found
|
|
StrCmp $STR_REPLACE_VAR_3 $STR_REPLACE_VAR_6 done
|
|
Goto loop
|
|
found:
|
|
StrCpy $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_3
|
|
IntOp $STR_REPLACE_VAR_8 $STR_REPLACE_VAR_3 + $STR_REPLACE_VAR_4
|
|
StrCpy $STR_REPLACE_VAR_7 $STR_REPLACE_VAR_0 "" $STR_REPLACE_VAR_8
|
|
StrCpy $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_5$STR_REPLACE_VAR_2$STR_REPLACE_VAR_7
|
|
StrLen $STR_REPLACE_VAR_6 $STR_REPLACE_VAR_0
|
|
Goto loop
|
|
done:
|
|
Pop $STR_REPLACE_VAR_1 ; Prevent "invalid opcode" errors and keep the
|
|
Pop $STR_REPLACE_VAR_1 ; stack as it was before the function was called
|
|
Exch $STR_REPLACE_VAR_0
|
|
FunctionEnd
|
|
|
|
!macro _strReplaceConstructor OUT NEEDLE NEEDLE2 HAYSTACK
|
|
Push "${HAYSTACK}"
|
|
Push "${NEEDLE}"
|
|
Push "${NEEDLE2}"
|
|
Call StrReplace
|
|
Pop "${OUT}"
|
|
!macroend
|
|
|
|
!define StrReplace '!insertmacro "_strReplaceConstructor"'
|