/* Do not remove the headers from this file! see /USAGE for more info. */
private nosave mapping observers = ([]);
private nosave int next_handle = 0;
int add_observer(function f)
{
int handle = next_handle++;
observers[handle] = f;
return handle;
}
int remove_observer(int handle)
{
// Probably should check:
// member_array(handle, keys(observers))!=-1
map_delete(observers, handle);
}
protected int notify_observers(mixed args...)
{
foreach(object observer in values(observers))
evaluate(observer, args...);
}