globals
hashtable Table1 = InitHashTable()
hashtable Table2 = InitHashTable()
integer freeIndex = 0
endglobals
function NewIndex takes nothing returns integer
set freeIndex = freeIndex + 1
return freeIndex
endfunction
function SetInteger takes integer a, integer b, integer c, integer value returns nothing
local integer index
if HaveSavedInteger(Table1, a, b) then
set index = LoadInteger(Table1, a, b)
else
set index = NewIndex()
call SaveInteger(Table1, a, b, index)
endif
call SaveInteger(Table2, index, c, value)
endfunction
// This GetInteger function assumes a value is already stored
// Add error checking if you want
function GetInteger takes integer a, integer b, integer c returns integer
local integer index = LoadInteger(Table1, a, b)
return LoadInteger(Table2, index, c)
endfunction