Boost logo

Boost-Commit :

From: eric_at_[hidden]
Date: 2007-12-02 19:30:59


Author: eric_niebler
Date: 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
New Revision: 41612
URL: http://svn.boost.org/trac/boost/changeset/41612

Log:
remove the distinction between raw and function transforms
Text files modified:
   branches/proto/v3/boost/xpressive/detail/static/grammar.hpp | 25 ++++-----
   branches/proto/v3/boost/xpressive/proto/fusion.hpp | 21 +++----
   branches/proto/v3/boost/xpressive/proto/make_expr.hpp | 22 +++-----
   branches/proto/v3/boost/xpressive/proto/matches.hpp | 49 ++++++++-----------
   branches/proto/v3/boost/xpressive/proto/proto_fwd.hpp | 22 +-------
   branches/proto/v3/boost/xpressive/proto/transform/arg.hpp | 24 ++++-----
   branches/proto/v3/boost/xpressive/proto/transform/call.hpp | 15 ++---
   branches/proto/v3/boost/xpressive/proto/transform/fold.hpp | 18 +++----
   branches/proto/v3/boost/xpressive/proto/transform/fold_tree.hpp | 32 +++++-------
   branches/proto/v3/boost/xpressive/proto/transform/when.hpp | 99 +++++++++++++--------------------------
   branches/proto/v3/libs/xpressive/proto/example/mixed.cpp | 2
   branches/proto/v3/libs/xpressive/proto/example/vec3.cpp | 2
   branches/proto/v3/libs/xpressive/proto/test/examples.cpp | 8 +-
   branches/proto/v3/libs/xpressive/proto/test/main.cpp | 4
   14 files changed, 137 insertions(+), 206 deletions(-)

Modified: branches/proto/v3/boost/xpressive/detail/static/grammar.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/detail/static/grammar.hpp (original)
+++ branches/proto/v3/boost/xpressive/detail/static/grammar.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -17,7 +17,6 @@
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/assert.hpp>
 #include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/apply_wrap.hpp>
 #include <boost/mpl/next_prior.hpp>
 #include <boost/fusion/include/cons.hpp>
 #include <boost/xpressive/proto/proto.hpp>
@@ -143,7 +142,7 @@
           : mpl::true_
         {};
 
- struct as_matcher : function_transform
+ struct as_matcher : transform_base
         {
             template<typename Sig>
             struct result;
@@ -161,7 +160,7 @@
             }
         };
 
- struct get_width : function_transform
+ struct get_width : transform_base
         {
             typedef std::size_t result_type;
 
@@ -172,7 +171,7 @@
             }
         };
 
- struct mark_number : function_transform
+ struct mark_number : transform_base
         {
             typedef int result_type;
 
@@ -183,7 +182,7 @@
             }
         };
 
- struct get_hidden_mark : function_transform
+ struct get_hidden_mark : transform_base
         {
             typedef int result_type;
 
@@ -194,7 +193,7 @@
             }
         };
 
- struct traits : function_transform
+ struct traits : transform_base
         {
             template<typename Sig>
             struct result;
@@ -213,7 +212,7 @@
             }
         };
 
- struct newline : function_transform
+ struct newline : transform_base
         {
             template<typename Sig>
             struct result;
@@ -232,7 +231,7 @@
             }
         };
 
- struct as_posix_charset : function_transform
+ struct as_posix_charset : transform_base
         {
             template<typename Sig>
             struct result;
@@ -271,7 +270,7 @@
 
         // Place a head and a tail in sequence, if it's not
         // already in sequence.
- struct in_sequence : function_transform
+ struct in_sequence : transform_base
         {
             template<typename Sig>
             struct result;
@@ -339,7 +338,7 @@
>
         {};
         
- struct fill_list_set : function_transform
+ struct fill_list_set : transform_base
         {
             template<typename Sig>
             struct result;
@@ -379,7 +378,7 @@
             return const_cast<T &>(t);
         }
 
- struct merge_charset : function_transform
+ struct merge_charset : transform_base
         {
             template<typename Sig>
             struct result;
@@ -429,7 +428,7 @@
             }
         };
 
- struct invert : function_transform
+ struct invert : transform_base
         {
             template<typename Sig>
             struct result;
@@ -448,7 +447,7 @@
             }
         };
 
- struct modify : function_transform
+ struct modify : transform_base
         {
             template<typename Sig>
             struct result;

Modified: branches/proto/v3/boost/xpressive/proto/fusion.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto/fusion.hpp (original)
+++ branches/proto/v3/boost/xpressive/proto/fusion.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -135,22 +135,19 @@
     }
 
     template<>
- struct transform_category<functional::flatten>
- {
- typedef function_transform type;
- };
+ struct is_transform<functional::flatten>
+ : mpl::true_
+ {};
 
     template<>
- struct transform_category<functional::pop_front>
- {
- typedef function_transform type;
- };
+ struct is_transform<functional::pop_front>
+ : mpl::true_
+ {};
 
     template<>
- struct transform_category<functional::reverse>
- {
- typedef function_transform type;
- };
+ struct is_transform<functional::reverse>
+ : mpl::true_
+ {};
 
     functional::flatten const flatten = {};
 

Modified: branches/proto/v3/boost/xpressive/proto/make_expr.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto/make_expr.hpp (original)
+++ branches/proto/v3/boost/xpressive/proto/make_expr.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -13,7 +13,6 @@
 #include <boost/version.hpp>
 #include <boost/ref.hpp>
 #include <boost/mpl/if.hpp>
-#include <boost/mpl/apply_wrap.hpp>
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/type_traits/add_reference.hpp>
@@ -576,22 +575,19 @@
 
 
     template<typename Tag, typename Domain>
- struct transform_category<functional::make_expr<Tag, Domain> >
- {
- typedef function_transform type;
- };
+ struct is_transform<functional::make_expr<Tag, Domain> >
+ : mpl::true_
+ {};
 
     template<typename Tag, typename Domain>
- struct transform_category<functional::unpack_expr<Tag, Domain> >
- {
- typedef function_transform type;
- };
+ struct is_transform<functional::unpack_expr<Tag, Domain> >
+ : mpl::true_
+ {};
 
     template<typename Tag, typename Domain>
- struct transform_category<functional::unfused_expr<Tag, Domain> >
- {
- typedef function_transform type;
- };
+ struct is_transform<functional::unfused_expr<Tag, Domain> >
+ : mpl::true_
+ {};
 
 }}
 

Modified: branches/proto/v3/boost/xpressive/proto/matches.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto/matches.hpp (original)
+++ branches/proto/v3/boost/xpressive/proto/matches.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -16,7 +16,6 @@
 #include <boost/mpl/assert.hpp>
 #include <boost/mpl/identity.hpp>
 #include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/apply_wrap.hpp>
 #include <boost/type_traits.hpp>
 #include <boost/xpressive/proto/proto_fwd.hpp>
 #include <boost/xpressive/proto/transform/arg.hpp>
@@ -429,7 +428,7 @@
         } // namespace detail
 
         template<typename... Alts>
- struct or_ : raw_transform
+ struct or_ : transform_base
         {
             typedef or_ proto_base_expr;
 
@@ -461,7 +460,7 @@
 
         // if_
         template<typename If, typename Then, typename Else>
- struct if_ : raw_transform
+ struct if_ : transform_base
         {
             typedef if_ proto_base_expr;
 
@@ -500,7 +499,7 @@
         };
 
         template<typename Cases>
- struct switch_ : raw_transform
+ struct switch_ : transform_base
         {
             typedef switch_ proto_base_expr;
 
@@ -539,40 +538,34 @@
     }
 
     template<typename... Args>
- struct transform_category<or_<Args...> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<or_<Args...> >
+ : mpl::true_
+ {};
 
     template<typename... Args>
- struct transform_category<and_<Args...> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<and_<Args...> >
+ : mpl::true_
+ {};
 
     template<typename Grammar>
- struct transform_category<not_<Grammar> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<not_<Grammar> >
+ : mpl::true_
+ {};
 
     template<typename If, typename Then, typename Else>
- struct transform_category<if_<If, Then, Else> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<if_<If, Then, Else> >
+ : mpl::true_
+ {};
 
     template<typename Grammar>
- struct transform_category<vararg<Grammar> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<vararg<Grammar> >
+ : mpl::true_
+ {};
 
     template<>
- struct transform_category<_>
- {
- typedef raw_transform type;
- };
+ struct is_transform<_>
+ : mpl::true_
+ {};
 
 }}
 

Modified: branches/proto/v3/boost/xpressive/proto/proto_fwd.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto/proto_fwd.hpp (original)
+++ branches/proto/v3/boost/xpressive/proto/proto_fwd.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -327,33 +327,21 @@
     using control::N;
 
     template<typename T>
- struct transform_category;
+ struct is_transform;
 
     template<typename T>
     struct is_aggregate;
 
     namespace transform
     {
- // Transforms can be of these 3 types
- struct no_transform
- {};
-
- struct raw_transform
+ struct transform_base
         {
- typedef void proto_raw_transform_;
- };
-
- struct function_transform
- {
- typedef void proto_function_transform_;
+ typedef void proto_is_transform_;
         };
 
         template<typename Fun, typename... Args>
         struct call;
 
- template<typename Trans, typename... Args>
- struct apply;
-
         template<typename Sequence, typename State, typename Fun>
         struct fold;
 
@@ -420,9 +408,7 @@
     using transform::reverse_fold;
     using transform::fold_tree;
     using transform::reverse_fold_tree;
- using transform::no_transform;
- using transform::raw_transform;
- using transform::function_transform;
+ using transform::transform_base;
 
     namespace context
     {

Modified: branches/proto/v3/boost/xpressive/proto/transform/arg.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto/transform/arg.hpp (original)
+++ branches/proto/v3/boost/xpressive/proto/transform/arg.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -18,7 +18,7 @@
     namespace transform
     {
 
- struct _expr : raw_transform
+ struct _expr : transform_base
         {
             template<typename Sig>
             struct result;
@@ -37,7 +37,7 @@
             }
         };
 
- struct _state : raw_transform
+ struct _state : transform_base
         {
             template<typename Sig>
             struct result;
@@ -56,7 +56,7 @@
             }
         };
 
- struct _visitor : raw_transform
+ struct _visitor : transform_base
         {
             template<typename Sig>
             struct result;
@@ -76,7 +76,7 @@
         };
 
         template<int I>
- struct _arg_c : raw_transform
+ struct _arg_c : transform_base
         {
             template<typename Sig>
             struct result;
@@ -110,7 +110,7 @@
         typedef _arg1 _right;
 
         template<typename T>
- struct always : raw_transform
+ struct always : transform_base
         {
             template<typename Sig>
             struct result;
@@ -130,16 +130,14 @@
     }
 
     template<typename T>
- struct transform_category<transform::always<T> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<transform::always<T> >
+ : mpl::true_
+ {};
 
     template<int I>
- struct transform_category<transform::_arg_c<I> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<transform::_arg_c<I> >
+ : mpl::true_
+ {};
 
 }}
 

Modified: branches/proto/v3/boost/xpressive/proto/transform/call.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto/transform/call.hpp (original)
+++ branches/proto/v3/boost/xpressive/proto/transform/call.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -135,7 +135,7 @@
         }
         
         template<typename Fun, typename... Args>
- struct call : raw_transform
+ struct call : transform_base
         {
             template<typename Sig>
             struct result;
@@ -157,7 +157,7 @@
         };
         
         template<typename Fun, typename Arg0>
- struct call<Fun, Arg0> : raw_transform
+ struct call<Fun, Arg0> : transform_base
         {
             template<typename Sig>
             struct result;
@@ -185,7 +185,7 @@
         };
         
         template<typename Fun, typename Arg0, typename Arg1>
- struct call<Fun, Arg0, Arg1> : raw_transform
+ struct call<Fun, Arg0, Arg1> : transform_base
         {
             template<typename Sig>
             struct result;
@@ -213,7 +213,7 @@
         };
         
         template<typename Fun, typename Arg0, typename Arg1, typename Arg2>
- struct call<Fun, Arg0, Arg1, Arg2> : raw_transform
+ struct call<Fun, Arg0, Arg1, Arg2> : transform_base
         {
             template<typename Sig>
             struct result;
@@ -250,10 +250,9 @@
     }
 
     template<typename Fun, typename... Args>
- struct transform_category<transform::call<Fun, Args...> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<transform::call<Fun, Args...> >
+ : mpl::true_
+ {};
 
 }}
 

Modified: branches/proto/v3/boost/xpressive/proto/transform/fold.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto/transform/fold.hpp (original)
+++ branches/proto/v3/boost/xpressive/proto/transform/fold.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -58,7 +58,7 @@
                 Visitor &v_;
             };
 
- struct reverse : function_transform
+ struct reverse : transform_base
             {
                 template<typename Sig> struct result;
 
@@ -78,7 +78,7 @@
         } // namespace detail
 
         template<typename Sequence, typename State0, typename Fun>
- struct fold : raw_transform
+ struct fold : transform_base
         {
             template<typename Sig>
             struct result;
@@ -113,16 +113,14 @@
     }
 
     template<typename Sequence, typename State, typename Fun>
- struct transform_category<transform::fold<Sequence, State, Fun> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<transform::fold<Sequence, State, Fun> >
+ : mpl::true_
+ {};
 
     template<typename Sequence, typename State, typename Fun>
- struct transform_category<transform::reverse_fold<Sequence, State, Fun> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<transform::reverse_fold<Sequence, State, Fun> >
+ : mpl::true_
+ {};
 
 }}
 

Modified: branches/proto/v3/boost/xpressive/proto/transform/fold_tree.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto/transform/fold_tree.hpp (original)
+++ branches/proto/v3/boost/xpressive/proto/transform/fold_tree.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -44,7 +44,7 @@
 
         template<typename Sequence, typename State0, typename Fun>
         struct fold_tree
- : raw_transform
+ : transform_base
         {
             template<typename Sig>
             struct result;
@@ -75,7 +75,7 @@
 
         template<typename Sequence, typename State0, typename Fun>
         struct reverse_fold_tree
- : raw_transform
+ : transform_base
         {
             template<typename Sig>
             struct result;
@@ -106,28 +106,24 @@
     }
 
     template<typename Sequence, typename State0, typename Fun>
- struct transform_category<transform::fold_tree<Sequence, State0, Fun> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<transform::fold_tree<Sequence, State0, Fun> >
+ : mpl::true_
+ {};
 
     template<typename Grammar, typename Fun>
- struct transform_category<transform::detail::fold_tree_<Grammar, Fun> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<transform::detail::fold_tree_<Grammar, Fun> >
+ : mpl::true_
+ {};
 
     template<typename Sequence, typename State0, typename Fun>
- struct transform_category<transform::reverse_fold_tree<Sequence, State0, Fun> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<transform::reverse_fold_tree<Sequence, State0, Fun> >
+ : mpl::true_
+ {};
 
     template<typename Grammar, typename Fun>
- struct transform_category<transform::detail::reverse_fold_tree_<Grammar, Fun> >
- {
- typedef raw_transform type;
- };
+ struct is_transform<transform::detail::reverse_fold_tree_<Grammar, Fun> >
+ : mpl::true_
+ {};
 
 }}
 

Modified: branches/proto/v3/boost/xpressive/proto/transform/when.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto/transform/when.hpp (original)
+++ branches/proto/v3/boost/xpressive/proto/transform/when.hpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -34,46 +34,36 @@
     namespace detail
     {
         template<typename T, typename EnableIf = void>
- struct transform_category2_
- {
- typedef no_transform type;
- };
-
- template<typename T>
- struct transform_category2_<T, typename T::proto_raw_transform_>
- {
- typedef raw_transform type;
- };
+ struct is_transform2_
+ : mpl::false_
+ {};
 
         template<typename T>
- struct transform_category2_<T, typename T::proto_function_transform_>
- {
- typedef function_transform type;
- };
+ struct is_transform2_<T, typename T::proto_is_transform_>
+ : mpl::true_
+ {};
 
         template<typename T>
- struct transform_category_
- : transform_category2_<T>
+ struct is_transform_
+ : is_transform2_<T>
         {};
 
         template<template<typename...> class T, typename... Args>
- struct transform_category_<T<Args...> >
- {
- typedef no_transform type;
- };
+ struct is_transform_<T<Args...> >
+ : mpl::false_
+ {};
     }
 
     template<typename T>
- struct transform_category
- : proto::detail::transform_category_<T>
+ struct is_transform
+ : proto::detail::is_transform_<T>
     {};
 
     // work around GCC bug
     template<typename Tag, typename Args, long N>
- struct transform_category<expr<Tag, Args, N> >
- {
- typedef no_transform type;
- };
+ struct is_transform<expr<Tag, Args, N> >
+ : mpl::false_
+ {};
 
     namespace transform
     {
@@ -110,7 +100,7 @@
             };
 
             template<typename R, typename Expr, typename State, typename Visitor
- , typename Category = typename transform_category<R>::type
+ , bool IsTransform = is_transform<R>::value
>
             struct apply_lambda_;
 
@@ -130,28 +120,28 @@
             {};
 
             template<typename R, typename Expr, typename State, typename Visitor>
- struct apply_lambda_<R, Expr, State, Visitor, no_transform>
+ struct apply_lambda_<R, Expr, State, Visitor, false>
               : apply_lambda_aux_<R, Expr, State, Visitor>
             {};
 
             template<typename R, typename Expr, typename State, typename Visitor>
- struct apply_lambda_<R, Expr, State, Visitor, raw_transform>
+ struct apply_lambda_<R, Expr, State, Visitor, true>
               : boost::result_of<R(Expr, State, Visitor)>
             {};
 
             template<typename R, typename... Args, typename Expr, typename State, typename Visitor>
- struct apply_lambda_<R(Args...), Expr, State, Visitor, no_transform>
+ struct apply_lambda_<R(Args...), Expr, State, Visitor, false>
               : boost::result_of<when<_, R(Args...)>(Expr, State, Visitor)>
             {};
 
             template<typename R, typename... Args, typename Expr, typename State, typename Visitor>
- struct apply_lambda_<R(*)(Args...), Expr, State, Visitor, no_transform>
+ struct apply_lambda_<R(*)(Args...), Expr, State, Visitor, false>
               : boost::result_of<when<_, R(*)(Args...)>(Expr, State, Visitor)>
             {};
 
             // work around GCC bug
             template<typename Tag, typename Args, long N, typename Expr, typename State, typename Visitor>
- struct apply_lambda_<expr<Tag, Args, N>, Expr, State, Visitor, no_transform>
+ struct apply_lambda_<expr<Tag, Args, N>, Expr, State, Visitor, false>
             {
                 typedef expr<Tag, Args, N> type;
                 typedef void not_applied_;
@@ -182,7 +172,7 @@
                 typename Expr
               , typename State
               , typename Visitor
- , typename TransformCategory
+ , bool IsTransform
               , typename Return
               , typename... Args
>
@@ -192,51 +182,30 @@
 
                 // If the result of applying the lambda on the return type is a transform,
                 // apply the transform rather than trying to construct it.
- typedef typename proto::detail::transform_category2_<lambda_type>::type lambda_category;
-
                 typedef
                     typename mpl::eval_if<
- is_same<no_transform, lambda_category>
+ proto::detail::is_transform2_<lambda_type>
+ , apply<Expr, State, Visitor, true, lambda_type, Args...>
                       , mpl::identity<lambda_type>
- , apply<Expr, State, Visitor, lambda_category, lambda_type, Args...>
>::type
                 type;
 
                 static type call(Expr const &expr, State const &state, Visitor &visitor)
                 {
- return apply::call_(expr, state, visitor, is_same<no_transform, lambda_category>());
+ return apply::call_(expr, state, visitor, proto::detail::is_transform2_<lambda_type>());
                 }
 
             private:
- static type call_(Expr const &expr, State const &state, Visitor &visitor, mpl::true_)
+ static type call_(Expr const &expr, State const &state, Visitor &visitor, mpl::false_)
                 {
                     return detail::construct_<type>(
                         when<_, Args>()(expr, state, visitor)...
                     );
                 }
 
- static type call_(Expr const &expr, State const &state, Visitor &visitor, mpl::false_)
- {
- return apply<Expr, State, Visitor, lambda_category, lambda_type, Args...>::call(expr, state, visitor);
- }
- };
-
- template<
- typename Expr
- , typename State
- , typename Visitor
- , typename Return
- , typename... Args
- >
- struct apply<Expr, State, Visitor, function_transform, Return, Args...>
- {
- typedef typename boost::result_of<
- transform::call<Return, Args...>(Expr, State, Visitor)
- >::type type;
-
- static type call(Expr const &expr, State const &state, Visitor &visitor)
+ static type call_(Expr const &expr, State const &state, Visitor &visitor, mpl::true_)
                 {
- return transform::call<Return, Args...>()(expr, state, visitor);
+ return apply<Expr, State, Visitor, true, lambda_type, Args...>::call(expr, state, visitor);
                 }
             };
 
@@ -247,7 +216,7 @@
               , typename Return
               , typename... Args
>
- struct apply<Expr, State, Visitor, raw_transform, Return, Args...>
+ struct apply<Expr, State, Visitor, true, Return, Args...>
             {
                 typedef typename boost::result_of<
                     transform::call<Return, Args...>(Expr, State, Visitor)
@@ -275,7 +244,7 @@
         // (possibly lambda) type and constructor arguments.
         template<typename Grammar, typename Return, typename... Args>
         struct when<Grammar, Return(Args...)>
- : raw_transform
+ : transform_base
         {
             typedef typename Grammar::proto_base_expr proto_base_expr;
 
@@ -284,7 +253,7 @@
 
             template<typename This, typename Expr, typename State, typename Visitor>
             struct result<This(Expr, State, Visitor)>
- : detail::apply<Expr, State, Visitor, typename transform_category<Return>::type, Return, Args...>
+ : detail::apply<Expr, State, Visitor, is_transform<Return>::value, Return, Args...>
             {};
 
             // BUGBUG makes a temporary
@@ -298,7 +267,7 @@
 
         template<typename Grammar, typename Return, typename... Args>
         struct when<Grammar, Return(*)(Args...)>
- : raw_transform
+ : transform_base
         {
             typedef typename Grammar::proto_base_expr proto_base_expr;
 
@@ -307,7 +276,7 @@
 
             template<typename This, typename Expr, typename State, typename Visitor>
             struct result<This(Expr, State, Visitor)>
- : detail::apply<Expr, State, Visitor, typename transform_category<Return>::type, Return, Args...>
+ : detail::apply<Expr, State, Visitor, is_transform<Return>::value, Return, Args...>
             {};
 
             template<typename Expr, typename State, typename Visitor>

Modified: branches/proto/v3/libs/xpressive/proto/example/mixed.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto/example/mixed.cpp (original)
+++ branches/proto/v3/libs/xpressive/proto/example/mixed.cpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -39,7 +39,7 @@
     Iter it;
 };
 
-struct begin : proto::function_transform
+struct begin : proto::transform_base
 {
     template<class Sig> struct result;
     template<class This, class Cont>

Modified: branches/proto/v3/libs/xpressive/proto/example/vec3.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto/example/vec3.cpp (original)
+++ branches/proto/v3/libs/xpressive/proto/example/vec3.cpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -62,7 +62,7 @@
 };
 
 struct one : mpl::int_<1> {};
-struct iplus : std::plus<int>, function_transform {};
+struct iplus : std::plus<int>, transform_base {};
 
 // Here is a transform that does the same thing as the above context.
 // It demonstrates the use of the std::plus<> function object

Modified: branches/proto/v3/libs/xpressive/proto/test/examples.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto/test/examples.cpp (original)
+++ branches/proto/v3/libs/xpressive/proto/test/examples.cpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -61,10 +61,10 @@
 // child expression.
 struct unary_arity
   /*<< Custom transforms should inherit from
- raw_transform. In some cases, (e.g., when the transform
+ transform_base. In some cases, (e.g., when the transform
   is a template), it is also necessary to specialize
- the proto::transform_category<> trait. >>*/
- : raw_transform
+ the proto::is_transform<> trait. >>*/
+ : transform_base
 {
     template<typename Sig>
     struct result;
@@ -100,7 +100,7 @@
   transform_base. In some cases, (e.g., when the transform
   is a template), it is also necessary to specialize
   the proto::is_transform<> trait. >>*/
- : raw_transform
+ : transform_base
 {
     template<typename Sig>
     struct result;

Modified: branches/proto/v3/libs/xpressive/proto/test/main.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto/test/main.cpp (original)
+++ branches/proto/v3/libs/xpressive/proto/test/main.cpp 2007-12-02 19:30:57 EST (Sun, 02 Dec 2007)
@@ -47,7 +47,7 @@
 struct pair
 {};
 
-struct make_negate : function_transform
+struct make_negate : transform_base
 {
     template<typename Sig> struct result;
 
@@ -65,7 +65,7 @@
     }
 };
 
-//struct make_cons : function_transform
+//struct make_cons : transform_base
 //{
 // template<typename Sig> struct result;
 //


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