diff --git a/signal.cpp b/signal.cpp index aa752fad..9c7e4a19 100644 --- a/signal.cpp +++ b/signal.cpp @@ -21,4 +21,4 @@ #include "signal.hpp" // Instance something probably useful here so that we generate early compile/link errors. -template class signal ; +template class util::signal ; diff --git a/signal.hpp b/signal.hpp index 9c143fce..fa18c551 100644 --- a/signal.hpp +++ b/signal.hpp @@ -24,53 +24,54 @@ #include #include +namespace util { + template + class signal { + public: + typedef Ret (*callback_function)(Args...); + typedef std::function callback_object; -template -class signal { - public: - typedef Ret (*callback_function)(Args...); - typedef std::function callback_object; + protected: + std::vector m_children; - protected: - std::vector m_children; + public: + signal () + { m_children.reserve (16); } - public: - signal () - { m_children.reserve (16); } + /// Add a callback to list. + void connect (callback_object _cb) + { m_children.push_back (_cb); } - /// Add a callback to list. - void connect (callback_object _cb) - { m_children.push_back (_cb); } + /// Add a callback to the list. + void connect (callback_function _cb) + { m_children.push_back (_cb); } - /// Add a callback to the list. - void connect (callback_function _cb) - { m_children.push_back (_cb); } + /// Remove all instances of callback `cb' + //void disconnect (callback_function _cb) + // { disconnect (callback_object (_cb)); } - /// Remove all instances of callback `cb' - //void disconnect (callback_function _cb) - // { disconnect (callback_object (_cb)); } + /// Remove all instances of callback `cb' + /*void disconnect (callback_object _cb) { + m_children.erase (std::remove (m_children.begin (), + m_children.end (), + _cb), + m_children.end ()); + }*/ - /// Remove all instances of callback `cb' - /*void disconnect (callback_object _cb) { - m_children.erase (std::remove (m_children.begin (), - m_children.end (), - _cb), - m_children.end ()); - }*/ + /// Disconnect all callbacks + void clear (void) + { m_children.clear (); } - /// Disconnect all callbacks - void clear (void) - { m_children.clear (); } + /// Returns the number of callbacks connected. + unsigned int size (void) const + { return m_children.size (); } - /// Returns the number of callbacks connected. - unsigned int size (void) const - { return m_children.size (); } - - /// Execute all callbacks, ignoring the return parameters. Does not combine results. - void operator () (Args... tail) { - for (auto i = m_children.begin (), end = m_children.end (); i != end; ++i) - (*i)(tail...); - } -}; + /// Execute all callbacks, ignoring the return parameters. Does not combine results. + void operator () (Args... tail) { + for (auto i = m_children.begin (), end = m_children.end (); i != end; ++i) + (*i)(tail...); + } + }; +} #endif // __SIGNAL_HPP