diff options
Diffstat (limited to '3rdParty/Boost/src/boost/signals/detail/signals_common.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/signals/detail/signals_common.hpp | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/3rdParty/Boost/src/boost/signals/detail/signals_common.hpp b/3rdParty/Boost/src/boost/signals/detail/signals_common.hpp deleted file mode 100644 index fe1a5a1..0000000 --- a/3rdParty/Boost/src/boost/signals/detail/signals_common.hpp +++ /dev/null @@ -1,162 +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_COMMON_HEADER -#define BOOST_SIGNALS_COMMON_HEADER - -#ifndef BOOST_SIGNALS_NAMESPACE -# define BOOST_SIGNALS_NAMESPACE signals -#endif - -#include <boost/type_traits/conversion_traits.hpp> -#include <boost/ref.hpp> -#include <boost/signals/detail/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { - namespace BOOST_SIGNALS_NAMESPACE { - namespace detail { - // The unusable class is a placeholder for unused function arguments - // It is also completely unusable except that it constructable from - // anything. This helps compilers without partial specialization - // handle slots returning void. - struct unusable { - unusable() {} - }; - - // Determine the result type of a slot call - template<typename R> - struct slot_result_type { - typedef R type; - }; - - template<> - struct slot_result_type<void> { - typedef unusable type; - }; - - // Determine if the given type T is a signal - class signal_base; - - template<typename T> - struct is_signal { - BOOST_STATIC_CONSTANT(bool, - value = (is_convertible<T*, signal_base*>::value)); - }; - - /* - * The IF implementation is temporary code. When a Boost metaprogramming - * library is introduced, Boost.Signals will use it instead. - */ - namespace intimate { - struct SelectThen - { - template<typename Then, typename Else> - struct Result - { - typedef Then type; - }; - }; - - struct SelectElse - { - template<typename Then, typename Else> - struct Result - { - typedef Else type; - }; - }; - - template<bool Condition> - struct Selector - { - typedef SelectThen type; - }; - - template<> - struct Selector<false> - { - typedef SelectElse type; - }; - } // end namespace intimate - - template<bool Condition, typename Then, typename Else> - struct IF - { - typedef typename intimate::Selector<Condition>::type select; - typedef typename select::template Result<Then,Else>::type type; - }; - - // Determine if the incoming argument is a reference_wrapper -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template<typename T> - struct is_ref - { - BOOST_STATIC_CONSTANT(bool, value = false); - }; - - template<typename T> - struct is_ref<reference_wrapper<T> > - { - BOOST_STATIC_CONSTANT(bool, value = true); - }; -#else // no partial specialization - typedef char yes_type; - typedef double no_type; - - no_type is_ref_tester(...); - - template<typename T> - yes_type is_ref_tester(reference_wrapper<T>*); - - template<typename T> - struct is_ref - { - static T* t; - BOOST_STATIC_CONSTANT(bool, - value = (sizeof(is_ref_tester(t)) == sizeof(yes_type))); - }; -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // A slot can be a signal, a reference to a function object, or a - // function object. - struct signal_tag {}; - struct reference_tag {}; - struct value_tag {}; - - // Classify the given slot as a signal, a reference-to-slot, or a - // standard slot - template<typename S> - class get_slot_tag { - typedef typename IF<(is_signal<S>::value), - signal_tag, - value_tag>::type signal_or_value; - - public: - typedef typename IF<(is_ref<S>::value), - reference_tag, - signal_or_value>::type type; - }; - - // Forward declaration needed in lots of places - class signal_base_impl; - class bound_objects_visitor; - class slot_base; - } // end namespace detail - } // end namespace BOOST_SIGNALS_NAMESPACE -} // end namespace boost - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_SIGNALS_COMMON_HEADER |