Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r51379 - in trunk/boost/fusion: functional functional/adapter functional/adapter/detail functional/generation support
From: tschwinger_at_[hidden]
Date: 2009-02-22 01:23:57


Author: t_schwinger
Date: 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
New Revision: 51379
URL: http://svn.boost.org/trac/boost/changeset/51379

Log:
updates functional module: only two unfused variants, now

Added:
   trunk/boost/fusion/functional/generation/make_unfused.hpp (contents, props changed)
Removed:
   trunk/boost/fusion/functional/adapter/detail/pow2_explode.hpp
   trunk/boost/fusion/functional/adapter/detail/pt_def.hpp
   trunk/boost/fusion/functional/adapter/detail/pt_undef.hpp
   trunk/boost/fusion/functional/adapter/unfused_generic.hpp
   trunk/boost/fusion/functional/adapter/unfused_lvalue_args.hpp
   trunk/boost/fusion/functional/adapter/unfused_rvalue_args.hpp
   trunk/boost/fusion/functional/generation/make_unfused_generic.hpp
   trunk/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp
   trunk/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp
Text files modified:
   trunk/boost/fusion/functional/adapter.hpp | 4 +---
   trunk/boost/fusion/functional/adapter/limits.hpp | 17 ++---------------
   trunk/boost/fusion/functional/generation.hpp | 4 +---
   trunk/boost/fusion/support/deduce.hpp | 12 ++++++++++++
   4 files changed, 16 insertions(+), 21 deletions(-)

Modified: trunk/boost/fusion/functional/adapter.hpp
==============================================================================
--- trunk/boost/fusion/functional/adapter.hpp (original)
+++ trunk/boost/fusion/functional/adapter.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
@@ -11,8 +11,6 @@
 #include <boost/fusion/functional/adapter/fused.hpp>
 #include <boost/fusion/functional/adapter/fused_procedure.hpp>
 #include <boost/fusion/functional/adapter/fused_function_object.hpp>
-#include <boost/fusion/functional/adapter/unfused_generic.hpp>
-#include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
-#include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
+#include <boost/fusion/functional/adapter/unfused.hpp>
 #include <boost/fusion/functional/adapter/unfused_typed.hpp>
 #endif

Deleted: trunk/boost/fusion/functional/adapter/detail/pow2_explode.hpp
==============================================================================
--- trunk/boost/fusion/functional/adapter/detail/pow2_explode.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
+++ (empty file)
@@ -1,118 +0,0 @@
-/*=============================================================================
- Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#if !defined(BOOST_PP_IS_ITERATING)
-# error "This file has to be included by a preprocessor loop construct!"
-#elif BOOST_PP_ITERATION_DEPTH() == 1
-
-# if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_POW2_EXPLODE_HPP_INCLUDED)
-# include <boost/preprocessor/config/limits.hpp>
-# include <boost/preprocessor/slot/slot.hpp>
-# include <boost/preprocessor/arithmetic/dec.hpp>
-# define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_POW2_EXPLODE_HPP_INCLUDED
-# endif
-
-# define BOOST_PP_VALUE 0
-# include BOOST_PP_ASSIGN_SLOT(1)
-
-# define BOOST_PP_FILENAME_2 \
- <boost/fusion/functional/adapter/detail/pow2_explode.hpp>
-# define BOOST_PP_VALUE (1 << N) >> 4
-# if BOOST_PP_VALUE > BOOST_PP_LIMIT_ITERATION
-# error "Preprocessor limit exceeded."
-# endif
-
-# include BOOST_PP_ASSIGN_SLOT(2)
-# define BOOST_PP_ITERATION_LIMITS (0,BOOST_PP_DEC(BOOST_PP_SLOT_2()))
-# include BOOST_PP_ITERATE()
-
-#elif BOOST_PP_ITERATION_DEPTH() == 2
-
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# if BOOST_PP_SLOT_1() < 1 << N
-# include BOOST_PP_INDIRECT_SELF
-# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
-# include BOOST_PP_ASSIGN_SLOT(1)
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-# endif
-
-#endif
-

Deleted: trunk/boost/fusion/functional/adapter/detail/pt_def.hpp
==============================================================================
--- trunk/boost/fusion/functional/adapter/detail/pt_def.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
+++ (empty file)
@@ -1,71 +0,0 @@
-/*=============================================================================
- Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-// No include guard - this file is included multiple times intentionally.
-
-#if BOOST_PP_SLOT_1() & 0x001
-# define PT0 T0 &
-#else
-# define PT0 T0 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x002
-# define PT1 T1 &
-#else
-# define PT1 T1 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x004
-# define PT2 T2 &
-#else
-# define PT2 T2 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x008
-# define PT3 T3 &
-#else
-# define PT3 T3 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x010
-# define PT4 T4 &
-#else
-# define PT4 T4 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x020
-# define PT5 T5 &
-#else
-# define PT5 T5 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x040
-# define PT6 T6 &
-#else
-# define PT6 T6 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x080
-# define PT7 T7 &
-#else
-# define PT7 T7 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x100
-# define PT8 T8 &
-#else
-# define PT8 T8 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x200
-# define PT9 T9 &
-#else
-# define PT9 T9 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x400
-# define PT10 T10 &
-#else
-# define PT10 T10 const &
-#endif
-#if BOOST_PP_SLOT_1() & 0x800
-# define PT11 T11 &
-#else
-# define PT11 T11 const &
-#endif
-

Deleted: trunk/boost/fusion/functional/adapter/detail/pt_undef.hpp
==============================================================================
--- trunk/boost/fusion/functional/adapter/detail/pt_undef.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
+++ (empty file)
@@ -1,23 +0,0 @@
-/*=============================================================================
- Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-// No include guard - this file is included multiple times intentionally.
-
-#undef PT0
-#undef PT1
-#undef PT2
-#undef PT3
-#undef PT4
-#undef PT5
-#undef PT6
-#undef PT7
-#undef PT8
-#undef PT9
-#undef PT10
-#undef PT11
-

Modified: trunk/boost/fusion/functional/adapter/limits.hpp
==============================================================================
--- trunk/boost/fusion/functional/adapter/limits.hpp (original)
+++ trunk/boost/fusion/functional/adapter/limits.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
@@ -11,29 +11,16 @@
 
 # include <boost/fusion/container/vector/limits.hpp>
 
-# if !defined(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY)
-# define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 6
+# if !defined(BOOST_FUSION_UNFUSED_MAX_ARITY)
+# define BOOST_FUSION_UNFUSED_MAX_ARITY 6
 # elif BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
 # error "BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
 # endif
-# if !defined(BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY)
-# define BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY 6
-# elif BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
-# error "BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
-# endif
-# if !defined(BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY)
-# define BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY 6
-# elif BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
-# error "BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
-# endif
 # if !defined(BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY)
 # define BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY 6
 # elif BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
 # error "BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
 # endif
-# if !defined(BOOST_FUSION_CONSTRUCTOR_MAX_ARITY)
-# define BOOST_FUSION_CONSTRUCTOR_MAX_ARITY 6
-# endif
 
 #endif
 

Deleted: trunk/boost/fusion/functional/adapter/unfused_generic.hpp
==============================================================================
--- trunk/boost/fusion/functional/adapter/unfused_generic.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
+++ (empty file)
@@ -1,175 +0,0 @@
-/*=============================================================================
- Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/iteration/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/facilities/intercept.hpp>
-
-#include <boost/fusion/container/vector/vector.hpp>
-
-#include <boost/fusion/functional/adapter/limits.hpp>
-#include <boost/fusion/functional/adapter/detail/access.hpp>
-
-#include <boost/utility/result_of.hpp>
-
-namespace boost { namespace fusion
-{
- template <class Function> class unfused_generic;
-
- //----- ---- --- -- - - - -
-
- template <class Function>
- class unfused_generic
- {
- Function fnc_transformed;
-
- typedef typename detail::qf_c<Function>::type function_c;
- typedef typename detail::qf<Function>::type function;
-
- typedef typename detail::call_param<Function>::type func_const_fwd_t;
-
- public:
-
- inline explicit unfused_generic(func_const_fwd_t f = Function())
- : fnc_transformed(f)
- { }
-
- template <typename Sig>
- struct result;
-
- typedef typename boost::result_of<
- function_c(fusion::vector0 &) >::type call_const_0_result;
-
- inline call_const_0_result operator()() const
- {
- fusion::vector0 arg;
- return this->fnc_transformed(arg);
- }
-
- typedef typename boost::result_of<
- function (fusion::vector0 &) >::type call_0_result;
-
- inline call_0_result operator()()
- {
- fusion::vector0 arg;
- return this->fnc_transformed(arg);
- }
-
- #define BOOST_FUSION_CODE(tpl_params,arg_types,params,args) \
- template <tpl_params> \
- inline typename boost::result_of<function_c( \
- BOOST_PP_CAT(fusion::vector,N)<arg_types> & )>::type \
- operator()(params) const \
- { \
- BOOST_PP_CAT(fusion::vector,N)<arg_types> arg(args); \
- return this->fnc_transformed(arg); \
- } \
- template <tpl_params> \
- inline typename boost::result_of<function( \
- BOOST_PP_CAT(fusion::vector,N)<arg_types> & )>::type \
- operator()(params) \
- { \
- BOOST_PP_CAT(fusion::vector,N)<arg_types> arg(args); \
- return this->fnc_transformed(arg); \
- }
-
- #define BOOST_PP_INDIRECT_SELF \
- <boost/fusion/functional/adapter/unfused_generic.hpp>
- #define BOOST_PP_FILENAME_1 \
- <boost/fusion/functional/adapter/detail/pow2_explode.hpp>
- #define BOOST_PP_ITERATION_LIMITS \
- (1,BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY)
- #define N BOOST_PP_ITERATION_1
- #include BOOST_PP_ITERATE()
- #undef N
-
- #undef BOOST_FUSION_CODE
- };
-}}
-
-namespace boost
-{
- template<class F>
- struct result_of<boost::fusion::unfused_generic<F> const ()>
- {
- typedef typename boost::fusion::unfused_generic<F>::call_const_0_result type;
- };
- template<class F>
- struct result_of<boost::fusion::unfused_generic<F>()>
- {
- typedef typename boost::fusion::unfused_generic<F>::call_0_result type;
- };
-}
-
-#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP_INCLUDED
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include <boost/fusion/functional/adapter/detail/pt_def.hpp>
-
-#if BOOST_PP_SLOT_1() == 0
- template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
- struct result
- < Self const (BOOST_PP_ENUM_PARAMS(N,T)) >
- : boost::result_of<function_c(
- BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
- typename detail::gref<T,>::type BOOST_PP_INTERCEPT) > & )>
- { };
-
- template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
- struct result
- < Self(BOOST_PP_ENUM_PARAMS(N,T)) >
- : boost::result_of<function(
- BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
- typename detail::gref<T,>::type BOOST_PP_INTERCEPT) > & )>
- { };
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400))
- template <BOOST_PP_ENUM_PARAMS(N,typename T)>
- inline typename boost::result_of<function_c(
- BOOST_PP_CAT(fusion::vector,N)<BOOST_PP_ENUM_PARAMS(N,PT)> & )>::type
- operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) const
- {
- BOOST_PP_CAT(fusion::vector,N)<BOOST_PP_ENUM_PARAMS(N,PT)>
- arg(BOOST_PP_ENUM_PARAMS(N,a));
- return this->fnc_transformed(arg);
- }
- template <BOOST_PP_ENUM_PARAMS(N,typename T)>
- inline typename boost::result_of<function(
- BOOST_PP_CAT(fusion::vector,N)<BOOST_PP_ENUM_PARAMS(N,PT)> & )>::type
- operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a))
- {
- BOOST_PP_CAT(fusion::vector,N)<BOOST_PP_ENUM_PARAMS(N,PT)>
- arg(BOOST_PP_ENUM_PARAMS(N,a));
- return this->fnc_transformed(arg);
- }
-#else
- BOOST_FUSION_CODE(BOOST_PP_ENUM_PARAMS(N,typename T),
- BOOST_PP_ENUM_PARAMS(N,PT), BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a),
- BOOST_PP_ENUM_PARAMS(N,a) )
- // ...generates uglier code but is faster - it caches ENUM_*
-#endif
-
-#include <boost/fusion/functional/adapter/detail/pt_undef.hpp>
-
-#endif // defined(BOOST_PP_IS_ITERATING)
-#endif
-

Deleted: trunk/boost/fusion/functional/adapter/unfused_lvalue_args.hpp
==============================================================================
--- trunk/boost/fusion/functional/adapter/unfused_lvalue_args.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
+++ (empty file)
@@ -1,136 +0,0 @@
-/*=============================================================================
- Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
-
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/iteration/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/facilities/intercept.hpp>
-
-#include <boost/utility/result_of.hpp>
-
-#include <boost/fusion/container/vector/vector.hpp>
-
-#include <boost/fusion/functional/adapter/limits.hpp>
-#include <boost/fusion/functional/adapter/detail/access.hpp>
-
-namespace boost { namespace fusion
-{
- template <class Function> class unfused_lvalue_args;
-
- //----- ---- --- -- - - - -
-
- template <class Function> class unfused_lvalue_args
- {
- Function fnc_transformed;
-
- typedef typename detail::qf_c<Function>::type function_c;
- typedef typename detail::qf<Function>::type function;
-
- typedef typename detail::call_param<Function>::type func_const_fwd_t;
-
- public:
-
- inline explicit unfused_lvalue_args(func_const_fwd_t f = function())
- : fnc_transformed(f)
- { }
-
- template <typename Sig>
- struct result;
-
- typedef typename boost::result_of<
- function_c(fusion::vector0 &) >::type call_const_0_result;
-
- inline call_const_0_result operator()() const
- {
- fusion::vector0 arg;
- return this->fnc_transformed(arg);
- }
-
- typedef typename boost::result_of<
- function(fusion::vector0 &) >::type call_0_result;
-
- inline call_0_result operator()()
- {
- fusion::vector0 arg;
- return this->fnc_transformed(arg);
- }
-
- #define BOOST_PP_FILENAME_1 \
- <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
- #define BOOST_PP_ITERATION_LIMITS \
- (1,BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY)
- #include BOOST_PP_ITERATE()
- };
-}}
-
-namespace boost
-{
- template<class F>
- struct result_of< boost::fusion::unfused_lvalue_args<F> const () >
- {
- typedef typename boost::fusion::unfused_lvalue_args<F>::call_const_0_result type;
- };
- template<class F>
- struct result_of< boost::fusion::unfused_lvalue_args<F>() >
- {
- typedef typename boost::fusion::unfused_lvalue_args<F>::call_0_result type;
- };
-}
-
-#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP_INCLUDED
-#else // defined(BOOST_PP_IS_ITERATING)
-////////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-////////////////////////////////////////////////////////////////////////////////
-#define N BOOST_PP_ITERATION()
-
- template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
- struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) >
- : boost::result_of< function_c(
- BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
- typename detail::mref<T,>::type BOOST_PP_INTERCEPT) > & )>
- { };
-
- template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
- struct result< Self(BOOST_PP_ENUM_PARAMS(N,T)) >
- : boost::result_of< function(
- BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
- typename detail::mref<T,>::type BOOST_PP_INTERCEPT) > & )>
- { };
-
- template <BOOST_PP_ENUM_PARAMS(N,typename T)>
- inline typename boost::result_of<function_c(BOOST_PP_CAT(fusion::vector,N)
- <BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT)> & )>::type
- operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const
- {
- BOOST_PP_CAT(fusion::vector,N)<
- BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT) >
- arg(BOOST_PP_ENUM_PARAMS(N,a));
- return this->fnc_transformed(arg);
- }
-
- template <BOOST_PP_ENUM_PARAMS(N,typename T)>
- inline typename boost::result_of<function(BOOST_PP_CAT(fusion::vector,N)
- <BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT)> & )>::type
- operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a))
- {
- BOOST_PP_CAT(fusion::vector,N)<
- BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT) >
- arg(BOOST_PP_ENUM_PARAMS(N,a));
- return this->fnc_transformed(arg);
- }
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-#endif
-

Deleted: trunk/boost/fusion/functional/adapter/unfused_rvalue_args.hpp
==============================================================================
--- trunk/boost/fusion/functional/adapter/unfused_rvalue_args.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
+++ (empty file)
@@ -1,137 +0,0 @@
-/*=============================================================================
- Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
-
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/iteration/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/facilities/intercept.hpp>
-
-#include <boost/utility/result_of.hpp>
-
-#include <boost/fusion/container/vector/vector.hpp>
-
-#include <boost/fusion/functional/adapter/limits.hpp>
-#include <boost/fusion/functional/adapter/detail/access.hpp>
-
-namespace boost { namespace fusion
-{
- template <class Function> class unfused_rvalue_args;
-
- //----- ---- --- -- - - - -
-
- template <class Function> class unfused_rvalue_args
- {
- Function fnc_transformed;
-
- typedef typename detail::qf_c<Function>::type function_c;
- typedef typename detail::qf<Function>::type function;
-
- typedef typename detail::call_param<Function>::type func_const_fwd_t;
-
- public:
-
- inline explicit unfused_rvalue_args(func_const_fwd_t f = function())
- : fnc_transformed(f)
- { }
-
- template <typename Sig>
- struct result;
-
- typedef typename boost::result_of<
- function_c(fusion::vector0 &) >::type call_const_0_result;
-
- inline call_const_0_result operator()() const
- {
- fusion::vector0 arg;
- return this->fnc_transformed(arg);
- }
-
- typedef typename boost::result_of<
- function(fusion::vector0 &) >::type call_0_result;
-
- inline call_0_result operator()()
- {
- fusion::vector0 arg;
- return this->fnc_transformed(arg);
- }
-
- #define BOOST_PP_FILENAME_1 \
- <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
- #define BOOST_PP_ITERATION_LIMITS \
- (1,BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY)
- #include BOOST_PP_ITERATE()
- };
-}}
-
-namespace boost
-{
- template<class F>
- struct result_of<boost::fusion::unfused_rvalue_args<F> const ()>
- {
- typedef typename boost::fusion::unfused_rvalue_args<F>::call_const_0_result type;
- };
- template<class F>
- struct result_of<boost::fusion::unfused_rvalue_args<F>()>
- {
- typedef typename boost::fusion::unfused_rvalue_args<F>::call_0_result type;
- };
-}
-
-#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP_INCLUDED
-#else // defined(BOOST_PP_IS_ITERATING)
-////////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-////////////////////////////////////////////////////////////////////////////////
-#define N BOOST_PP_ITERATION()
-
- template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
- struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) >
- : boost::result_of< function_c(
- BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
- typename detail::cref<T,>::type BOOST_PP_INTERCEPT) > & )>
- { };
-
- template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
- struct result< Self (BOOST_PP_ENUM_PARAMS(N,T)) >
- : boost::result_of< function(
- BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
- typename detail::cref<T,>::type BOOST_PP_INTERCEPT) > & )>
- { };
-
- template <BOOST_PP_ENUM_PARAMS(N,typename T)>
- inline typename boost::result_of<function_c(BOOST_PP_CAT(fusion::vector,N)
- <BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& BOOST_PP_INTERCEPT)> & )>::type
- operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a)) const
- {
- BOOST_PP_CAT(fusion::vector,N)<
- BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& BOOST_PP_INTERCEPT) >
- arg(BOOST_PP_ENUM_PARAMS(N,a));
- return this->fnc_transformed(arg);
- }
-
- template <BOOST_PP_ENUM_PARAMS(N,typename T)>
- inline typename boost::result_of<function(BOOST_PP_CAT(fusion::vector,N)
- <BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& BOOST_PP_INTERCEPT)> & )>::type
- operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a))
- {
- BOOST_PP_CAT(fusion::vector,N)<
- BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& BOOST_PP_INTERCEPT) >
- arg(BOOST_PP_ENUM_PARAMS(N,a));
- return this->fnc_transformed(arg);
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-#endif
-

Modified: trunk/boost/fusion/functional/generation.hpp
==============================================================================
--- trunk/boost/fusion/functional/generation.hpp (original)
+++ trunk/boost/fusion/functional/generation.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
@@ -12,8 +12,6 @@
 #include <boost/fusion/functional/generation/make_fused.hpp>
 #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
 #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
-#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
-#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
-#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
+#include <boost/fusion/functional/generation/make_unfused.hpp>
 
 #endif

Added: trunk/boost/fusion/functional/generation/make_unfused.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/fusion/functional/generation/make_unfused.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ Copyright (c) 2007 Tobias Schwinger
+
+ Use modification and distribution are 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_HPP_INCLUDED
+
+#include <boost/fusion/functional/adapter/unfused.hpp>
+
+#define BOOST_FUSION_CLASS_TPL_NAME unfused
+#include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+
+#endif
+

Deleted: trunk/boost/fusion/functional/generation/make_unfused_generic.hpp
==============================================================================
--- trunk/boost/fusion/functional/generation/make_unfused_generic.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
+++ (empty file)
@@ -1,18 +0,0 @@
-/*=============================================================================
- Copyright (c) 2007 Tobias Schwinger
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP_INCLUDED
-
-#include <boost/fusion/functional/adapter/unfused_generic.hpp>
-
-#define BOOST_FUSION_CLASS_TPL_NAME unfused_generic
-#include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
-
-#endif
-

Deleted: trunk/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp
==============================================================================
--- trunk/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
+++ (empty file)
@@ -1,18 +0,0 @@
-/*=============================================================================
- Copyright (c) 2007 Tobias Schwinger
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP_INCLUDED
-
-#include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
-
-#define BOOST_FUSION_CLASS_TPL_NAME unfused_lvalue_args
-#include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
-
-#endif
-

Deleted: trunk/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp
==============================================================================
--- trunk/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
+++ (empty file)
@@ -1,18 +0,0 @@
-/*=============================================================================
- Copyright (c) 2007 Tobias Schwinger
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP_INCLUDED
-
-#include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
-
-#define BOOST_FUSION_CLASS_TPL_NAME unfused_rvalue_args
-#include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
-
-#endif
-

Modified: trunk/boost/fusion/support/deduce.hpp
==============================================================================
--- trunk/boost/fusion/support/deduce.hpp (original)
+++ trunk/boost/fusion/support/deduce.hpp 2009-02-22 01:23:56 EST (Sun, 22 Feb 2009)
@@ -88,6 +88,18 @@
     // Keep references on arrays, even if const
 
     template <typename T, int N>
+ struct deduce<T(&)[N]>
+ {
+ typedef T(&type)[N];
+ };
+
+ template <typename T, int N>
+ struct deduce<volatile T(&)[N]>
+ {
+ typedef volatile T(&type)[N];
+ };
+
+ template <typename T, int N>
     struct deduce<const T(&)[N]>
     {
         typedef const T(&type)[N];


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk