diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) |
commit | 0efa7c32aaf21a29b42b5926cc116007056843be (patch) | |
tree | 882f663a5dd0e65694bf6077b71086dd77fd7ff8 /3rdParty/Boost/boost/signals/connection.hpp | |
parent | 1d20eabbc32274b491b4c2bedf73d19933d97bfd (diff) | |
download | swift-contrib-0efa7c32aaf21a29b42b5926cc116007056843be.zip swift-contrib-0efa7c32aaf21a29b42b5926cc116007056843be.tar.bz2 |
Moved some modules into separate git modules.
Diffstat (limited to '3rdParty/Boost/boost/signals/connection.hpp')
m--------- | 3rdParty/Boost | 0 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/signals/connection.hpp | 213 |
2 files changed, 0 insertions, 213 deletions
diff --git a/3rdParty/Boost b/3rdParty/Boost new file mode 160000 +Subproject 3bbdbc8cf1996f23d9a366da8bac0f97be6ad79 diff --git a/3rdParty/Boost/boost/signals/connection.hpp b/3rdParty/Boost/boost/signals/connection.hpp deleted file mode 100644 index 48493aa..0000000 --- a/3rdParty/Boost/boost/signals/connection.hpp +++ /dev/null @@ -1,213 +0,0 @@ -// Boost.Signals library - -// Copyright Douglas Gregor 2001-2004. Use, modification and -// distribution is subject to the Boost Software License, Version -// 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// For more information, see http://www.boost.org - -#ifndef BOOST_SIGNALS_CONNECTION_HPP -#define BOOST_SIGNALS_CONNECTION_HPP - -#include <boost/signals/detail/signals_common.hpp> -#include <boost/smart_ptr.hpp> -#include <boost/operators.hpp> -#include <boost/any.hpp> -#include <list> -#include <cassert> -#include <utility> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { - namespace BOOST_SIGNALS_NAMESPACE { - class trackable; - - namespace detail { - // Represents an object that has been bound as part of a slot, and how - // to notify that object of a disconnect - struct bound_object { - void* obj; - void* data; - void (*disconnect)(void*, void*); - - bool operator==(const bound_object& other) const - { return obj == other.obj && data == other.data; } - bool operator<(const bound_object& other) const - { return obj < other.obj; } - - // To support intel 80 compiler, 2004/03/18 (Mark Rodgers) - bool operator!=(const bound_object& other) const - { return !(*this==other); } - bool operator>(const bound_object& other) const - { return !(*this < other); } - }; - - // Describes the connection between a signal and the objects that are - // bound for a specific slot. Enables notification of the signal and the - // slots when a disconnect is requested. - struct basic_connection { - void* signal; - void* signal_data; - void (*signal_disconnect)(void*, void*); - bool blocked_; - - std::list<bound_object> bound_objects; - }; - } // end namespace detail - - // The user may freely pass around the "connection" object and terminate - // the connection at any time using disconnect(). - class BOOST_SIGNALS_DECL connection : - private less_than_comparable1<connection>, - private equality_comparable1<connection> - { - public: - connection() : con(), controlling_connection(false) {} - connection(const connection&); - ~connection(); - - // Block he connection: if the connection is still active, there - // will be no notification - void block(bool should_block = true) { con->blocked_ = should_block; } - void unblock() { con->blocked_ = false; } - bool blocked() const { return !connected() || con->blocked_; } - - // Disconnect the signal and slot, if they are connected - void disconnect() const; - - // Returns true if the signal and slot are connected - bool connected() const { return con.get() && con->signal_disconnect; } - - // Comparison of connections - bool operator==(const connection& other) const; - bool operator<(const connection& other) const; - - // Connection assignment - connection& operator=(const connection& other) ; - - // Swap connections - void swap(connection& other); - - public: // TBD: CHANGE THIS - // Set whether this connection object is controlling or not - void set_controlling(bool control = true) - { controlling_connection = control; } - - shared_ptr<BOOST_SIGNALS_NAMESPACE::detail::basic_connection> - get_connection() const - { return con; } - - private: - friend class detail::signal_base_impl; - friend class detail::slot_base; - friend class trackable; - - // Reset this connection to refer to a different actual connection - void reset(BOOST_SIGNALS_NAMESPACE::detail::basic_connection*); - - // Add a bound object to this connection (not for users) - void add_bound_object(const BOOST_SIGNALS_NAMESPACE::detail::bound_object& b); - - friend class BOOST_SIGNALS_NAMESPACE::detail::bound_objects_visitor; - - // Pointer to the actual contents of the connection - shared_ptr<BOOST_SIGNALS_NAMESPACE::detail::basic_connection> con; - - // True if the destruction of this connection object should disconnect - bool controlling_connection; - }; - - // Similar to connection, but will disconnect the connection when it is - // destroyed unless release() has been called. - class BOOST_SIGNALS_DECL scoped_connection : public connection { - public: - scoped_connection() : connection(), released(false) {} - scoped_connection(const connection&); - scoped_connection(const scoped_connection&); - ~scoped_connection(); - - connection release(); - - inline void swap(scoped_connection&); - - scoped_connection& operator=(const connection&); - scoped_connection& operator=(const scoped_connection&); - - private: - bool released; - }; - - namespace detail { - struct connection_slot_pair { - connection first; - any second; - - connection_slot_pair() {} - - connection_slot_pair(const connection& c, const any& a) - : first(c), second(a) - { - } - - // Dummys to allow explicit instantiation to work - bool operator==(const connection_slot_pair&) const { return false; } - bool operator<(const connection_slot_pair&) const { return false;} - }; - - // Determines if the underlying connection is disconnected - struct is_disconnected { - typedef connection_slot_pair argument_type; - typedef bool result_type; - - inline bool operator()(const argument_type& c) const - { - return !c.first.connected(); - } - }; - - // Determines if the underlying connection is callable, ie if - // it is connected and not blocked - struct is_callable { - typedef connection_slot_pair argument_type; - typedef bool result_type; - - inline bool operator()(const argument_type& c) const - { - return c.first.connected() && !c.first.blocked() ; - } - }; - - // Autodisconnects the bound object when it is destroyed unless the - // release method is invoked. - class auto_disconnect_bound_object { - public: - auto_disconnect_bound_object(const bound_object& b) : - binding(b), auto_disconnect(true) - { - } - - ~auto_disconnect_bound_object() - { - if (auto_disconnect) - binding.disconnect(binding.obj, binding.data); - } - - void release() { auto_disconnect = false; } - - private: - bound_object binding; - bool auto_disconnect; - }; - } // end namespace detail - } // end namespace BOOST_SIGNALS_NAMESPACE -} // end namespace boost - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_SIGNALS_CONNECTION_HPP |