VirtualBox

Changeset 85824 in vbox for trunk/tools


Ignore:
Timestamp:
Aug 18, 2020 9:24:38 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
139981
Message:

configure.vbs,helpers.vbs: Added options for appending & prepending extra 'tools' and 'Program Files' directories to search for tools and libs, extending and adjusting checker functions accordingly. Added ArrayFindString[I], ArrayPrepend, ArrayRemove and ArrayToString. Reworte ArrayAppend to work ByRef.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/win/vbscript/helpers.vbs

    r85823 r85824  
    668668end function
    669669
     670'' Wrapper for StrComp as GetRef("StrComp") fails.
     671function WrapStrComp(str1, str2)
     672   WrapStrComp = StrComp(str1, str2)
     673end function
    670674
    671675''
    672676' Returns a reverse sorted array (strings).
    673677function ArraySortStrings(arrStrings)
    674    ArraySortStrings = ArraySortStringsEx(arrStrings, GetRef("StrComp"))
     678   ArraySortStrings = ArraySortStringsEx(arrStrings, GetRef("WrapStrComp"))
    675679end function
    676680
     
    683687
    684688
     689'' Wrapper for StrComp as GetRef("StrComp") fails.
     690function WrapStrCompNeg(str1, str2)
     691   WrapStrCompNeg = -StrComp(str1, str2)
     692end function
     693
    685694''
    686695' Returns a reverse sorted array (strings).
    687696function ArrayRSortStrings(arrStrings)
    688    ArrayRSortStrings = ArrayReverse(ArraySortStringsEx(arrStrings, GetRef("StrComp")))
     697   ArrayRSortStrings = ArraySortStringsEx(arrStrings, GetRef("WrapStrCompNeg"))
    689698end function
    690699
     
    707716
    708717''
     718' Returns an Array() statement string
     719function ArrayToString(arrStrings)
     720   dim strRet
     721   strRet = "Array("
     722   for i = LBound(arrStrings) to UBound(arrStrings)
     723      if i <> LBound(arrStrings) then strRet = strRet & ", "
     724      strRet = strRet & """" & arrStrings(i) & """"
     725   next
     726   ArrayToString = strRet & ")"
     727end function
     728
     729
     730''
    709731' Returns the input array with the string appended.
    710 ' Note! There must be some better way of doing this...
    711 ' @todo Lots of copying here...
    712 function ArrayAppend(arr, str)
    713    dim i, cnt
    714    cnt = UBound(arr) - LBound(arr) + 1
    715    redim arrRet(cnt)
    716    for i = LBound(arr) to UBound(arr)
    717       arrRet(i) = arr(i)
    718    next
    719    arrRet(UBound(arr) + 1) = str
    720    ArrayAppend = arrRet
     732' @note This works by reference
     733function ArrayAppend(ByRef arr, str)
     734   dim i
     735   redim preserve arr(UBound(arr) + 1)
     736   arr(UBound(arr)) = str
     737   ArrayAppend = arr
     738end function
     739
     740
     741''
     742' Returns the input array with the string prepended.
     743' @note This works by reference
     744function ArrayPrepend(ByRef arr, str)
     745   dim i
     746   redim preserve arr(UBound(arr) + 1)
     747   for i = UBound(arr) to (LBound(arr) + 1) step -1
     748      arr(i) = arr(i - 1)
     749   next
     750   arr(LBound(arr)) = str
     751   ArrayPrepend = arr
     752end function
     753
     754
     755''
     756' Returns the input array with the string prepended.
     757' @note This works by reference
     758function ArrayRemove(ByRef arr, idx)
     759   dim i
     760   for i = idx to (UBound(arr) - 1)
     761      arr(i) = arr(i + 1)
     762   next
     763   redim preserve arr(UBound(arr) - 1)
     764   ArrayRemove = arr
    721765end function
    722766
     
    748792   next
    749793end function
     794
     795
     796''
     797' Returns the index of the first occurance of the given string; -1 if not found.
     798function ArrayFindString(ByRef arr, str)
     799   dim i
     800   for i = LBound(arr) to UBound(arr)
     801      if StrComp(arr(i), str, vbBinaryCompare) = 0 then
     802         ArrayFindString = i
     803         exit function
     804      end if
     805   next
     806   ArrayFindString = LBound(arr) - 1
     807end function
     808
     809
     810''
     811' Returns the index of the first occurance of the given string, -1 if not found,
     812' case insensitive edition.
     813function ArrayFindStringI(ByRef arr, str)
     814   dim i
     815   for i = LBound(arr) to UBound(arr)
     816      if StrComp(arr(i), str, vbTextCompare) = 0 then
     817         ArrayFindStringI = i
     818         exit function
     819      end if
     820   next
     821   ArrayFindStringI = LBound(arr) - 1
     822end function
     823
    750824
    751825''
     
    11341208   if StrGetFirstWord("1234 5") <> "1234" then MsgFatal "SelfTest: StrGetFirstWord #5"
    11351209   if StrGetFirstWord("  ") <> "" then MsgFatal "SelfTest: StrGetFirstWord #6"
    1136 end sub
    1137 
     1210
     1211   dim arr
     1212   arr = ArrayAppend(Array("0", "1"), "2")
     1213   if ArraySize(arr) <> 3 then MsgFatal "SelfTest: Array #1: size:" & ArraySize(arr)
     1214   if ArrayToString(arr) <> "Array(""0"", ""1"", ""2"")" then MsgFatal "SelfTest: Array #1: " & ArrayToString(arr)
     1215
     1216   arr = ArrayPrepend(arr, "-1")
     1217   if ArraySize(arr) <> 4 then MsgFatal "SelfTest: Array #2: size:" & ArraySize(arr)
     1218   if ArrayToString(arr) <> "Array(""-1"", ""0"", ""1"", ""2"")" then MsgFatal "SelfTest: Array #2: " & ArrayToString(arr)
     1219
     1220   ArrayPrepend arr, "-2"
     1221   if ArraySize(arr) <> 5 then MsgFatal "SelfTest: Array #3: size:" & ArraySize(arr)
     1222   if ArrayToString(arr) <> "Array(""-2"", ""-1"", ""0"", ""1"", ""2"")" then MsgFatal "SelfTest: Array #3: " & ArrayToString(arr)
     1223
     1224   ArrayRemove arr, 1
     1225   if ArraySize(arr) <> 4 then MsgFatal "SelfTest: Array #4: size:" & ArraySize(arr)
     1226   if ArrayToString(arr) <> "Array(""-2"", ""0"", ""1"", ""2"")" then MsgFatal "SelfTest: Array #4: " & ArrayToString(arr)
     1227
     1228   arr = ArrayRemove(arr, 2)
     1229   if ArraySize(arr) <> 3 then MsgFatal "SelfTest: Array #5: size:" & ArraySize(arr)
     1230   if ArrayToString(arr) <> "Array(""-2"", ""0"", ""2"")" then MsgFatal "SelfTest: Array #5: " & ArrayToString(arr)
     1231
     1232   arr = ArrayPrepend(arr, "42")
     1233   arr = ArrayAppend(arr, "-42")
     1234   if ArraySize(arr) <> 5 then MsgFatal "SelfTest: Array #6: size:" & ArraySize(arr)
     1235   if ArrayToString(arr) <> "Array(""42"", ""-2"", ""0"", ""2"", ""-42"")" then MsgFatal "SelfTest: Array #6: " & ArrayToString(arr)
     1236
     1237   arr = ArraySortStrings(arr)
     1238   if ArraySize(arr) <> 5 then MsgFatal "SelfTest: Array #7: size:" & ArraySize(arr)
     1239   if ArrayToString(arr) <> "Array(""-2"", ""-42"", ""0"", ""2"", ""42"")" then MsgFatal "SelfTest: Array #7: " & ArrayToString(arr)
     1240
     1241   arr = ArrayRSortStrings(arr)
     1242   if ArraySize(arr) <> 5 then MsgFatal "SelfTest: Array #7: size:" & ArraySize(arr)
     1243   if ArrayToString(arr) <> "Array(""42"", ""2"", ""0"", ""-42"", ""-2"")" then MsgFatal "SelfTest: Array #8: " & ArrayToString(arr)
     1244
     1245   arr = ArrayVerSortStrings(Array("v10", "v1", "v0"))
     1246   if ArrayToString(arr) <> "Array(""v0"", ""v1"", ""v10"")" then MsgFatal "SelfTest: Array #9: " & ArrayToString(arr)
     1247
     1248   arr = ArrayRVerSortStrings(arr)
     1249   if ArrayToString(arr) <> "Array(""v10"", ""v1"", ""v0"")" then MsgFatal "SelfTest: Array #10: " & ArrayToString(arr)
     1250
     1251end sub
     1252
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette