mirror of
https://github.com/mehah/otclient
synced 2026-08-15 16:29:06 -04:00
29 lines
539 B
Lua
29 lines
539 B
Lua
ObjectPool = {}
|
|
ObjectPool.__index = ObjectPool
|
|
|
|
function ObjectPool.new(createFunc, resetFunc)
|
|
return setmetatable({
|
|
create = createFunc,
|
|
reset = resetFunc,
|
|
pool = {}
|
|
}, ObjectPool)
|
|
end
|
|
|
|
function ObjectPool:get()
|
|
local obj = table.remove(self.pool)
|
|
if not obj then
|
|
obj = self.create()
|
|
end
|
|
return obj
|
|
end
|
|
|
|
function ObjectPool:release(obj)
|
|
if self.reset then
|
|
self.reset(obj)
|
|
end
|
|
table.insert(self.pool, obj)
|
|
end
|
|
|
|
function ObjectPool:clear()
|
|
self.pool = {}
|
|
end
|