Update to 2.0.0 tree from current Fremantle build
[opencv] / apps / vmdemotk / iniparse.tcl
diff --git a/apps/vmdemotk/iniparse.tcl b/apps/vmdemotk/iniparse.tcl
deleted file mode 100644 (file)
index cd9b420..0000000
+++ /dev/null
@@ -1,542 +0,0 @@
-# this line is needed for our install script, to keep up with different versions\r
-# ini_version=1.4\r
-#\r
-##########\r
-#\r
-# INIParse v1.4 (C)2000\r
-#\r
-#   see AUTHORS\r
-#\r
-##########\r
-#\r
-# Usage:\r
-#   iniparse:openfile <filename> ?RDONLY?\r
-#   \r
-# Reads an ini file into memory, for later access (such as read or write),\r
-# and return an id which can be later used for writing/reading data, and\r
-# flushing/closing file.\r
-#\r
-# Notes:\r
-# - It doesn't leave the file open, just reads into memory, and returns an id.\r
-# - If RDONLY is specified (case-sensetive), then calls to writeini will work\r
-#   only in memory, and changes won't be saved with iniparse:flush, nor\r
-#   iniparse:closefile.\r
-#\r
-####\r
-#\r
-# Usage:\r
-#   iniparse:flushfile <fileId>\r
-#   \r
-# Writes an ini file in memory into its file, without removing data from\r
-# memory.\r
-#\r
-####\r
-#\r
-# Usage:\r
-#   iniparse:closefile <fileId>\r
-#   \r
-# Flushes an ini file in memory into its file, and then removes data from\r
-# memory.\r
-#\r
-####\r
-#\r
-# Usage:\r
-#   readini <fileId> [ [<keyname>] [<itemname>] ]\r
-#       Reads <itemname> under <keyname> from <fileId>. If it cannot find\r
-#       file, <itemname>, or <keyname>, returns an empty string.\r
-#       If itemname is absent, returns list of all items under keyname.\r
-#\r
-# Notes:\r
-# - This procedure doesn't read directly from the file, but from the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: writeini iniparse:openfile\r
-#\r
-####\r
-#\r
-# Usage:\r
-#   writeini <fileId> <keyname> <itemname> <itemvalue>\r
-#      Writes/modifies <itemname> under <keyname> in <fileId>. If cannot\r
-#      find <itemname>, or <keyname>, creates a new one.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-####\r
-#\r
-# Usage:\r
-#   iniparse:removeitem <fileId> <keyname> <itemname>\r
-#      Removes <itemname> under <keyname> in <fileId>.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-####\r
-#\r
-# Usage:\r
-#   iniparse:removekey <fileId> <keyname>\r
-#      Removes <keyname> in <fileId>.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-####\r
-#\r
-# Usage:\r
-#   iniparse:renameitem <fileId> <keyname> <itemName> <newItemName>\r
-#      Renames <itemName> under <keyname> in <fileId> to <newItemName>.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-####\r
-#\r
-# Usage:\r
-#   iniparse:renamekey <fileId> <keyname> <newKeyName>\r
-#      Renames <keyname> in <fileId> to <newKeyName>.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-#############################################################################\r
-\r
-package provide iniparse 1.4\r
-\r
-set iniparse(freeid) 0\r
-set iniparse(idlist) {}\r
-#$iniparse($id,fname)   - filename\r
-#$iniparse($id,data)    - each line in file are read into an item in this list\r
-#$iniparse($id,flags)   - this is a list containing these flags:\r
-#                           RDONLY  : If this flag is set, iniparse:flush will\r
-#                                     not write anything over file, but still\r
-#                                     writeini will work (only in memory)\r
-#\r
-\r
-proc rtrimleft {bigstr srcstr} {\r
-  set istring1 [string length $srcstr]\r
-  if {$srcstr == [string range $bigstr 0 [expr $istring1-1]]} {\r
-    return [string range $bigstr $istring1 end]\r
-  }\r
-}\r
-\r
-proc chrchk {arg} {\r
-  if {[string index $arg 0] == "\[" && [string index $arg end] == "\]"} {\r
-    return 1\r
-  } else {return 0}\r
-  return 0\r
-}\r
-\r
-#\r
-# Usage:\r
-#   iniparse:openfile <filename> ?RDONLY?\r
-#   \r
-# Reads an ini file into memory, for later access (such as read or write),\r
-# and return an id which can be later used for writing/reading data, and\r
-# flushing/closing file.\r
-#\r
-# Notes:\r
-# - It doesn't leave the file open, just reads into memory, and returns an id.\r
-# - If RDONLY is specified (case-sensetive), then calls to writeini will work\r
-#   only in memory, and changes won't be saved with iniparse:flush, nor\r
-#   iniparse:closefile.\r
-#\r
-proc iniparse:openfile {file args} {\r
-global iniparse\r
-\r
-  set fileId [open $file {RDONLY CREAT}]\r
-  set filedata {}\r
-\r
-  while {![eof $fileId]} {\r
-    set input [gets $fileId]\r
-    if {[string match {\[*\]} $input]} {lappend filedata "" $input} \\r
-    elseif {[string match {*=*} $input] || \\r
-       [string match {#*} $input]} {lappend filedata $input}\r
-  }\r
-\r
-  close $fileId\r
-\r
-  set id $iniparse(freeid)\r
-  incr iniparse(freeid)\r
-\r
-  set iniparse($id,fname) $file\r
-  set iniparse($id,data)  $filedata\r
-  set iniparse($id,flags) $args\r
-  lappend iniparse(idlist) $id\r
-\r
-  return $id\r
-}\r
-\r
-#\r
-# Usage:\r
-#   iniparse:flushfile <fileId>\r
-#   \r
-# Writes an ini file in memory into its file, without removing data from\r
-# memory.\r
-#\r
-proc iniparse:flushfile {id} {\r
-global iniparse\r
-\r
-  if {[lsearch $iniparse(idlist) $id] == -1} return     ;# No such Id\r
-\r
-  if {[lsearch $iniparse($id,flags) RDONLY] != -1} return ;# ReadOnly-Flag\r
-\r
-  set fileId [open $iniparse($id,fname) {WRONLY CREAT TRUNC}]\r
-\r
-  foreach line $iniparse($id,data) {\r
-    if {[string match {\[*\]} $line]} {puts $fileId "\n$line"} \\r
-    elseif {[string match {*=*} $line] || \\r
-       [string match {#*} $line]} {puts $fileId $line}\r
-  }\r
-  close $fileId\r
-\r
-  set iniparse($id,flags) [lreplace $iniparse($id,flags) [set idx [lsearch $iniparse($id,flags) CHANGED]] $idx]\r
-}\r
-\r
-#\r
-# Usage:\r
-#   iniparse:closefile <fileId>\r
-#   \r
-# Flushes an ini file in memory into its file, and then removes data from\r
-# memory.\r
-#\r
-proc iniparse:closefile {id} {\r
-global iniparse\r
-\r
-  if {[lsearch $iniparse(idlist) $id] == -1} return     ;# No such Id\r
-\r
-  iniparse:flushfile $id\r
-  unset iniparse($id,fname)\r
-  unset iniparse($id,data)\r
-  unset iniparse($id,flags)\r
-  set iniparse(idlist) [lreplace $iniparse(idlist) [set idx [lsearch $iniparse(idlist) $id]] $idx]\r
-}\r
-\r
-#\r
-# Usage:\r
-#   readini <fileId> [ [<keyname>] [<itemname>] ]\r
-#       Reads <itemname> under <keyname> from <fileId>. If it cannot find\r
-#       file, <itemname>, or <keyname>, returns an empty string.\r
-#       If itemname is absent, returns list of all items under keyname.\r
-#\r
-# Notes:\r
-# - This procedure doesn't read directly from the file, but from the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: writeini iniparse:openfile\r
-#\r
-proc readini {id args} {\r
-global iniparse\r
-  set keyfound 0 ; set itemfound 0\r
-  set key [lindex $args 0]\r
-  set item [lindex $args 1]\r
-  set itemlength [string length $item]\r
-  set item "$item="\r
-  set kaccum [list]\r
-  set iaccum [list]\r
-\r
-  if {[lsearch $iniparse(idlist) $id] == -1} {return ""}   ;# No such Id\r
-\r
-  set input ""\r
-  set lidx 0                              ;# line index\r
-  set llen [llength $iniparse($id,data)]\r
-  set data $iniparse($id,data)            ;# for fast access\r
-\r
-  while {$lidx < $llen} {\r
-    set input [lindex $data $lidx]\r
-    if {[chrchk $input]} {\r
-      if {$input == "\[$key\]"} {\r
-        # looks like we found our key..\r
-        set keyfound 1 ; break\r
-      } else {\r
-        set keyfound 0\r
-        regsub -all {\[|\]} $input {} baccum\r
-        lappend kaccum $baccum\r
-      }\r
-    }\r
-    incr lidx\r
-  }\r
-  incr lidx\r
-\r
-  if {$keyfound == 1} {\r
-    while {$lidx < $llen} {\r
-      set input [lindex $data $lidx]\r
-      if {![chrchk $input]} {\r
-        if {[string range $input 0 $itemlength]==$item} {\r
-          set fValue [rtrimleft $input $item]\r
-          set itemfound 1\r
-          break\r
-        } else {\r
-          set itemNdx [string first "=" $input]\r
-          if {$itemNdx != -1} {\r
-            lappend iaccum [string range $input 0 [expr $itemNdx - 1]]\r
-          }\r
-        }\r
-      } elseif {[chrchk $input]} {\r
-        # oops, we hit the next key.. looks like that item isnt here.\r
-        break\r
-      }\r
-      incr lidx\r
-    }\r
-  } elseif {$keyfound == 0} {\r
-    if {[llength $args] == 0} {\r
-       return $kaccum\r
-    } else {\r
-       return ""       ;# no key exists called $key\r
-    }\r
-  }\r
-  if {$itemfound == 1} {\r
-    return $fValue\r
-  } elseif {[llength $args] != 2} {\r
-    return $iaccum\r
-  } else {\r
-    return ""       ;# no item exists called "[string range $item 0 [expr [string length $item] - 2]]"\r
-  }\r
-}\r
-\r
-#\r
-# Usage:\r
-#   writeini <fileId> <keyname> <itemname> <itemvalue>\r
-#      Writes/modifies <itemname> under <keyname> in <fileId>. If cannot\r
-#      find <itemname>, or <keyname>, creates a new one.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-proc writeini {id key item value} {\r
-global iniparse\r
-  set fileline ""\r
-  set keyfound 0\r
-  set itemfound 0\r
-  set itemlength [string length $item]\r
-  set item "$item="\r
-\r
-  if {[lsearch $iniparse(idlist) $id] == -1} return   ;# No such Id\r
-\r
-  set input ""\r
-  set lidx 0                              ;# line index\r
-  set llen [llength $iniparse($id,data)]\r
-  set fileline $iniparse($id,data)\r
-  set data ""\r
-\r
-  foreach line $fileline {\r
-    if {(!$keyfound)} {          ;# We will search for the key.\r
-       if {$line=="\[$key\]"} {\r
-               lappend data "" $line\r
-               set keyfound 1\r
-               continue\r
-       }\r
-    }\r
-    if {($keyfound) && (!$itemfound) && [chrchk $line]} {  ;# We hit the next key!\r
-       lappend data "$item$value"\r
-       lappend data "" $line\r
-       set itemfound 1\r
-       continue\r
-    }\r
-    if {($keyfound) && (!$itemfound)} {  ;# We will search for the item\r
-       if {[string range $line 0 $itemlength]==$item} {\r
-               lappend data "$item$value"\r
-               set itemfound 1\r
-               continue\r
-       }\r
-    }\r
-    # Because it doesn't match anything above, we print the line to file\r
-    if {[chrchk $line]} {lappend data "" $line} \\r
-       else {lappend data $line}\r
-  }\r
-\r
-  if {(!$keyfound) && (!$itemfound)} {\r
-       lappend data "" "\[$key\]"\r
-       lappend data "$item$value"\r
-  } elseif {$keyfound && (!$itemfound)} {\r
-       lappend data "$item$value"\r
-  }\r
-\r
-  set iniparse($id,data) $data\r
-}\r
-\r
-#\r
-# Usage:\r
-#   iniparse:removeitem <fileId> <keyname> <itemname>\r
-#      Removes <itemname> under <keyname> in <fileId>.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-proc iniparse:removeitem {id key item} {\r
-global iniparse\r
-  set fileline ""\r
-  set keyfound 0\r
-  set itemfound 0\r
-  set itemlength [string length $item]\r
-  set item "$item="\r
-\r
-  if {[lsearch $iniparse(idlist) $id] == -1} return   ;# No such Id\r
-\r
-  set fileline $iniparse($id,data)\r
-  set data {}\r
-\r
-  foreach line $fileline {\r
-    if {(!$keyfound)} {          ;# We will search for the key.\r
-       if {$line=="\[$key\]"} {\r
-               lappend data "" $line\r
-               set keyfound 1\r
-               continue\r
-       } else {lappend data $line; continue}\r
-    }\r
-    if {($keyfound) && (!$itemfound) && [chrchk $line]} {  ;# We hit the next key!\r
-       lappend data "" $line\r
-       set itemfound 1\r
-       continue\r
-    }\r
-    if {($keyfound) && (!$itemfound)} {  ;# We will search for the item\r
-       if {[string range $line 0 $itemlength]==$item} {\r
-               set itemfound 1\r
-               continue        ;# We don't print the line to file\r
-       } else {lappend data $line; continue}\r
-    }\r
-    # Because it doesn't match anything above, we print the line to file\r
-    if {[chrchk $line]} {lappend data "" $line} \\r
-       else {lappend data $line}\r
-  }\r
-\r
-  set iniparse($id,data) $data\r
-}\r
-\r
-#\r
-# Usage:\r
-#   iniparse:removekey <fileId> <keyname>\r
-#      Removes <keyname> in <fileId>.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-proc iniparse:removekey {id key} {\r
-global iniparse\r
-  set fileline ""\r
-  set keyfound 0\r
-  set keyfinished 0\r
-\r
-  if {[lsearch $iniparse(idlist) $id] == -1} return   ;# No such Id\r
-\r
-  set fileline $iniparse($id,data)\r
-  set data {}\r
-\r
-  foreach line $fileline {\r
-    if {(!$keyfound)} {          ;# We will search for the key.\r
-       if {$line=="\[$key\]"} {\r
-               set keyfound 1\r
-               continue\r
-       }\r
-    }\r
-    if {($keyfound) && (!$keyfinished) && (![chrchk $line])} {  ;# We are waiting for the next key\r
-       continue\r
-    }\r
-    if {($keyfound) && (!$keyfinished) && ([chrchk $line])} {  ;# We are hit the next key!\r
-       lappend data "" $line\r
-       set keyfinished 1\r
-       continue\r
-    }\r
-    # Because it doesn't match anything above, we print the line to file\r
-    if {[chrchk $line]} {lappend data "" $line} \\r
-       else {lappend data $line}\r
-  }\r
-\r
-  set iniparse($id,data) $data\r
-}\r
-\r
-#\r
-# Usage:\r
-#   iniparse:renameitem <fileId> <keyname> <itemName> <newItemName>\r
-#      Renames <itemName> under <keyname> in <fileId> to <newItemName>.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-proc iniparse:renameitem {id key olditem newitem} {\r
-  writeini $id $key $newitem [readini $id $key $olditem]\r
-  iniparse:removeitem $id $key $olditem\r
-}\r
-\r
-#\r
-# Usage:\r
-#   iniparse:renamekey <fileId> <keyname> <newKeyName>\r
-#      Renames <keyname> in <fileId> to <newKeyName>.\r
-#\r
-# Notes:\r
-# - This procedure doesn't write directly to the file, but to the\r
-#   memory-version of the file. If directly the file (not memory version) is\r
-#   modified after the call to iniparse:openfile, this procedure will not\r
-#   see the changes in the file, but only changes in memory-version.\r
-#\r
-# See: readini iniparse:openfile\r
-#\r
-proc iniparse:renamekey {id oldkey newkey} {\r
-global iniparse\r
-\r
-  if {[lsearch $iniparse(idlist) $id] == -1} return   ;# No such Id\r
-\r
-  set fileline $iniparse($id,data)\r
-  set data {}\r
-\r
-  foreach line $fileline {\r
-       if {$line=="\[$oldkey\]"} {\r
-               lappend data "" "\[$newkey\]"\r
-               continue\r
-       } else {\r
-               if {[chrchk $line]} {lappend data "" $line} \\r
-               else {lappend data $line}\r
-       }\r
-  }\r
-\r
-  set iniparse($id,data) $data\r
-}\r
-\r