; $myArray(N)
;
; Usage: $myArray(N) - returns the value from the Nth array element
; $myArray(0) - returns the total number of elements in myArray
;
; /myArray [-rcsl] [index] [value]
;
; Usage: /myArray N value - sets the Nth array element equal to value
; /myArray -r N - removes the value from the Nth array element
; /myArray -c - clears all the data from myArray
; /myArray -s - saves the current to the data file
; /myArray -l - loads myArray with previously saved data from the data file
;
; -=[ Implemented using a hash table ]=-
;
alias myArray {
if ($isid) {
if ($$1 > 0) $&
return $hget(myArray,$1)
elseif ($1 == 0) $&
return $hget(myArray,0).item
}
elseif (($1 == -r) && ($$2 > 0)) $&
hdel myArray $$2
elseif (($1 == -c) && ($hget(myArray)) $&
hfree myArray
elseif (($1 == -s) && ($hget(myArray)) $&
hsave -o myArray myArray.dat
elseif ($1 == -l) {
if ((!$isfile(myArray.dat)) && ($show)) $&
echo $color(info) -esbflirt * /myArray: no data file previously stored.
else {
if ($hget(myArray)) $&
.hfree myArray
hmake myArray 10
hload myArray myArray.dat
}
}
elseif ($$1 > 0) $&
hadd -m myArray $1 $$2
}
;
; -=[ Implemented using an INI file ]=-
;
alias myArray {
if ($isid) {
if ($$1 > 0) $&
return $readini(arrays.ini, myArray, $+(n,$1))
elseif ($1 == 0) $&
return $ini(arrays.ini, myArray, 0)
}
elseif (($1 == -r) && ($$2 > 0)) $&
remini arrays.ini myArray $+(n,$$2)
elseif ($1 == -c) $&
remini arrays.ini myArray
elseif ($istok(-s:-l,$1,58)) $&
return
elseif ($1 > 0) $&
writeini arrays.ini myArray $+(n,$1) $$2-
}
;
; -=[ Implemented using variables ]=-
;
alias myArray {
if ($isid) {
if ($$1 > 0) $&
return $eval($+(%,myArray.,$$1)
elseif ($1 == 0) $&
return $var(%myArray.*,0)
}
elseif (($1 == -r) && ($$2 > 0)) $&
.unset $+(%,myArray.,$$2)
elseif ($1 == -c) $&
.unset %myArray.*
elseif ($istok(-s:-l,$1,58)) $&
return
elseif ($$1 > 0) $&
set $+(%,myArray.,$1) $$2-
}