diff options
author | Carl Hetherington <carl@carlh.net> | 2012-05-14 17:46:07 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2012-05-14 17:46:07 +0000 |
commit | f012a84e62a2afa0a788c8d77b96b268d7b7a72f (patch) | |
tree | 19628cb849edc6ac575f1b72dc2f8b0569c71da5 /libs | |
parent | b14c75172bbcb9764e97c71996110ec17be12ba0 (diff) |
Build libs/pbd/pbd/signal.h from its generator python
script.
git-svn-id: svn://localhost/ardour2/branches/3.0@12268 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/pbd/pbd/signal.h | 903 | ||||
-rw-r--r-- | libs/pbd/wscript | 4 |
2 files changed, 4 insertions, 903 deletions
diff --git a/libs/pbd/pbd/signal.h b/libs/pbd/pbd/signal.h deleted file mode 100644 index 5eb8520a6f..0000000000 --- a/libs/pbd/pbd/signal.h +++ /dev/null @@ -1,903 +0,0 @@ - -/** THIS FILE IS AUTOGENERATED: DO NOT EDIT. - * - * This file is generated by signals.h.py. - */ - -#include <list> -#include <boost/function.hpp> -#include <boost/bind.hpp> -#include <boost/thread/mutex.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <boost/optional.hpp> -#include "pbd/stacktrace.h" - -namespace PBD { - -class Connection; - -class SignalBase : public boost::enable_shared_from_this<SignalBase> -{ -public: - virtual ~SignalBase () {} - virtual void disconnect (boost::shared_ptr<Connection>) = 0; - -protected: - boost::mutex _mutex; -}; - -class Connection : public boost::enable_shared_from_this<Connection> -{ -public: - Connection (boost::shared_ptr<SignalBase> b) : _signal (b) {} - - void disconnect () - { - if (_signal) { - _signal->disconnect (shared_from_this ()); - } - } - -private: - boost::shared_ptr<SignalBase> _signal; -}; - -template<typename R> -class OptionalLastValue -{ -public: - typedef boost::optional<R> result_type; - - template <typename Iter> - result_type operator() (Iter first, Iter last) const { - result_type r; - while (first != last) { - r = *first; - ++first; - } - - return r; - } -}; - -template <typename R, typename C = OptionalLastValue<R> > -class SimpleSignal0 : public SignalBase -{ -public: - - typedef boost::function<R()> slot_function_type; - typedef boost::optional<R> result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - typename C::result_type emit () - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - std::list<R> r; - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - r.push_back ((i->second)()); - } - } - C c; - return c (r.begin(), r.end()); - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal0<R, C> > create () - { - return boost::shared_ptr<SimpleSignal0<R, C> > (new SimpleSignal0<R, C>); - } - -private: - - friend class Connection; - - SimpleSignal0 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <> -class SimpleSignal0<void> : public SignalBase -{ -public: - - typedef boost::function<void()> slot_function_type; - typedef void result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - void emit () - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - -#if __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 6)) - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { -#else - for (Slots::iterator i = s.begin(); i != s.end(); ++i) { -#endif - - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - (i->second)(); - } - } - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal0<void> > create () - { - return boost::shared_ptr<SimpleSignal0<void> > (new SimpleSignal0<void>); - } - -private: - - friend class Connection; - - SimpleSignal0 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename R, typename A1, typename C = OptionalLastValue<R> > -class SimpleSignal1 : public SignalBase -{ -public: - - typedef boost::function<R(A1)> slot_function_type; - typedef boost::optional<R> result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - typename C::result_type emit (A1 a1) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - std::list<R> r; - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - r.push_back ((i->second)(a1)); - } - } - C c; - return c (r.begin(), r.end()); - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal1<R, A1, C> > create () - { - return boost::shared_ptr<SimpleSignal1<R, A1, C> > (new SimpleSignal1<R, A1, C>); - } - -private: - - friend class Connection; - - SimpleSignal1 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename A1> -class SimpleSignal1<void, A1> : public SignalBase -{ -public: - - typedef boost::function<void(A1)> slot_function_type; - typedef void result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - void emit (A1 a1) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - (i->second)(a1); - } - } - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal1<void, A1> > create () - { - return boost::shared_ptr<SimpleSignal1<void, A1> > (new SimpleSignal1<void, A1>); - } - -private: - - friend class Connection; - - SimpleSignal1 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename R, typename A1, typename A2, typename C = OptionalLastValue<R> > -class SimpleSignal2 : public SignalBase -{ -public: - - typedef boost::function<R(A1, A2)> slot_function_type; - typedef boost::optional<R> result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - typename C::result_type emit (A1 a1, A2 a2) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - std::list<R> r; - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - r.push_back ((i->second)(a1, a2)); - } - } - C c; - return c (r.begin(), r.end()); - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal2<R, A1, A2, C> > create () - { - return boost::shared_ptr<SimpleSignal2<R, A1, A2, C> > (new SimpleSignal2<R, A1, A2, C>); - } - -private: - - friend class Connection; - - SimpleSignal2 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename A1, typename A2> -class SimpleSignal2<void, A1, A2> : public SignalBase -{ -public: - - typedef boost::function<void(A1, A2)> slot_function_type; - typedef void result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - void emit (A1 a1, A2 a2) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - (i->second)(a1, a2); - } - } - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal2<void, A1, A2> > create () - { - return boost::shared_ptr<SimpleSignal2<void, A1, A2> > (new SimpleSignal2<void, A1, A2>); - } - -private: - - friend class Connection; - - SimpleSignal2 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename R, typename A1, typename A2, typename A3, typename C = OptionalLastValue<R> > -class SimpleSignal3 : public SignalBase -{ -public: - - typedef boost::function<R(A1, A2, A3)> slot_function_type; - typedef boost::optional<R> result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - typename C::result_type emit (A1 a1, A2 a2, A3 a3) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - std::list<R> r; - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - r.push_back ((i->second)(a1, a2, a3)); - } - } - C c; - return c (r.begin(), r.end()); - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal3<R, A1, A2, A3, C> > create () - { - return boost::shared_ptr<SimpleSignal3<R, A1, A2, A3, C> > (new SimpleSignal3<R, A1, A2, A3, C>); - } - -private: - - friend class Connection; - - SimpleSignal3 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename A1, typename A2, typename A3> -class SimpleSignal3<void, A1, A2, A3> : public SignalBase -{ -public: - - typedef boost::function<void(A1, A2, A3)> slot_function_type; - typedef void result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - void emit (A1 a1, A2 a2, A3 a3) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - (i->second)(a1, a2, a3); - } - } - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal3<void, A1, A2, A3> > create () - { - return boost::shared_ptr<SimpleSignal3<void, A1, A2, A3> > (new SimpleSignal3<void, A1, A2, A3>); - } - -private: - - friend class Connection; - - SimpleSignal3 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename R, typename A1, typename A2, typename A3, typename A4, typename C = OptionalLastValue<R> > -class SimpleSignal4 : public SignalBase -{ -public: - - typedef boost::function<R(A1, A2, A3, A4)> slot_function_type; - typedef boost::optional<R> result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - typename C::result_type emit (A1 a1, A2 a2, A3 a3, A4 a4) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - std::list<R> r; - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - r.push_back ((i->second)(a1, a2, a3, a4)); - } - } - C c; - return c (r.begin(), r.end()); - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal4<R, A1, A2, A3, A4, C> > create () - { - return boost::shared_ptr<SimpleSignal4<R, A1, A2, A3, A4, C> > (new SimpleSignal4<R, A1, A2, A3, A4, C>); - } - -private: - - friend class Connection; - - SimpleSignal4 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename A1, typename A2, typename A3, typename A4> -class SimpleSignal4<void, A1, A2, A3, A4> : public SignalBase -{ -public: - - typedef boost::function<void(A1, A2, A3, A4)> slot_function_type; - typedef void result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - void emit (A1 a1, A2 a2, A3 a3, A4 a4) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - (i->second)(a1, a2, a3, a4); - } - } - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal4<void, A1, A2, A3, A4> > create () - { - return boost::shared_ptr<SimpleSignal4<void, A1, A2, A3, A4> > (new SimpleSignal4<void, A1, A2, A3, A4>); - } - -private: - - friend class Connection; - - SimpleSignal4 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename R, typename A1, typename A2, typename A3, typename A4, typename A5, typename C = OptionalLastValue<R> > -class SimpleSignal5 : public SignalBase -{ -public: - - typedef boost::function<R(A1, A2, A3, A4, A5)> slot_function_type; - typedef boost::optional<R> result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - typename C::result_type emit (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - std::list<R> r; - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - r.push_back ((i->second)(a1, a2, a3, a4, a5)); - } - } - C c; - return c (r.begin(), r.end()); - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal5<R, A1, A2, A3, A4, A5, C> > create () - { - return boost::shared_ptr<SimpleSignal5<R, A1, A2, A3, A4, A5, C> > (new SimpleSignal5<R, A1, A2, A3, A4, A5, C>); - } - -private: - - friend class Connection; - - SimpleSignal5 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -template <typename A1, typename A2, typename A3, typename A4, typename A5> -class SimpleSignal5<void, A1, A2, A3, A4, A5> : public SignalBase -{ -public: - - typedef boost::function<void(A1, A2, A3, A4, A5)> slot_function_type; - typedef void result_type; -private: - - - typedef std::map<boost::shared_ptr<Connection>, slot_function_type> Slots; - Slots _slots; - -public: - - - boost::shared_ptr<Connection> connect (slot_function_type f) - { - boost::shared_ptr<Connection> c (new Connection (shared_from_this ())); - boost::mutex::scoped_lock lm (_mutex); - _slots[c] = f; - return c; - } - - void emit (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) - { - Slots s; - { - boost::mutex::scoped_lock lm (_mutex); - s = _slots; - } - for (typename Slots::iterator i = s.begin(); i != s.end(); ++i) { - - bool still_there = false; - { - boost::mutex::scoped_lock lm (_mutex); - still_there = _slots.find (i->first) != _slots.end (); - } - - if (still_there) { - (i->second)(a1, a2, a3, a4, a5); - } - } - } - - bool empty () { - boost::mutex::scoped_lock lm (_mutex); - return _slots.empty (); - } - - static boost::shared_ptr<SimpleSignal5<void, A1, A2, A3, A4, A5> > create () - { - return boost::shared_ptr<SimpleSignal5<void, A1, A2, A3, A4, A5> > (new SimpleSignal5<void, A1, A2, A3, A4, A5>); - } - -private: - - friend class Connection; - - SimpleSignal5 () {} - - void disconnect (boost::shared_ptr<Connection> c) - { - boost::mutex::scoped_lock lm (_mutex); - _slots.erase (c); - } -}; - -} diff --git a/libs/pbd/wscript b/libs/pbd/wscript index 60799f0116..641b333a53 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -54,6 +54,10 @@ def configure(conf): # autowaf.check_header(conf, 'cxx', 'boost/uuid/uuid.hpp') def build(bld): + + # Make signal.h using signal.h.py + bld(rule = 'python ${SRC} ${TGT}', source = 'pbd/signal.h.py', target = 'pbd/signal.h') + # Library obj = bld(features = 'cxx cxxshlib') obj.source = ''' |