//*************************************************************************************
//*
//* Table by Almia
//*
//* Vanilla JASS Implementation of Bribe's Table
//*
//* Most people will hate me, but this needs to be done.
//*
//*************************************************************************************
//*
//* API
//*
//* function InitTable takes nothing returns boolean
//* - Initialize System, optional
//* function CreateTable takes nothing returns integer
//* - Creates table instance
//* function IsTable takes integer i returns boolean
//* - Checks if instance is a table
//* function FlushTable takes integer t returns nothing
//* - Flushes table memory
//* function DestroyTable takes integer t returns nothing
//* - Destroys table
//*
//* SAVE API
//*
//* function TableSaveInteger takes integer t, integer key, integer val returns nothing
//* function TableSaveReal takes integer t, integer key, real val returns nothing
//* function TableSaveBoolean takes integer t, integer key, boolean val returns nothing
//* function TableSaveStr takes integer t, integer key, string val returns nothing
//*
//* function TableSavePlayer takes integer t, integer key, player val returns nothing
//* function TableSaveWidget takes integer t, integer key, widget val returns nothing
//* function TableSaveDestructable takes integer t, integer key, destructable val returns nothing
//* function TableSaveItem takes integer t, integer key, item val returns nothing
//* function TableSaveUnit takes integer t, integer key, unit val returns nothing
//* function TableSaveAbility takes integer t, integer key, ability val returns nothing
//* function TableSaveTimer takes integer t, integer key, timer val returns nothing
//* function TableSaveTrigger takes integer t, integer key, trigger val returns nothing
//* function TableSaveTriggerCondition takes integer t, integer key, triggercondition val returns nothing
//* function TableSaveTriggerAction takes integer t, integer key, triggeraction val returns nothing
//* function TableSaveTriggerEvent takes integer t, integer key, event val returns nothing
//* function TableSaveForce takes integer t, integer key, force val returns nothing
//* function TableSaveGroup takes integer t, integer key, group val returns nothing
//* function TableSaveLocation takes integer t, integer key, location val returns nothing
//* function TableSaveRect takes integer t, integer key, rect val returns nothing
//* function TableSaveBooleanExpr takes integer t, integer key, boolexpr val returns nothing
//* function TableSaveSound takes integer t, integer key, sound val returns nothing
//* function TableSaveEffect takes integer t, integer key, effect val returns nothing
//* function TableSaveUnitPool takes integer t, integer key, unitpool val returns nothing
//* function TableSaveItemPool takes integer t, integer key, itempool val returns nothing
//* function TableSaveQuest takes integer t, integer key, quest val returns nothing
//* function TableSaveQuestItem takes integer t, integer key, questitem val returns nothing
//* function TableSaveDefeatCondition takes integer t, integer key, defeatcondition val returns nothing
//* function TableSaveTimerDialog takes integer t, integer key, timerdialog val returns nothing
//* function TableSaveLeaderboard takes integer t, integer key, leaderboard val returns nothing
//* function TableSaveMultiboard takes integer t, integer key, multiboard val returns nothing
//* function TableSaveMultiboardItem takes integer t, integer key, multiboarditem val returns nothing
//* function TableSaveTrackable takes integer t, integer key, trackable val returns nothing
//* function TableSaveDialog takes integer t, integer key, dialog val returns nothing
//* function TableSaveButton takes integer t, integer key, button val returns nothing
//* function TableSaveTextTag takes integer t, integer key, texttag val returns nothing
//* function TableSaveLightning takes integer t, integer key, lightning val returns nothing
//* function TableSaveImage takes integer t, integer key, image val returns nothing
//* function TableSaveUbersplat takes integer t, integer key, ubersplat val returns nothing
//* function TableSaveRegion takes integer t, integer key, region val returns nothing
//* function TableSaveFogState takes integer t, integer key, fogstate val returns nothing
//* function TableSaveFogModifier takes integer t, integer key, fogmodifier val returns nothing
//* function TableSaveAgent takes integer t, integer key, agent val returns nothing
//* function TableSaveHashtable takes integer t, integer key, hashtable val returns nothing
//*
//* LOAD API
//*
//* function TableLoadInteger takes integer t, integer key returns integer
//* function TableLoadReal takes integer t, integer key returns real
//* function TableLoadBoolean takes integer t, integer key returns boolean
//* function TableLoadStr takes integer t, integer key returns string
//*
//* function TableLoadPlayer takes integer t, integer key returns player
//* function TableLoadWidget takes integer t, integer key returns widget
//* function TableLoadDestructable takes integer t, integer key returns destructable
//* function TableLoadItem takes integer t, integer key returns item
//* function TableLoadUnit takes integer t, integer key returns unit
//* function TableLoadAbility takes integer t, integer key returns ability
//* function TableLoadTimer takes integer t, integer key returns timer
//* function TableLoadTrigger takes integer t, integer key returns trigger
//* function TableLoadTriggerCondition takes integer t, integer key returns triggercondition
//* function TableLoadTriggerAction takes integer t, integer key returns triggeraction
//* function TableLoadTriggerEvent takes integer t, integer key returns event
//* function TableLoadForce takes integer t, integer key returns force
//* function TableLoadGroup takes integer t, integer key returns group
//* function TableLoadLocation takes integer t, integer key returns location
//* function TableLoadRect takes integer t, integer key returns rect
//* function TableLoadBooleanExpr takes integer t, integer key returns boolexpr
//* function TableLoadSound takes integer t, integer key returns sound
//* function TableLoadEffect takes integer t, integer key returns effect
//* function TableLoadUnitPool takes integer t, integer key returns unitpool
//* function TableLoadItemPool takes integer t, integer key returns itempool
//* function TableLoadQuest takes integer t, integer key returns quest
//* function TableLoadQuestItem takes integer t, integer key returns questitem
//* function TableLoadDefeatCondition takes integer t, integer key returns defeatcondition
//* function TableLoadTimerDialog takes integer t, integer key returns timerdialog
//* function TableLoadLeaderboard takes integer t, integer key returns leaderboard
//* function TableLoadMultiboard takes integer t, integer key returns multiboard
//* function TableLoadMultiboardItem takes integer t, integer key returns multiboarditem
//* function TableLoadTrackable takes integer t, integer key returns trackable
//* function TableLoadDialog takes integer t, integer key returns dialog
//* function TableLoadButton takes integer t, integer key returns button
//* function TableLoadTextTag takes integer t, integer key returns texttag
//* function TableLoadLightning takes integer t, integer key returns lightning
//* function TableLoadImage takes integer t, integer key returns image
//* function TableLoadUbersplat takes integer t, integer key returns ubersplat
//* function TableLoadRegion takes integer t, integer key returns region
//* function TableLoadFogState takes integer t, integer key returns fogstate
//* function TableLoadFogModifier takes integer t, integer key returns fogmodifier
//* function TableLoadHashtable takes integer t, integer key returns hashtable
//*
//* HAS API
//*
//* function TableHasInteger takes integer t, integer key returns boolean
//* function TableHasReal takes integer t, integer key returns boolean
//* function TableHasBoolean takes integer t, integer key returns boolean
//* function TableHasString takes integer t, integer key returns boolean
//* function TableHasHandle takes integer t, integer key returns boolean
//*
//* REMOVE API
//*
//* function TableRemoveInteger takes integer t, integer key returns nothing
//* function TableRemoveReal takes integer t, integer key returns nothing
//* function TableRemoveBoolean takes integer t, integer key returns nothing
//* function TableRemoveString takes integer t, integer key returns nothing
//* function TableRemoveHandle takes integer t, integer key returns nothing
//*
//*************************************************************************************
//*
//* Credits
//*
//* Bribe - Table
//* Ruke
//* Nestharus
//*
//*************************************************************************************
function InitTable takes nothing returns boolean
if udg_Table == null then
set udg_Table = InitHashtable()
set udg_Table_R[0] = 1
return true
endif
return false
endfunction
function FlushTable takes integer t returns nothing
call FlushChildHashtable(udg_Table, t)
endfunction
function CreateTable takes nothing returns integer
local integer i = udg_Table_R[0]
if InitTable() then
set i = 1
endif
if udg_Table_R[i] == 0 then
set udg_Table_R[0] = i + 1
else
set udg_Table_R[0] = udg_Table_R[i]
call FlushTable(i)
endif
set udg_IsTable[i] = true
return i
endfunction
function IsTable takes integer i returns boolean
return udg_IsTable[i]
endfunction
function DestroyTable takes integer t returns nothing
call FlushTable(t)
set udg_Table_R[t] = udg_Table_R[0]
set udg_Table_R[0] = t
set udg_IsTable[t] = false
endfunction
//*************************************************************************************
//*
//* Save and Load Handles
//*
//*************************************************************************************
function TableSavePlayer takes integer t, integer key, player val returns nothing
if IsTable(t) then
call SavePlayerHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadPlayer takes integer t, integer key returns player
return LoadPlayerHandle(udg_Table, t, key)
endfunction
function TableSaveWidget takes integer t, integer key, widget val returns nothing
if IsTable(t) then
call SaveWidgetHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadWidget takes integer t, integer key returns widget
return LoadWidgetHandle(udg_Table, t, key)
endfunction
function TableSaveDestructable takes integer t, integer key, destructable val returns nothing
if IsTable(t) then
call SaveDestructableHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadDestructable takes integer t, integer key returns destructable
return LoadDestructableHandle(udg_Table, t, key)
endfunction
function TableSaveItem takes integer t, integer key, item val returns nothing
if IsTable(t) then
call SaveItemHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadItem takes integer t, integer key returns item
return LoadItemHandle(udg_Table, t, key)
endfunction
function TableSaveUnit takes integer t, integer key, unit val returns nothing
if IsTable(t) then
call SaveUnitHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadUnit takes integer t, integer key returns unit
return LoadUnitHandle(udg_Table, t, key)
endfunction
function TableSaveAbility takes integer t, integer key, ability val returns nothing
if IsTable(t) then
call SaveAbilityHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadAbility takes integer t, integer key returns ability
return LoadAbilityHandle(udg_Table, t, key)
endfunction
function TableSaveTimer takes integer t, integer key, timer val returns nothing
if IsTable(t) then
call SaveTimerHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadTimer takes integer t, integer key returns timer
return LoadTimerHandle(udg_Table, t, key)
endfunction
function TableSaveTrigger takes integer t, integer key, trigger val returns nothing
if IsTable(t) then
call SaveTriggerHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadTrigger takes integer t, integer key returns trigger
return LoadTriggerHandle(udg_Table, t, key)
endfunction
function TableSaveTriggerCondition takes integer t, integer key, triggercondition val returns nothing
if IsTable(t) then
call SaveTriggerConditionHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadTriggerCondition takes integer t, integer key returns triggercondition
return LoadTriggerConditionHandle(udg_Table, t, key)
endfunction
function TableSaveTriggerAction takes integer t, integer key, triggeraction val returns nothing
if IsTable(t) then
call SaveTriggerActionHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadTriggerAction takes integer t, integer key returns triggeraction
return LoadTriggerActionHandle(udg_Table, t, key)
endfunction
function TableSaveTriggerEvent takes integer t, integer key, event val returns nothing
if IsTable(t) then
call SaveTriggerEventHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadTriggerEvent takes integer t, integer key returns event
return LoadTriggerEventHandle(udg_Table, t, key)
endfunction
function TableSaveForce takes integer t, integer key, force val returns nothing
if IsTable(t) then
call SaveForceHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadForce takes integer t, integer key returns force
return LoadForceHandle(udg_Table, t, key)
endfunction
function TableSaveGroup takes integer t, integer key, group val returns nothing
if IsTable(t) then
call SaveGroupHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadGroup takes integer t, integer key returns group
return LoadGroupHandle(udg_Table, t, key)
endfunction
function TableSaveLocation takes integer t, integer key, location val returns nothing
if IsTable(t) then
call SaveLocationHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadLocation takes integer t, integer key returns location
return LoadLocationHandle(udg_Table, t, key)
endfunction
function TableSaveRect takes integer t, integer key, rect val returns nothing
if IsTable(t) then
call SaveRectHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadRect takes integer t, integer key returns rect
return LoadRectHandle(udg_Table, t, key)
endfunction
function TableSaveBooleanExpr takes integer t, integer key, boolexpr val returns nothing
if IsTable(t) then
call SaveBooleanExprHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadBooleanExpr takes integer t, integer key returns boolexpr
return LoadBooleanExprHandle(udg_Table, t, key)
endfunction
function TableSaveSound takes integer t, integer key, sound val returns nothing
if IsTable(t) then
call SaveSoundHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadSound takes integer t, integer key returns sound
return LoadSoundHandle(udg_Table, t, key)
endfunction
function TableSaveEffect takes integer t, integer key, effect val returns nothing
if IsTable(t) then
call SaveEffectHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadEffect takes integer t, integer key returns effect
return LoadEffectHandle(udg_Table, t, key)
endfunction
function TableSaveUnitPool takes integer t, integer key, unitpool val returns nothing
if IsTable(t) then
call SaveUnitPoolHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadUnitPool takes integer t, integer key returns unitpool
return LoadUnitPoolHandle(udg_Table, t, key)
endfunction
function TableSaveItemPool takes integer t, integer key, itempool val returns nothing
if IsTable(t) then
call SaveItemPoolHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadItemPool takes integer t, integer key returns itempool
return LoadItemPoolHandle(udg_Table, t, key)
endfunction
function TableSaveQuest takes integer t, integer key, quest val returns nothing
if IsTable(t) then
call SaveQuestHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadQuest takes integer t, integer key returns quest
return LoadQuestHandle(udg_Table, t, key)
endfunction
function TableSaveQuestItem takes integer t, integer key, questitem val returns nothing
if IsTable(t) then
call SaveQuestItemHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadQuestItem takes integer t, integer key returns questitem
return LoadQuestItemHandle(udg_Table, t, key)
endfunction
function TableSaveDefeatCondition takes integer t, integer key, defeatcondition val returns nothing
if IsTable(t) then
call SaveDefeatConditionHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadDefeatCondition takes integer t, integer key returns defeatcondition
return LoadDefeatConditionHandle(udg_Table, t, key)
endfunction
function TableSaveTimerDialog takes integer t, integer key, timerdialog val returns nothing
if IsTable(t) then
call SaveTimerDialogHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadTimerDialog takes integer t, integer key returns timerdialog
return LoadTimerDialogHandle(udg_Table, t, key)
endfunction
function TableSaveLeaderboard takes integer t, integer key, leaderboard val returns nothing
if IsTable(t) then
call SaveLeaderboardHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadLeaderboard takes integer t, integer key returns leaderboard
return LoadLeaderboardHandle(udg_Table, t, key)
endfunction
function TableSaveMultiboard takes integer t, integer key, multiboard val returns nothing
if IsTable(t) then
call SaveMultiboardHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadMultiboard takes integer t, integer key returns multiboard
return LoadMultiboardHandle(udg_Table, t, key)
endfunction
function TableSaveMultiboardItem takes integer t, integer key, multiboarditem val returns nothing
if IsTable(t) then
call SaveMultiboardItemHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadMultiboardItem takes integer t, integer key returns multiboarditem
return LoadMultiboardItemHandle(udg_Table, t, key)
endfunction
function TableSaveTrackable takes integer t, integer key, trackable val returns nothing
if IsTable(t) then
call SaveTrackableHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadTrackable takes integer t, integer key returns trackable
return LoadTrackableHandle(udg_Table, t, key)
endfunction
function TableSaveDialog takes integer t, integer key, dialog val returns nothing
if IsTable(t) then
call SaveDialogHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadDialog takes integer t, integer key returns dialog
return LoadDialogHandle(udg_Table, t, key)
endfunction
function TableSaveButton takes integer t, integer key, button val returns nothing
if IsTable(t) then
call SaveButtonHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadButton takes integer t, integer key returns button
return LoadButtonHandle(udg_Table, t, key)
endfunction
function TableSaveTextTag takes integer t, integer key, texttag val returns nothing
if IsTable(t) then
call SaveTextTagHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadTextTag takes integer t, integer key returns texttag
return LoadTextTagHandle(udg_Table, t, key)
endfunction
function TableSaveLightning takes integer t, integer key, lightning val returns nothing
if IsTable(t) then
call SaveLightningHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadLightning takes integer t, integer key returns lightning
return LoadLightningHandle(udg_Table, t, key)
endfunction
function TableSaveImage takes integer t, integer key, image val returns nothing
if IsTable(t) then
call SaveImageHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadImage takes integer t, integer key returns image
return LoadImageHandle(udg_Table, t, key)
endfunction
function TableSaveUbersplat takes integer t, integer key, ubersplat val returns nothing
if IsTable(t) then
call SaveUbersplatHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadUbersplat takes integer t, integer key returns ubersplat
return LoadUbersplatHandle(udg_Table, t, key)
endfunction
function TableSaveRegion takes integer t, integer key, region val returns nothing
if IsTable(t) then
call SaveRegionHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadRegion takes integer t, integer key returns region
return LoadRegionHandle(udg_Table, t, key)
endfunction
function TableSaveFogState takes integer t, integer key, fogstate val returns nothing
if IsTable(t) then
call SaveFogStateHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadFogState takes integer t, integer key returns fogstate
return LoadFogStateHandle(udg_Table, t, key)
endfunction
function TableSaveFogModifier takes integer t, integer key, fogmodifier val returns nothing
if IsTable(t) then
call SaveFogModifierHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadFogModifier takes integer t, integer key returns fogmodifier
return LoadFogModifierHandle(udg_Table, t, key)
endfunction
function TableSaveHashtable takes integer t, integer key, hashtable val returns nothing
if IsTable(t) then
call SaveHashtableHandle(udg_Table, t, key, val)
endif
endfunction
function TableLoadHashtable takes integer t, integer key returns hashtable
return LoadHashtableHandle(udg_Table, t, key)
endfunction
//*************************************************************************************
//*
//* Save Load Integer, Real, Boolean, String
//*
//*************************************************************************************
function TableSaveInteger takes integer t, integer key, integer val returns nothing
if IsTable(t) then
call SaveInteger(udg_Table, t, key, val)
endif
endfunction
function TableLoadInteger takes integer t, integer key returns integer
return LoadInteger(udg_Table, t, key)
endfunction
function TableSaveReal takes integer t, integer key, real val returns nothing
if IsTable(t) then
call SaveReal(udg_Table, t, key, val)
endif
endfunction
function TableLoadReal takes integer t, integer key returns real
return LoadReal(udg_Table, t, key)
endfunction
function TableSaveBoolean takes integer t, integer key, boolean val returns nothing
if IsTable(t) then
call SaveBoolean(udg_Table, t, key, val)
endif
endfunction
function TableLoadBoolean takes integer t, integer key returns boolean
return LoadBoolean(udg_Table, t, key)
endfunction
function TableSaveStr takes integer t, integer key, string val returns nothing
if IsTable(t) then
call SaveStr(udg_Table, t, key, val)
endif
endfunction
function TableLoadStr takes integer t, integer key returns string
return LoadStr(udg_Table, t, key)
endfunction
//*************************************************************************************
//*
//* Save Agent
//*
//*************************************************************************************
function TableSaveAgent takes integer t, integer key, agent val returns nothing
if IsTable(t) then
call SaveAgentHandle(udg_Table, t, key, val)
endif
endfunction
//*************************************************************************************
//*
//* Has / Remove Functionality
//*
//*************************************************************************************
function TableHasInteger takes integer t, integer key returns boolean
return HaveSavedInteger(udg_Table, t, key)
endfunction
function TableRemoveInteger takes integer t, integer key returns nothing
call RemoveSavedInteger(udg_Table, t, key)
endfunction
function TableHasReal takes integer t, integer key returns boolean
return HaveSavedReal(udg_Table, t, key)
endfunction
function TableRemoveReal takes integer t, integer key returns nothing
call RemoveSavedReal(udg_Table, t, key)
endfunction
function TableHasBoolean takes integer t, integer key returns boolean
return HaveSavedBoolean(udg_Table, t, key)
endfunction
function TableRemoveBoolean takes integer t, integer key returns nothing
call RemoveSavedBoolean(udg_Table, t, key)
endfunction
function TableHasString takes integer t, integer key returns boolean
return HaveSavedString(udg_Table, t, key)
endfunction
function TableRemoveString takes integer t, integer key returns nothing
call RemoveSavedString(udg_Table, t, key)
endfunction
function TableHasHandle takes integer t, integer key returns boolean
return HaveSavedHandle(udg_Table, t, key)
endfunction
function TableRemoveHandle takes integer t, integer key returns nothing
call RemoveSavedHandle(udg_Table, t, key)
endfunction