$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r53359 - in trunk: boost/signals2 boost/signals2/detail libs/signals2/test
From: fmhess_at_[hidden]
Date: 2009-05-28 15:44:45
Author: fmhess
Date: 2009-05-28 15:44:44 EDT (Thu, 28 May 2009)
New Revision: 53359
URL: http://svn.boost.org/trac/boost/changeset/53359
Log:
Added signature_type member typedef to variadic signal implementation.
Also added it to slot classes.
Text files modified: 
   trunk/boost/signals2/detail/signal_template.hpp |     1 +                                       
   trunk/boost/signals2/detail/slot_template.hpp   |     1 +                                       
   trunk/boost/signals2/preprocessed_slot.hpp      |     1 +                                       
   trunk/boost/signals2/slot.hpp                   |     2 +-                                      
   trunk/boost/signals2/variadic_signal.hpp        |     1 +                                       
   trunk/boost/signals2/variadic_slot.hpp          |     1 +                                       
   trunk/libs/signals2/test/signal_test.cpp        |     3 +++                                     
   7 files changed, 9 insertions(+), 1 deletions(-)
Modified: trunk/boost/signals2/detail/signal_template.hpp
==============================================================================
--- trunk/boost/signals2/detail/signal_template.hpp	(original)
+++ trunk/boost/signals2/detail/signal_template.hpp	2009-05-28 15:44:44 EDT (Thu, 28 May 2009)
@@ -565,6 +565,7 @@
         typedef typename detail::variadic_arg_type<n, Args...>::type type;
       };
       BOOST_STATIC_CONSTANT(int, arity = detail::vararg_count<Args...>::value);
+      typedef typename mpl::identity<R (Args...)>::type signature_type;
 
 #endif // BOOST_NO_VARIADIC_TEMPLATES
 
Modified: trunk/boost/signals2/detail/slot_template.hpp
==============================================================================
--- trunk/boost/signals2/detail/slot_template.hpp	(original)
+++ trunk/boost/signals2/detail/slot_template.hpp	2009-05-28 15:44:44 EDT (Thu, 28 May 2009)
@@ -69,6 +69,7 @@
         typedef typename detail::variadic_arg_type<n, Args...>::type type;
       };
       BOOST_STATIC_CONSTANT(int, arity = detail::vararg_count<Args...>::value);
+      typedef typename mpl::identity<R (Args...)>::type signature_type;
 
 #endif // BOOST_NO_VARIADIC_TEMPLATES
 
Modified: trunk/boost/signals2/preprocessed_slot.hpp
==============================================================================
--- trunk/boost/signals2/preprocessed_slot.hpp	(original)
+++ trunk/boost/signals2/preprocessed_slot.hpp	2009-05-28 15:44:44 EDT (Thu, 28 May 2009)
@@ -53,6 +53,7 @@
       typedef typename detail::slotN<boost::function_traits<Signature>::arity,
         Signature, SlotFunction>::type base_type;
     public:
+      typedef Signature signature_type;
       template<typename F>
       slot(const F& f): base_type(f)
       {}
Modified: trunk/boost/signals2/slot.hpp
==============================================================================
--- trunk/boost/signals2/slot.hpp	(original)
+++ trunk/boost/signals2/slot.hpp	2009-05-28 15:44:44 EDT (Thu, 28 May 2009)
@@ -1,6 +1,6 @@
 // Boost.Signals2 library
 
-// Copyright Frank Mori Hess 2007-2008.
+// Copyright Frank Mori Hess 2009.
 //
 // Use, modification and
 // distribution is subject to the Boost Software License, Version
Modified: trunk/boost/signals2/variadic_signal.hpp
==============================================================================
--- trunk/boost/signals2/variadic_signal.hpp	(original)
+++ trunk/boost/signals2/variadic_signal.hpp	2009-05-28 15:44:44 EDT (Thu, 28 May 2009)
@@ -16,6 +16,7 @@
 #ifndef BOOST_SIGNALS2_VARIADIC_SIGNAL_HPP
 #define BOOST_SIGNALS2_VARIADIC_SIGNAL_HPP
 
+#include <boost/mpl/identity.hpp>
 #include <boost/signals2/detail/variadic_arg_type.hpp>
 #include <boost/signals2/detail/variadic_slot_invoker.hpp>
 #include <boost/type_traits/function_traits.hpp>
Modified: trunk/boost/signals2/variadic_slot.hpp
==============================================================================
--- trunk/boost/signals2/variadic_slot.hpp	(original)
+++ trunk/boost/signals2/variadic_slot.hpp	2009-05-28 15:44:44 EDT (Thu, 28 May 2009)
@@ -11,6 +11,7 @@
 #ifndef BOOST_SIGNALS2_VARIADIC_SLOT_HPP
 #define BOOST_SIGNALS2_VARIADIC_SLOT_HPP
 
+#include <boost/mpl/identity.hpp>
 #include <boost/signals2/detail/variadic_arg_type.hpp>
 
 #define BOOST_SIGNALS2_SLOT_N_BINDING_CONSTRUCTORS \
Modified: trunk/libs/signals2/test/signal_test.cpp
==============================================================================
--- trunk/libs/signals2/test/signal_test.cpp	(original)
+++ trunk/libs/signals2/test/signal_test.cpp	2009-05-28 15:44:44 EDT (Thu, 28 May 2009)
@@ -15,6 +15,7 @@
 #include <boost/signals2.hpp>
 #include <functional>
 #include <iostream>
+#include <typeinfo>
 
 template<typename T>
 struct max_or_default {
@@ -245,11 +246,13 @@
   BOOST_CHECK(typeid(signal_type::result_type) == typeid(boost::optional<int>));
   BOOST_CHECK(typeid(signal_type::arg<0>::type) == typeid(double));
   BOOST_CHECK(typeid(signal_type::arg<1>::type) == typeid(long));
+  BOOST_CHECK(typeid(signal_type::signature_type) == typeid(int (double, long)));
   BOOST_CHECK(signal_type::arity == 2);
 
   BOOST_CHECK(typeid(slot_type::result_type) == typeid(signal_type::slot_result_type));
   BOOST_CHECK(typeid(slot_type::arg<0>::type) == typeid(signal_type::arg<0>::type));
   BOOST_CHECK(typeid(slot_type::arg<1>::type) == typeid(signal_type::arg<1>::type));
+  BOOST_CHECK(typeid(slot_type::signature_type) == typeid(signal_type::signature_type));
   BOOST_CHECK(slot_type::arity == signal_type::arity);
 }