1 #include "AtomicChangeListener.hxx"
7 #include <boost/bind.hpp>
9 #include <simgear/structure/Singleton.hxx>
15 MultiChangeListener::MultiChangeListener()
19 void MultiChangeListener::valueChanged()
21 valueChangedImplementation();
24 void MultiChangeListener::valueChangedImplementation()
28 AtomicChangeListener::AtomicChangeListener(std::vector<SGPropertyNode*>& nodes)
29 : _dirty(false), _valid(true)
31 listenToProperties(nodes.begin(), nodes.end());
34 void AtomicChangeListener::unregister_property(SGPropertyNode* node)
37 // not necessary, but good hygine
38 vector<SGPropertyNode*>::iterator itr
39 = find(_watched.begin(), _watched.end(), node);
40 if (itr != _watched.end())
42 MultiChangeListener::unregister_property(node);
45 void AtomicChangeListener::fireChangeListeners()
47 vector<SGSharedPtr<AtomicChangeListener> >& listeners
48 = ListenerListSingleton::instance()->listeners;
49 for (vector<SGSharedPtr<AtomicChangeListener> >::iterator itr = listeners.begin(),
50 end = listeners.end();
53 (*itr)->valuesChanged();
54 (*itr)->_dirty = false;
59 void AtomicChangeListener::valueChangedImplementation()
64 ListenerListSingleton::instance()->listeners.push_back(this);
68 void AtomicChangeListener::valuesChanged()