35 DEBTRACE(
"notifyObserver " << event <<
object );
40 DEBTRACE(
"notifyObserver2 " << event <<
object );
45 DEBTRACE(
"notifyObserverFromClone " << event << originalInstance );
71 std::cerr <<
"Dispatcher::printObservers " << std::endl;
72 typedef std::map< std::pair<Node*,std::string> , std::set<Observer*> >::iterator it;
73 typedef std::set<Observer*>::iterator jt;
77 std::cerr <<
"Node*: " << (*i).first.first <<
" event: " << (*i).first.second << std::endl;
78 for(jt j=(*i).second.begin();j!=(*i).second.end();j++)
80 std::cerr <<
"observer: " << *j << std::endl;
87 DEBTRACE(
"Dispatcher::dispatch " << event );
88 std::pair<Node*,std::string> key(
object,event);
89 std::map< std::pair<Node*,std::string> , std::set<Observer*> >::const_iterator it(
_observers.find(key));
92 for(std::set<Observer*>::const_iterator iter=(*it).second.begin();iter!=(*it).second.end();iter++)
94 (*iter)->notifyObserver(
object,event);
101 std::pair<Node*,std::string> key(
object,event);
102 std::map< std::pair<Node*,std::string> , std::set<Observer*> >::const_iterator it(
_observers.find(key));
105 for(std::set<Observer*>::const_iterator iter=(*it).second.begin();iter!=(*it).second.end();iter++)
107 (*iter)->notifyObserver2(
object,event,something);
114 std::pair<Node*,std::string> key(originalInstance,event);
115 std::map< std::pair<Node*,std::string> , std::set<Observer*> >::const_iterator it(
_observers.find(key));
118 for(std::set<Observer*>::const_iterator iter=(*it).second.begin();iter!=(*it).second.end();iter++)
120 (*iter)->notifyObserverFromClone(originalInstance,event,clonedInstanceGeneratingEvent);
127 _observers[std::pair<Node*,std::string>(
object,event)].insert(observer);
133 _observers[std::pair<Node*,std::string>(
object,event)].erase(observer);
Base class for dispatcher in observer pattern.
virtual void dispatchFromClone(Node *originalInstance, const std::string &event, Node *clonedInstanceGeneratingEvent)
virtual void printObservers()
virtual void addObserver(Observer *observer, Node *object, const std::string &event)
static Dispatcher * _singleton
virtual void dispatch(Node *object, const std::string &event)
std::map< std::pair< Node *, std::string >, std::set< Observer * > > _observers
virtual void removeObserver(Observer *observer, Node *object, const std::string &event)
static Dispatcher * getDispatcher()
virtual void dispatch2(Node *object, const std::string &event, void *something)
static void setDispatcher(Dispatcher *dispatcher)
Base class for all nodes.
Base class for observer in observer pattern.
virtual void notifyObserverFromClone(Node *originalInstance, const std::string &event, Node *clonedInstanceGeneratingEvent)
virtual void notifyObserver(Node *object, const std::string &event)
virtual void notifyObserver2(Node *object, const std::string &event, void *something)