44 lines
1.6 KiB
Lua
Executable File
44 lines
1.6 KiB
Lua
Executable File
--------------------------------------------------------------------------------
|
|
---------------------- ## ##### ##### ###### -----------------------
|
|
---------------------- ## ## ## ## ## ## ## -----------------------
|
|
---------------------- ## ## ## ## ## ###### -----------------------
|
|
---------------------- ## ## ## ## ## ## -----------------------
|
|
---------------------- ###### ##### ##### ## -----------------------
|
|
---------------------- -----------------------
|
|
----------------------- Lua Object-Oriented Programming ------------------------
|
|
--------------------------------------------------------------------------------
|
|
-- Project: LOOP Class Library --
|
|
-- Release: 2.3 beta --
|
|
-- Title : Class that Implement Group Invocation --
|
|
-- Author : Renato Maia <maia@inf.puc-rio.br> --
|
|
--------------------------------------------------------------------------------
|
|
|
|
local pairs = pairs
|
|
|
|
local oo = require "loop.base"
|
|
local ObjectCache = require "loop.collection.ObjectCache"
|
|
|
|
module("loop.object.Publisher", oo.class)
|
|
|
|
__index = ObjectCache{
|
|
retrieve = function(_, method)
|
|
return function(self, ...)
|
|
for _, object in pairs(self) do
|
|
object[method](object, ...)
|
|
end
|
|
end
|
|
end
|
|
}
|
|
|
|
function __newindex(self, key, value)
|
|
for _, object in pairs(self) do
|
|
object[key] = value
|
|
end
|
|
end
|
|
|
|
function __call(self, ...)
|
|
for _, object in pairs(self) do
|
|
object(...)
|
|
end
|
|
end
|