// Boost.Signals library
-//
-// Copyright (C) 2001-2002 Doug Gregor (gregod@cs.rpi.edu)
-//
-// Permission to copy, use, sell and distribute this software is granted
-// provided this copyright notice appears in all copies.
-// Permission to modify the code and to distribute modified code is granted
-// provided this copyright notice appears in all copies, and a notice
-// that the code was modified is included with the copyright notice.
-//
-// This software is provided "as is" without express or implied warranty,
-// and with no claim as to its suitability for any purpose.
-
-// For more information, see http://www.boost.org
+
+// Copyright Douglas Gregor 2001-2006. 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/libs/signals
#ifndef BOOST_SIGNAL_HPP
#define BOOST_SIGNAL_HPP
-#define BOOST_SIGNALS_MAX_ARGS 10
+#ifndef BOOST_SIGNALS_MAX_ARGS
+# define BOOST_SIGNALS_MAX_ARGS 10
+#endif
#include <boost/config.hpp>
#include <boost/type_traits/function_traits.hpp>
#include <boost/signals/signal10.hpp>
#include <boost/function.hpp>
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
namespace boost {
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#ifndef BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX
namespace BOOST_SIGNALS_NAMESPACE {
namespace detail {
- template<int Arity,
- typename Signature,
+ template<int Arity,
+ typename Signature,
typename Combiner,
typename Group,
typename GroupCompare,
typename SlotFunction>
- struct real_get_signal_impl;
+ class real_get_signal_impl;
template<typename Signature,
typename Combiner,
SlotFunction>
{
typedef function_traits<Signature> traits;
-
+
public:
typedef signal0<typename traits::result_type,
Combiner,
SlotFunction>
{
typedef function_traits<Signature> traits;
-
+
public:
typedef signal1<typename traits::result_type,
typename traits::arg1_type,
typename SlotFunction>
class real_get_signal_impl<2, Signature, Combiner, Group, GroupCompare,
SlotFunction>
- {
+ {
typedef function_traits<Signature> traits;
public:
typename SlotFunction>
class real_get_signal_impl<3, Signature, Combiner, Group, GroupCompare,
SlotFunction>
- {
+ {
typedef function_traits<Signature> traits;
public:
typename SlotFunction>
class real_get_signal_impl<4, Signature, Combiner, Group, GroupCompare,
SlotFunction>
- {
+ {
typedef function_traits<Signature> traits;
public:
typename SlotFunction>
class real_get_signal_impl<5, Signature, Combiner, Group, GroupCompare,
SlotFunction>
- {
+ {
typedef function_traits<Signature> traits;
public:
typename SlotFunction>
class real_get_signal_impl<6, Signature, Combiner, Group, GroupCompare,
SlotFunction>
- {
+ {
typedef function_traits<Signature> traits;
public:
typename SlotFunction>
class real_get_signal_impl<7, Signature, Combiner, Group, GroupCompare,
SlotFunction>
- {
+ {
typedef function_traits<Signature> traits;
public:
typename SlotFunction>
class real_get_signal_impl<8, Signature, Combiner, Group, GroupCompare,
SlotFunction>
- {
+ {
typedef function_traits<Signature> traits;
public:
typename SlotFunction>
class real_get_signal_impl<9, Signature, Combiner, Group, GroupCompare,
SlotFunction>
- {
+ {
typedef function_traits<Signature> traits;
public:
typename SlotFunction>
class real_get_signal_impl<10, Signature, Combiner, Group, GroupCompare,
SlotFunction>
- {
+ {
typedef function_traits<Signature> traits;
public:
typename Group,
typename GroupCompare,
typename SlotFunction>
- struct get_signal_impl :
+ struct get_signal_impl :
public real_get_signal_impl<(function_traits<Signature>::arity),
Signature,
Combiner,
Group,
GroupCompare,
SlotFunction>
- {
+ {
};
} // end namespace detail
typename Signature, // function type R (T1, T2, ..., TN)
typename Combiner = last_value<typename function_traits<Signature>::result_type>,
typename Group = int,
- typename GroupCompare = std::less<int>,
+ typename GroupCompare = std::less<Group>,
typename SlotFunction = function<Signature>
>
class signal :
GroupCompare,
SlotFunction>::type base_type;
- public:
+ public:
explicit signal(const Combiner& combiner = Combiner(),
const GroupCompare& group_compare = GroupCompare()) :
base_type(combiner, group_compare)
{
}
};
-#endif // ndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // ndef BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX
} // end namespace boost
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
#endif // BOOST_SIGNAL_HPP