tools/installer/nsis/includes/list.nsh
changeset 0 1918ee327afb
child 4 3b1da2848fc7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/installer/nsis/includes/list.nsh	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,136 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+;; All rights reserved.
+;; Contact: Nokia Corporation (qt-info@nokia.com)
+;;
+;; This file is part of the tools applications of the Qt Toolkit.
+;;
+;; $QT_BEGIN_LICENSE:LGPL$
+;; No Commercial Usage
+;; This file contains pre-release code and may not be distributed.
+;; You may use this file in accordance with the terms and conditions
+;; contained in the Technology Preview License Agreement accompanying
+;; this package.
+;;
+;; GNU Lesser General Public License Usage
+;; Alternatively, this file may be used under the terms of the GNU Lesser
+;; General Public License version 2.1 as published by the Free Software
+;; Foundation and appearing in the file LICENSE.LGPL included in the
+;; packaging of this file.  Please review the following information to
+;; ensure the GNU Lesser General Public License version 2.1 requirements
+;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+;;
+;; In addition, as a special exception, Nokia gives you certain additional
+;; rights.  These rights are described in the Nokia Qt LGPL Exception
+;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+;;
+;; If you have questions regarding the use of this file, please contact
+;; Nokia at qt-info@nokia.com.
+;;
+;;
+;;
+;;
+;;
+;;
+;;
+;;
+;; $QT_END_LICENSE$
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+!ifndef LIST_INCLUDE
+!define LIST_INCLUDE
+
+; usage:
+; push item
+; push list
+; call ItemInList
+; returns 1 or 0
+!macro ItemInList UN
+Function ${UN}ItemInList
+  exch $0 ;list
+  exch
+  exch $1 ;item
+  push $2 ;counter
+  push $3 ;substr
+  push $4 ;char
+  
+  strcpy $3 ""
+  strcpy $2 "0"
+
+  loop:
+    strcpy $4 $0 1 $2
+    strcmp "$4" "" atend
+    intop $2 $2 + 1
+
+    strcmp "$4" "|" 0 +4
+      strcmp "$3" "$1" found
+      strcpy $3 "" ;reset substr
+      goto +2
+    strcpy $3 "$3$4" ;append char to substr
+    goto loop
+
+  found:
+    strcpy $0 "1"
+    goto done
+    
+  atend:
+    strcmp "$3" "$1" found
+    strcpy $0 "0"
+
+  done:
+  pop $4
+  pop $3
+  pop $2
+  pop $1
+  exch $0
+FunctionEnd
+!macroend
+
+!insertmacro ItemInList ""
+!insertmacro ItemInList "un."
+
+Function GetItemInList
+  exch $0 ;list
+  exch
+  exch $1 ;index
+  push $2 ;counter
+  push $3 ;substr
+  push $4 ;char
+  push $5 ;current index
+
+  strcpy $3 ""
+  strcpy $2 "0"
+  strcpy $5 "1"
+
+  loop:
+    strcpy $4 $0 1 $2
+    strcmp "$4" "" atend
+    intop $2 $2 + 1
+
+    strcmp "$4" "|" 0 +5
+      strcmp "$5" "$1" found
+      strcpy $3 "" ;reset substr
+      intop $5 $5 + 1
+      goto +2
+    strcpy $3 "$3$4" ;append char to substr
+    goto loop
+
+  found:
+    strcpy $0 "$3"
+    goto done
+
+  atend:
+    strcmp "$5" "$1" found
+    strcpy $0 ""
+
+  done:
+  pop $5
+  pop $4
+  pop $3
+  pop $2
+  pop $1
+  exch $0
+FunctionEnd
+
+!endif ;LIST_INCLUDE