--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Include/NSISArray.nsh Tue Oct 16 00:07:41 2007 -0400
@@ -0,0 +1,694 @@
+#####################################################
+# NSISArray.nsh by Afrow UK
+# Array script header for NSISArray plugin by Afrow UK
+# For usage, see Docs\NSISArray\Readme.html
+#
+# Script header v1.3 (RC3)
+# Only for use with the same plugin version.
+#
+# Last modified: 28th April 2005
+#
+#
+
+!ifndef NSISArray
+!define NSISArray
+
+!macro Array Name Size StrLen
+
+ !ifndef Array_ScriptHeaderInited
+
+ !ifdef ArrayCallInstDLL
+ !define ArrayPluginDLL `${ArrayCallInstDLL}`
+ !else ifndef ArrayPluginDLL
+ !define ArrayPluginDLL `NSISArray`
+ !endif
+
+ !ifndef ArrayValVar
+ Var ArrayVal
+ !define ArrayValVar $ArrayVal
+ !endif
+
+ !ifndef ArrayErrVar
+ Var ArrayErr
+ !define ArrayErrVar $ArrayErr
+ !endif
+
+ !define Array_ScriptHeaderInited
+ !endif
+
+ !ifndef `Array_${Name}_Declared`
+
+ !ifdef Array_Obj
+ !undef Array_Obj
+ !endif
+ !define Array_Obj `->`
+
+ !ifdef ArrayObj
+ !undef ArrayObj
+ !endif
+ !define ArrayObj `!insertmacro ArrayObj`
+
+ !ifdef Array_Name
+ !undef Array_Name
+ !endif
+ !define Array_Name "${Name}"
+
+ !ifdef Array_Size
+ !undef Array_Size
+ !endif
+ !define Array_Size "${Size}"
+
+ !ifdef Array_StrLen
+ !undef Array_StrLen
+ !endif
+ !define Array_StrLen "${StrLen}"
+
+ !define `Array_${Name}_Declared`
+ !else
+ !error "NSISArray: You cannot declare more than one array with the same name."
+ !endif
+!macroend
+!define Array `!insertmacro Array`
+
+!macro ArrayObj Obj
+ !ifdef Array_Obj
+ !undef Array_Obj
+ !endif
+ !define Array_Obj `${Obj}`
+!macroend
+
+!macro Array_ObjErr Null
+ !error "NSISArray: You can only set the array object style once."
+!macroend
+
+!macro ArrayFunc Func
+
+ !define `Func_${Func}`
+ !ifdef Func_Inited \
+ | Func_Print \
+ | Func_Write \
+ | Func_WriteList \
+ | Func_WriteListC \
+ | Func_Put \
+ | Func_Read \
+ | Func_ReadToStack \
+ | Func_Cut \
+ | Func_Push \
+ | Func_Pop \
+ | Func_Shift \
+ | Func_Unshift \
+ | Func_Reverse \
+ | Func_Sort \
+ | Func_Clear \
+ | Func_Splice \
+ | Func_Swap \
+ | Func_Copy \
+ | Func_Join \
+ | Func_Concat \
+ | Func_Exists \
+ | Func_ExistsI \
+ | Func_Search \
+ | Func_SearchI \
+ | Func_SizeOf \
+ | Func_ReadFirst \
+ | Func_ReadNext \
+ | Func_ReadClose \
+ | Func_Debug \
+ | Func_SetSize \
+ | Func_ReDim \
+ | Func_FreeUnusedMem
+
+ !ifndef Array_Name
+ !error "NSISArray: Please declare an array before declaring functions."
+ !else
+
+ !ifndef `Array_FuncDefined_${Array_Name}${Func}`
+ !define `Array_FuncDefined_${Array_Name}${Func}`
+ !else
+ !error "NSISArray: You cannot declare a function more than once."
+ !endif
+
+ !ifdef ArrayObj
+ !undef ArrayObj
+ !endif
+ !define ArrayObj `!insertmacro Array_ObjErr`
+
+ !ifndef "${Array_Name}${Array_Obj}Init"
+ !define "${Array_Name}${Array_Obj}Init" `!insertmacro Array_Init "${Array_Name}" "${Array_Size}" "${Array_StrLen}"`
+ !endif
+ !ifndef "${Array_Name}${Array_Obj}Delete"
+ !define "${Array_Name}${Array_Obj}Delete" `!insertmacro Array_Delete "${Array_Name}"`
+ !endif
+
+ !ifdef ArrayCallInstDLL
+ !ifdef Func_WriteList
+ !define "${Array_Name}${Array_Obj}WriteListBegin" `!insertmacro Array_WriteListBegin `
+ !define "${Array_Name}${Array_Obj}WriteListItem" `!insertmacro Array_WriteListItem`
+ !define "${Array_Name}${Array_Obj}WriteListEnd" `!insertmacro Array_WriteListEnd "${Array_Name}"`
+ !else \
+ ifdef Func_Splice
+ !define "${Array_Name}${Array_Obj}SpliceBegin" `!insertmacro Array_SpliceBegin `
+ !define "${Array_Name}${Array_Obj}SpliceItem" `!insertmacro Array_SpliceItem`
+ !define "${Array_Name}${Array_Obj}SpliceEnd" `!insertmacro Array_SpliceEnd "${Array_Name}"`
+ !else
+ !define "${Array_Name}${Array_Obj}${Func}" `!insertmacro Array_${Func} "${Array_Name}"`
+ !endif
+ !else
+ !define "${Array_Name}${Array_Obj}${Func}" `!insertmacro Array_${Func} "${Array_Name}"`
+ !endif
+
+ !endif
+
+ !else \
+ ifdef Func_Init \
+ | Func_Delete
+ !error "NSISArray: You do not need to declare the Init and Delete functions."
+ !else
+ !error "NSISArray: An invalid function Name has been declared."
+ !endif
+ !undef `Func_${Func}`
+
+!macroend
+!define ArrayFunc `!insertmacro ArrayFunc`
+
+!macro Array_ErrorStyle ErrorStyle
+ !define `ErrorStyle_${ErrorStyle}`
+ !ifdef ErrorStyle_logwin
+ !define ErrorStyleNum 5
+ !else ifdef ErrorStyle_msgbox
+ !define ErrorStyleNum 3
+ !else
+ !define ErrorStyleNum 1
+ !endif
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::ErrorStyle /NOUNLOAD "${ErrorStyleNum}"
+ !else
+ Push "${ErrorStyleNum}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD ErrorStyle
+ !endif
+ !undef ErrorStyleNum
+ !undef `ErrorStyle_${ErrorStyle}`
+!macroend
+!define ArrayErrorStyle `!insertmacro Array_ErrorStyle`
+
+!macro Array_PopErrVar
+ Pop "${ArrayErrVar}"
+ !ifdef ArraySetErrors
+ StrCmp "${ArrayErrVar}" 0 +2
+ SetErrors
+ !endif
+!macroend
+!define Array_PopErrVar `!insertmacro Array_PopErrVar`
+
+!macro Array_Init Name Size StrLen
+ !ifndef `Array_${Name}_Inited`
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::ErrorStyle /NOUNLOAD ""
+ Pop "${ArrayErrVar}"
+ StrCmp "${ArrayErrVar}" 3 +3
+ StrCmp "${ArrayErrVar}" 5 +2
+ ${ArrayPluginDLL}::ErrorStyle /NOUNLOAD "1"
+ !else
+ Push ""
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD ErrorStyle
+ Pop "${ArrayErrVar}"
+ StrCmp "${ArrayErrVar}" 3 +4
+ StrCmp "${ArrayErrVar}" 5 +3
+ Push "1"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD ErrorStyle
+ !endif
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::New /NOUNLOAD "${Name}" "${Size}" "${StrLen}"
+ !else
+ Push "${StrLen}"
+ Push "${Size}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD New
+ !endif
+ ${Array_PopErrVar}
+ !define `Array_${Name}_Inited`
+ !else
+ !error "NSISArray: An array can only be initialised once."
+ !endif
+!macroend
+
+!macro Array_Delete Name
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Delete /NOUNLOAD "${Name}"
+ ${Array_PopErrVar}
+ ${ArrayPluginDLL}::ArrayCount /NOUNLOAD
+ Pop "${ArrayValVar}"
+ StrCmp "${ArrayValVar}" 0 0 +2
+ ${ArrayPluginDLL}::Unload
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Delete
+ ${Array_PopErrVar}
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD ArrayCount
+ Pop "${ArrayValVar}"
+ StrCmp "${ArrayValVar}" 0 0 +2
+ CallInstDLL `${ArrayPluginDLL}` Unload
+ !endif
+!macroend
+
+!macro Array_ReDim Name Size StrLen
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::ReDim /NOUNLOAD "${Name}" "${Size}" "${StrLen}"
+ !else
+ Push "${StrLen}"
+ Push "${Size}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD ReDim
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_FreeUnusedMem Name
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::FreeUnusedMem /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD FreeUnusedMem
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Inited Name JumpInited JumpNotInited
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::ArrayExists /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD ArrayExists
+ !endif
+ ${Array_PopErrVar}
+ Pop "${ArrayValVar}"
+ StrCmp "${ArrayValVar}" 1 "${JumpInited}" "${JumpNotInited}"
+!macroend
+
+!macro Array_Write Name Index Value
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Write /NOUNLOAD "${Name}" "${Index}" "${Value}"
+ !else
+ Push "${Value}"
+ Push "${Index}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Write
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!ifndef ArrayCallInstDLL
+!macro Array_WriteList Name List
+ ${ArrayPluginDLL}::WriteList /NOUNLOAD "${Name}" ${List} "/END"
+ ${Array_PopErrVar}
+!macroend
+!else
+!macro Array_WriteListBegin
+ Push "/END"
+!macroend
+!macro Array_WriteListItem Item
+ Push `${Item}`
+!macroend
+!macro Array_WriteListEnd Name
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD WriteList
+ ${Array_PopErrVar}
+!macroend
+!endif
+
+!macro Array_WriteListC Name List Char
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::WriteListC /NOUNLOAD "${Name}" "${List}" "${Char}"
+ !else
+ Push "${Char}"
+ Push "${List}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD WriteListC
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Put Name Index Value
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Put /NOUNLOAD "${Name}" "${Index}" "${Value}"
+ !else
+ Push "${Value}"
+ Push "${Index}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Put
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Read Name Var Index
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Read /NOUNLOAD "${Name}" "${Index}"
+ !else
+ Push "${Index}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Read
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+!macroend
+
+!macro Array_ReadToStack Name IndexA IndexB
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::ReadToStack /NOUNLOAD "${Name}" "${IndexA}" "${IndexB}"
+ !else
+ Push "${IndexB}"
+ Push "${IndexA}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD ReadToStack
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Cut Name Var Index
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Cut /NOUNLOAD "${Name}" "${Index}"
+ !else
+ Push "${Index}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Cut
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+!macroend
+
+!macro Array_Push Name Value
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Push /NOUNLOAD "${Name}" "${Value}"
+ !else
+ Push "${Value}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Push
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Pop Name Var
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Pop /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Pop
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+!macroend
+
+!macro Array_Shift Name Value
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Shift /NOUNLOAD "${Name}" "${Value}"
+ !else
+ Push "${Value}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Shift
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Unshift Name Var
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Unshift /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Unshift
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+!macroend
+
+!macro Array_Reverse Name
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Reverse /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Reverse
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Sort NameA NameB
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Sort /NOUNLOAD "${NameA}" "${NameB}"
+ !else
+ Push "${NameB}"
+ Push "${NameA}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Sort
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Clear Name
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Clear /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Clear
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!ifndef ArrayCallInstDLL
+!macro Array_Splice Name IndexA IndexB List
+ ${ArrayPluginDLL}::Splice /NOUNLOAD "${Name}" "${IndexA}" "${IndexB}" ${List} "/END"
+ ${Array_PopErrVar}
+!macroend
+!else
+!macro Array_SpliceBegin IndexA IndexB
+ !define Array_Splice_IndexA `${IndexA}`
+ !define Array_Splice_IndexB `${IndexB}`
+ Push "/END"
+!macroend
+!macro Array_SpliceItem Item
+ Push `${Item}`
+!macroend
+!macro Array_SpliceEnd Name
+ Push "${Array_Splice_IndexB}"
+ Push "${Array_Splice_IndexA}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Splice
+ ${Array_PopErrVar}
+ !undef Array_Splice_IndexB
+ !undef Array_Splice_IndexA
+!macroend
+!endif
+
+!macro Array_Swap Name IndexA IndexB
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Swap /NOUNLOAD "${Name}" "${IndexA}" "${IndexB}"
+ !else
+ Push "${IndexB}"
+ Push "${IndexA}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Swap
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Copy Name ToArray
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Copy /NOUNLOAD "${Name}" "${ToArray}"
+ !else
+ Push "${ToArray}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Copy
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Join Name ToArray
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Join /NOUNLOAD "${Name}" "${ToArray}"
+ !else
+ Push "${ToArray}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Join
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_Concat Name Var Chars
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Concat /NOUNLOAD "${Name}" "${Chars}"
+ !else
+ Push "${Chars}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Concat
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+!macroend
+
+!macro Array_Exists Name Var Value Index
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Exists /NOUNLOAD "${Name}" "${Value}" "${Index}"
+ !else
+ Push "${Index}"
+ Push "${Value}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Exists
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+!macroend
+
+!macro Array_ExistsI Name Var Value Index
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::ExistsI /NOUNLOAD "${Name}" "${Value}" "${Index}"
+ !else
+ Push "${Index}"
+ Push "${Value}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD ExistsI
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+!macroend
+
+!macro Array_Search Name Var Value Index
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Search /NOUNLOAD "${Name}" "${Value}" "${Index}"
+ !else
+ Push "${Index}"
+ Push "${Value}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Search
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+!macroend
+
+!macro Array_SearchI Name Var Value Index
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::SearchI /NOUNLOAD "${Name}" "${Value}" "${Index}"
+ !else
+ Push "${Index}"
+ Push "${Value}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD SearchI
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+!macroend
+
+!macro Array_SizeOf Name VarItems VarSize VarStrLen
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::SizeOf /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD SizeOf
+ !endif
+ ${Array_PopErrVar}
+ Pop "${VarStrLen}"
+ Pop "${VarSize}"
+ Pop "${VarItems}"
+!macroend
+
+!macro Array_Debug Name
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Debug /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Debug
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_SetSize Name Size
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::SetSize /NOUNLOAD "${Name}" "${Size}"
+ !else
+ Push "${Size}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD SetSize
+ !endif
+ ${Array_PopErrVar}
+!macroend
+
+!macro Array_ReadFirst Name Handle Var
+ !tempfile F
+ !delfile ${F}
+ !define Local ${__LINE__}-${F}
+ !undef F
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::SizeOf /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD SizeOf
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+ Pop "${Var}"
+ Pop "${Var}"
+ StrCmp "${Var}" 0 0 +4
+ StrCpy "${Var}" ""
+ SetErrors
+ Goto Done_${Local}
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Read /NOUNLOAD "${Name}" "0"
+ !else
+ Push "0"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Read
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+ StrCpy "${Handle}" 1
+ Done_${Local}:
+ !undef Local
+!macroend
+
+!macro Array_ReadNext Name Handle Var
+ !tempfile F
+ !delfile ${F}
+ !define Local ${__LINE__}-${F}
+ !undef F
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::SizeOf /NOUNLOAD "${Name}"
+ !else
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD SizeOf
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+ Pop "${Var}"
+ Pop "${Var}"
+ StrCmp "${Var}" "${Handle}" 0 +4
+ StrCpy "${Var}" ""
+ SetErrors
+ Goto Done_${Local}
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Read /NOUNLOAD "${Name}" "${Handle}"
+ !else
+ Push "${Handle}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Read
+ !endif
+ ${Array_PopErrVar}
+ Pop "${Var}"
+ IntOp "${Handle}" "${Handle}" + 1
+ Done_${Local}:
+ !undef Local
+!macroend
+
+!macro Array_ReadClose Name Handle
+ StrCpy "${Handle}" ""
+!macroend
+
+!macro Array_Print Name Index
+ !ifndef ArrayCallInstDLL
+ ${ArrayPluginDLL}::Read /NOUNLOAD "${Name}" "${Index}"
+ !else
+ Push "${Index}"
+ Push "${Name}"
+ CallInstDLL `${ArrayPluginDLL}` /NOUNLOAD Read
+ !endif
+ ${Array_PopErrVar}
+ Pop "${ArrayValVar}"
+ DetailPrint "${ArrayValVar}"
+!macroend
+
+!endif
\ No newline at end of file