$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: eric_at_[hidden]
Date: 2007-11-27 16:36:54
Author: eric_niebler
Date: 2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
New Revision: 41424
URL: http://svn.boost.org/trac/boost/changeset/41424
Log:
rename case_ to when
Added:
   branches/proto/v3/boost/xpressive/proto3/transform/when.hpp
      - copied, changed from r41422, /branches/proto/v3/boost/xpressive/proto3/transform/case.hpp
Removed:
   branches/proto/v3/boost/xpressive/proto3/transform/case.hpp
Text files modified: 
   branches/proto/v3/boost/xpressive/detail/static/grammar2.hpp     |    42 ++++++++++++++++++++--------------------
   branches/proto/v3/boost/xpressive/proto3/matches.hpp             |    14 ++++++------                            
   branches/proto/v3/boost/xpressive/proto3/proto_fwd.hpp           |     4 +-                                      
   branches/proto/v3/boost/xpressive/proto3/transform.hpp           |     2                                         
   branches/proto/v3/boost/xpressive/proto3/transform/apply.hpp     |    26 ++++++++++++------------                
   branches/proto/v3/boost/xpressive/proto3/transform/bind.hpp      |     4 +-                                      
   branches/proto/v3/boost/xpressive/proto3/transform/fold.hpp      |    10 ++++----                                
   branches/proto/v3/boost/xpressive/proto3/transform/fold_tree.hpp |     8 +++---                                  
   branches/proto/v3/boost/xpressive/proto3/transform/when.hpp      |    14 ++++++------                            
   branches/proto/v3/libs/xpressive/proto3/example/calc3.cpp        |     6 ++--                                    
   branches/proto/v3/libs/xpressive/proto3/example/mixed.cpp        |     8 +++---                                  
   branches/proto/v3/libs/xpressive/proto3/example/rgb.cpp          |     6 ++--                                    
   branches/proto/v3/libs/xpressive/proto3/example/vec3.cpp         |     6 ++--                                    
   branches/proto/v3/libs/xpressive/proto3/test/examples.cpp        |    40 +++++++++++++++++++-------------------  
   branches/proto/v3/libs/xpressive/proto3/test/lambda.cpp          |     6 ++--                                    
   branches/proto/v3/libs/xpressive/proto3/test/main.cpp            |    24 +++++++++++-----------                  
   branches/proto/v3/libs/xpressive/proto3/test/toy_spirit.cpp      |    16 +++++++-------                          
   17 files changed, 118 insertions(+), 118 deletions(-)
Modified: branches/proto/v3/boost/xpressive/detail/static/grammar2.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/detail/static/grammar2.hpp	(original)
+++ branches/proto/v3/boost/xpressive/detail/static/grammar2.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -253,6 +253,14 @@
               : apply_<Gram, _make_shift_right(_, alternate_end_matcher()), no_next()>
             {};
 
+            struct as_alternates_list
+              : reverse_fold_tree<
+                    _
+                  , fusion::nil()
+                  , alternates_list<as_alternate, _state>(as_alternate, _state)
+                >
+            {};
+
             struct as_marker
               : apply_<
                     _
@@ -299,14 +307,14 @@
                 >
             {};
 
-            template<typename Tag, uint_t, uint_t>
+            template<typename Tag, uint_t = min_type<Tag>::value, uint_t = max_type<Tag>::value>
             struct as_default_repeat_impl
               : apply_<as_repeater<Tag>, as_marker(add_hidden_mark(_arg))>
             {};
 
             template<typename Tag, uint_t Max>
             struct as_default_repeat_impl<Tag, 0, Max>
-              : apply_<_, _make_logical_not(as_default_repeat_impl<generic_quant_tag<1, Max>, 1, Max>)>
+              : apply_<_, _make_logical_not(as_default_repeat_impl<generic_quant_tag<1, Max> >)>
             {};
 
             template<typename Tag>
@@ -316,7 +324,7 @@
 
             template<typename Tag>
             struct as_default_repeat
-              : as_default_repeat_impl<Tag, min_type<Tag>::value, max_type<Tag>::value>
+              : as_default_repeat_impl<Tag>
             {};
 
             struct as_simple_repeat
@@ -347,28 +355,20 @@
 
             template<typename Dummy>
             struct case_<tag::terminal, Dummy>
-              : proto::case_< terminal<_>, as_matcher(_arg, _visitor) >
+              : when< terminal<_>, as_matcher(_arg, _visitor) >
             {};
 
             template<typename Dummy>
             struct case_<tag::shift_right, Dummy>
-              : proto::case_<
+              : when<
                     shift_right<Gram, Gram>
                   , reverse_fold_tree<_, _state, in_sequence(Gram, _state) >
                 >
             {};
 
-            struct as_alternates_list
-              : reverse_fold_tree<
-                    _
-                  , fusion::nil()
-                  , alternates_list<as_alternate, _state>(as_alternate, _state)
-                >
-            {};
-
             template<typename Dummy>
             struct case_<tag::bitwise_or, Dummy>
-              : proto::case_<
+              : when<
                     bitwise_or<Gram, Gram>
                   , alternate_matcher<as_alternates_list, traits_type<_visitor> >(as_alternates_list)
                 >
@@ -376,29 +376,29 @@
 
             template<typename Dummy>
             struct case_<tag::dereference, Dummy>
-              : proto::case_<dereference<Gram>, as_repeat>
+              : when<dereference<Gram>, as_repeat>
             {};
 
             template<typename Dummy>
             struct case_<tag::posit, Dummy>
-              : proto::case_<posit<Gram>, as_repeat>
+              : when<posit<Gram>, as_repeat>
             {};
 
             template<uint_t Min, uint_t Max, typename Dummy>
             struct case_<generic_quant_tag<Min, Max>, Dummy>
-              : proto::case_<unary_expr<generic_quant_tag<Min, Max>, Gram>, as_repeat>
+              : when<unary_expr<generic_quant_tag<Min, Max>, Gram>, as_repeat>
             {};
 
             template<typename Dummy>
             struct case_<tag::logical_not, Dummy>
-              : proto::or_<
-                    proto::case_<
+              : or_<
+                    when<
                         logical_not<assign<terminal<mark_placeholder>, Gram> >
                       , optional_mark_matcher<as_alternate(_arg), greedy_t>(
                             as_alternate(_arg), mark_number(_arg(_left(_arg)))
                         )
                     >
-                  , proto::case_<
+                  , when<
                         logical_not<Gram>
                       , optional_matcher<as_alternate(_arg), greedy_t>(
                             as_alternate(_arg)
@@ -409,7 +409,7 @@
 
             template<typename Dummy>
             struct case_<tag::assign, Dummy>
-              : proto::case_<
+              : when<
                     assign<terminal<mark_placeholder>, Gram>
                   , Gram(as_marker)
                 >
Modified: branches/proto/v3/boost/xpressive/proto3/matches.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/matches.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/matches.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -367,7 +367,7 @@
             template<typename Expr, typename If, typename Then, typename Else>
             struct matches_<Expr, proto::if_<If, Then, Else> >
               : mpl::eval_if<
-                    typename mpl::apply_wrap3<case_<_, If>, Expr, mpl::void_, mpl::void_>::type
+                    typename mpl::apply_wrap3<when<_, If>, Expr, mpl::void_, mpl::void_>::type
                   , matches_<Expr, typename Then::proto_base_expr>
                   , matches_<Expr, typename Else::proto_base_expr>
                 >::type
@@ -463,9 +463,9 @@
             template<typename Expr, typename State, typename Visitor>
             struct apply
               : mpl::eval_if<
-                    typename mpl::apply_wrap3<case_<_, If>, Expr, State, Visitor>::type
-                  , mpl::apply_wrap3<case_<_, Then>, Expr, State, Visitor>
-                  , mpl::apply_wrap3<case_<_, Else>, Expr, State, Visitor>
+                    typename mpl::apply_wrap3<when<_, If>, Expr, State, Visitor>::type
+                  , mpl::apply_wrap3<when<_, Then>, Expr, State, Visitor>
+                  , mpl::apply_wrap3<when<_, Else>, Expr, State, Visitor>
                 >
             {};
 
@@ -475,9 +475,9 @@
             {
                 typedef
                     typename mpl::if_<
-                        typename mpl::apply_wrap3<case_<_, If>, Expr, State, Visitor>::type
-                      , case_<_, Then>
-                      , case_<_, Else>
+                        typename mpl::apply_wrap3<when<_, If>, Expr, State, Visitor>::type
+                      , when<_, Then>
+                      , when<_, Else>
                     >::type
                 branch;
 
Modified: branches/proto/v3/boost/xpressive/proto3/proto_fwd.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/proto_fwd.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/proto_fwd.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -368,7 +368,7 @@
         struct reverse_fold_tree;
 
         template<typename Grammar, typename Fun = Grammar>
-        struct case_;
+        struct when;
 
         struct _expr;
         struct _state;
@@ -396,7 +396,7 @@
         typedef _arg1 _right;
     }
 
-    using transform::case_;
+    using transform::when;
     using transform::_arg0;
     using transform::_arg1;
     using transform::_arg2;
Modified: branches/proto/v3/boost/xpressive/proto3/transform.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/transform.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/transform.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -12,8 +12,8 @@
 #include <boost/xpressive/proto3/transform/apply.hpp>
 #include <boost/xpressive/proto3/transform/arg.hpp>
 #include <boost/xpressive/proto3/transform/bind.hpp>
-#include <boost/xpressive/proto3/transform/case.hpp>
 #include <boost/xpressive/proto3/transform/fold.hpp>
 #include <boost/xpressive/proto3/transform/fold_tree.hpp>
+#include <boost/xpressive/proto3/transform/when.hpp>
 
 #endif
Modified: branches/proto/v3/boost/xpressive/proto3/transform/apply.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/transform/apply.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/transform/apply.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -36,7 +36,7 @@
             template<typename Expr, typename State, typename Visitor>
             struct apply
               : Trans::template apply<
-                    typename case_<_, ExprTfx>::template apply<Expr, State, Visitor>::type
+                    typename when<_, ExprTfx>::template apply<Expr, State, Visitor>::type
                   , State
                   , Visitor
                 >
@@ -47,7 +47,7 @@
             call(Expr const &expr, State const &state, Visitor &visitor)
             {
                 return Trans::call(
-                    case_<_, ExprTfx>::call(expr, state, visitor)
+                    when<_, ExprTfx>::call(expr, state, visitor)
                   , state
                   , visitor
                 );
@@ -60,8 +60,8 @@
             template<typename Expr, typename State, typename Visitor>
             struct apply
               : Trans::template apply<
-                    typename case_<_, ExprTfx>::template apply<Expr, State, Visitor>::type
-                  , typename case_<_, StateTfx>::template apply<Expr, State, Visitor>::type
+                    typename when<_, ExprTfx>::template apply<Expr, State, Visitor>::type
+                  , typename when<_, StateTfx>::template apply<Expr, State, Visitor>::type
                   , Visitor
                 >
             {};
@@ -71,8 +71,8 @@
             call(Expr const &expr, State const &state, Visitor &visitor)
             {
                 return Trans::call(
-                    case_<_, ExprTfx>::call(expr, state, visitor)
-                  , case_<_, StateTfx>::call(expr, state, visitor)
+                    when<_, ExprTfx>::call(expr, state, visitor)
+                  , when<_, StateTfx>::call(expr, state, visitor)
                   , visitor
                 );
             }
@@ -84,9 +84,9 @@
             template<typename Expr, typename State, typename Visitor>
             struct apply
               : Trans::template apply<
-                    typename case_<_, ExprTfx>::template apply<Expr, State, Visitor>::type
-                  , typename case_<_, StateTfx>::template apply<Expr, State, Visitor>::type
-                  , typename case_<_, VisitorTfx>::template apply<Expr, State, Visitor>::type
+                    typename when<_, ExprTfx>::template apply<Expr, State, Visitor>::type
+                  , typename when<_, StateTfx>::template apply<Expr, State, Visitor>::type
+                  , typename when<_, VisitorTfx>::template apply<Expr, State, Visitor>::type
                 >
             {};
 
@@ -94,11 +94,11 @@
             static typename apply<Expr, State, Visitor>::type
             call(Expr const &expr, State const &state, Visitor &visitor)
             {
-                typedef typename case_<_, VisitorTfx>::template apply<Expr, State, Visitor>::type visitor_type;
+                typedef typename when<_, VisitorTfx>::template apply<Expr, State, Visitor>::type visitor_type;
                 return Trans::call(
-                    case_<_, ExprTfx>::call(expr, state, visitor)
-                  , case_<_, StateTfx>::call(expr, state, visitor)
-                  , const_cast<visitor_type &>(as_lvalue(case_<_, VisitorTfx>::call(expr, state, visitor)))
+                    when<_, ExprTfx>::call(expr, state, visitor)
+                  , when<_, StateTfx>::call(expr, state, visitor)
+                  , const_cast<visitor_type &>(as_lvalue(when<_, VisitorTfx>::call(expr, state, visitor)))
                 );
             }
         };
Modified: branches/proto/v3/boost/xpressive/proto3/transform/bind.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/transform/bind.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/transform/bind.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -25,7 +25,7 @@
             template<typename Expr, typename State, typename Visitor>
             struct apply
               : boost::result_of<
-                    Fun(typename case_<_, Args>::template apply<Expr, State, Visitor>::type...)
+                    Fun(typename when<_, Args>::template apply<Expr, State, Visitor>::type...)
                 >
             {};
 
@@ -34,7 +34,7 @@
             call(Expr const &expr, State const &state, Visitor &visitor)
             {
                 Fun f;
-                return f(case_<_, Args>::call(expr, state, visitor)...);
+                return f(when<_, Args>::call(expr, state, visitor)...);
             }
         };
 
Deleted: branches/proto/v3/boost/xpressive/proto3/transform/case.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/transform/case.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
+++ (empty file)
@@ -1,316 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-/// \file transform.hpp
-/// Definition of case_ transform.
-//
-//  Copyright 2007 Eric Niebler. Distributed under 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)
-
-#ifndef BOOST_PROTO3_TRANSFORM_CASE_HPP_EAN_10_29_2007
-#define BOOST_PROTO3_TRANSFORM_CASE_HPP_EAN_10_29_2007
-
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/logical.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/aux_/has_type.hpp>
-#include <boost/type_traits.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/xpressive/proto3/proto_fwd.hpp>
-#include <boost/xpressive/proto3/transform/bind.hpp>
-#include <boost/xpressive/proto3/transform/apply.hpp>
-
-namespace boost { namespace proto
-{
-    template<typename T>
-    struct is_aggregate
-      : is_pod<T>
-    {};
-
-    template<typename Tag, typename Args, long N>
-    struct is_aggregate<expr<Tag, Args, N> >
-      : mpl::true_
-    {};
-
-    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;
-        };
-
-        template<typename T>
-        struct transform_category2_<T, typename T::proto_function_transform_>
-        {
-            typedef function_transform type;
-        };
-
-        template<typename T>
-        struct transform_category_
-          : transform_category2_<T>
-        {};
-
-        template<template<typename...> class T, typename... Args>
-        struct transform_category_<T<Args...> >
-        {
-            typedef no_transform type;
-        };
-    }
-
-    template<typename T>
-    struct transform_category
-      : proto::detail::transform_category_<T>
-    {};
-
-    // work around GCC bug
-    template<typename Tag, typename Args, long N>
-    struct transform_category<expr<Tag, Args, N> >
-    {
-        typedef no_transform type;
-    };
-
-    namespace transform
-    {
-        namespace detail
-        {
-            template<typename... T>
-            struct typelist
-            {
-                typedef void type;
-            };
-
-            template<typename T, bool HasType = mpl::aux::has_type<T>::value>
-            struct nested_type
-            {
-                typedef typename T::type type;
-            };
-
-            template<typename T>
-            struct nested_type<T, false>
-            {
-                typedef T type;
-            };
-
-            template<typename T, typename Args, typename EnableIf = void>
-            struct nested_type_if
-              : nested_type<T>
-            {};
-
-            template<typename T, typename... Args>
-            struct nested_type_if<T, typelist<Args...>, typename typelist<typename Args::not_applied_...>::type>
-            {
-                typedef T type;
-                typedef void not_applied_;
-            };
-
-            template<typename R, typename Expr, typename State, typename Visitor
-                , typename Category = typename transform_category<R>::type
-            >
-            struct apply_lambda_;
-
-            template<typename R, typename Expr, typename State, typename Visitor>
-            struct apply_lambda_aux_
-            {
-                typedef R type;
-                typedef void not_applied_;
-            };
-
-            template<template<typename...> class R, typename... Args, typename Expr, typename State, typename Visitor>
-            struct apply_lambda_aux_<R<Args...>, Expr, State, Visitor>
-              : nested_type_if<
-                    R<typename apply_lambda_<Args, Expr, State, Visitor>::type...>
-                  , typelist<apply_lambda_<Args, Expr, State, Visitor>...>
-                >
-            {};
-
-            template<typename R, typename Expr, typename State, typename Visitor>
-            struct apply_lambda_<R, Expr, State, Visitor, no_transform>
-              : 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>
-              : R::template apply<Expr, State, Visitor>
-            {};
-
-            template<typename R, typename... Args, typename Expr, typename State, typename Visitor>
-            struct apply_lambda_<R(Args...), Expr, State, Visitor, no_transform>
-              : case_<_, R(Args...)>::template apply<Expr, State, Visitor>
-            {};
-
-            template<typename R, typename... Args, typename Expr, typename State, typename Visitor>
-            struct apply_lambda_<R(*)(Args...), Expr, State, Visitor, no_transform>
-              : case_<_, R(*)(Args...)>::template apply<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>
-            {
-                typedef expr<Tag, Args, N> type;
-                typedef void not_applied_;
-            };
-
-            template<typename Type, typename... Args>
-            typename enable_if<is_aggregate<Type>, Type>::type
-            construct_(Args &&... args)
-            {
-                Type that = { args... };
-                return that;
-            }
-
-            template<typename Type, typename... Args>
-            typename disable_if<is_aggregate<Type>, Type>::type
-            construct_(Args &&... args)
-            {
-                return Type(args...);
-            }
-
-            template<typename Type>
-            Type construct_()
-            {
-                return Type();
-            }
-
-            template<
-                typename Expr
-              , typename State
-              , typename Visitor
-              , typename TransformCategory
-              , typename Return
-              , typename... Args
-            >
-            struct apply_
-            {
-                typedef typename apply_lambda_<Return, Expr, State, Visitor>::type lambda_type;
-
-                // 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>
-                      , 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>());
-                }
-
-            private:
-                static type call_(Expr const &expr, State const &state, Visitor &visitor, mpl::true_)
-                {
-                    return detail::construct_<type>(
-                        case_<_, Args>::call(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 bind<Return, Args...>::template apply<Expr, State, Visitor>::type type;
-
-                static type call(Expr const &expr, State const &state, Visitor &visitor)
-                {
-                    return bind<Return, Args...>::call(expr, state, visitor);
-                }
-            };
-
-            template<
-                typename Expr
-              , typename State
-              , typename Visitor
-              , typename Return
-              , typename... Args
-            >
-            struct apply_<Expr, State, Visitor, raw_transform, Return, Args...>
-            {
-                typedef typename transform::apply_<Return, Args...>::template apply<Expr, State, Visitor>::type type;
-
-                static type call(Expr const &expr, State const &state, Visitor &visitor)
-                {
-                    return transform::apply_<Return, Args...>::call(expr, state, visitor);
-                }
-            };
-
-        }
-
-        // Simple transform, takes a raw transform and
-        // applies it directly.
-        template<typename Grammar, typename Fun>
-        struct case_
-          : Fun
-        {
-            typedef typename Grammar::proto_base_expr proto_base_expr;
-        };
-
-        // Lambda-style transform, takes a raw or function-style
-        // transform with arguments and applies it, OR takes a
-        // (possibly lambda) type and constructor arguments.
-        template<typename Grammar, typename Return, typename... Args>
-        struct case_<Grammar, Return(Args...)>
-          : raw_transform
-        {
-            typedef typename Grammar::proto_base_expr proto_base_expr;
-
-            template<typename Expr, typename State, typename Visitor>
-            struct apply
-              : detail::apply_<Expr, State, Visitor, typename transform_category<Return>::type, Return, Args...>
-            {};
-
-            // BUGBUG makes a temporary
-            template<typename Expr, typename State, typename Visitor>
-            static typename apply<Expr, State, Visitor>::type
-            call(Expr const &expr, State const &state, Visitor &visitor)
-            {
-                return apply<Expr, State, Visitor>::call(expr, state, visitor);
-            }
-        };
-
-        template<typename Grammar, typename Return, typename... Args>
-        struct case_<Grammar, Return(*)(Args...)>
-          : raw_transform
-        {
-            typedef typename Grammar::proto_base_expr proto_base_expr;
-
-            template<typename Expr, typename State, typename Visitor>
-            struct apply
-              : detail::apply_<Expr, State, Visitor, typename transform_category<Return>::type, Return, Args...>
-            {};
-
-            template<typename Expr, typename State, typename Visitor>
-            static typename apply<Expr, State, Visitor>::type
-            call(Expr const &expr, State const &state, Visitor &visitor)
-            {
-                return apply<Expr, State, Visitor>::call(expr, state, visitor);
-            }
-        };
-
-    }
-
-}}
-
-#endif
Modified: branches/proto/v3/boost/xpressive/proto3/transform/fold.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/transform/fold.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/transform/fold.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -37,7 +37,7 @@
                   : v_(v)
                 {}
 
-                typedef case_<_, Transform> Tfx;
+                typedef when<_, Transform> Tfx;
 
                 template<typename Sig>
                 struct result;
@@ -83,8 +83,8 @@
             template<typename Expr, typename State, typename Visitor>
             struct apply
               : fusion::result_of::fold<
-                    typename case_<_, Sequence>::template apply<Expr, State, Visitor>::type
-                  , typename case_<_, State0>::template apply<Expr, State, Visitor>::type
+                    typename when<_, Sequence>::template apply<Expr, State, Visitor>::type
+                  , typename when<_, State0>::template apply<Expr, State, Visitor>::type
                   , detail::as_callable<Fun, Visitor>
                 >
             {};
@@ -95,8 +95,8 @@
             {
                 detail::as_callable<Fun, Visitor> fun(visitor);
                 return fusion::fold(
-                    case_<_, Sequence>::call(expr, state, visitor)
-                  , case_<_, State0>::call(expr, state, visitor)
+                    when<_, Sequence>::call(expr, state, visitor)
+                  , when<_, State0>::call(expr, state, visitor)
                   , fun
                 );
             }
Modified: branches/proto/v3/boost/xpressive/proto3/transform/fold_tree.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/transform/fold_tree.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/transform/fold_tree.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -27,16 +27,16 @@
             template<typename Grammar, typename Fun>
             struct fold_tree_
               : or_<
-                    case_<Grammar, fold<_, _state, fold_tree_<Grammar, Fun> > >
-                  , case_<_, Fun>
+                    when<Grammar, fold<_, _state, fold_tree_<Grammar, Fun> > >
+                  , when<_, Fun>
                 >
             {};
 
             template<typename Grammar, typename Fun>
             struct reverse_fold_tree_
               : or_<
-                    case_<Grammar, reverse_fold<_, _state, reverse_fold_tree_<Grammar, Fun> > >
-                  , case_<_, Fun>
+                    when<Grammar, reverse_fold<_, _state, reverse_fold_tree_<Grammar, Fun> > >
+                  , when<_, Fun>
                 >
             {};
 
Copied: branches/proto/v3/boost/xpressive/proto3/transform/when.hpp (from r41422, /branches/proto/v3/boost/xpressive/proto3/transform/case.hpp)
==============================================================================
--- /branches/proto/v3/boost/xpressive/proto3/transform/case.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/transform/when.hpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 /// \file transform.hpp
-/// Definition of case_ transform.
+/// Definition of when transform.
 //
 //  Copyright 2007 Eric Niebler. Distributed under the Boost
 //  Software License, Version 1.0. (See accompanying file
@@ -142,12 +142,12 @@
 
             template<typename R, typename... Args, typename Expr, typename State, typename Visitor>
             struct apply_lambda_<R(Args...), Expr, State, Visitor, no_transform>
-              : case_<_, R(Args...)>::template apply<Expr, State, Visitor>
+              : when<_, R(Args...)>::template apply<Expr, State, Visitor>
             {};
 
             template<typename R, typename... Args, typename Expr, typename State, typename Visitor>
             struct apply_lambda_<R(*)(Args...), Expr, State, Visitor, no_transform>
-              : case_<_, R(*)(Args...)>::template apply<Expr, State, Visitor>
+              : when<_, R(*)(Args...)>::template apply<Expr, State, Visitor>
             {};
 
             // work around GCC bug
@@ -212,7 +212,7 @@
                 static type call_(Expr const &expr, State const &state, Visitor &visitor, mpl::true_)
                 {
                     return detail::construct_<type>(
-                        case_<_, Args>::call(expr, state, visitor)...
+                        when<_, Args>::call(expr, state, visitor)...
                     );
                 }
 
@@ -261,7 +261,7 @@
         // Simple transform, takes a raw transform and
         // applies it directly.
         template<typename Grammar, typename Fun>
-        struct case_
+        struct when
           : Fun
         {
             typedef typename Grammar::proto_base_expr proto_base_expr;
@@ -271,7 +271,7 @@
         // transform with arguments and applies it, OR takes a
         // (possibly lambda) type and constructor arguments.
         template<typename Grammar, typename Return, typename... Args>
-        struct case_<Grammar, Return(Args...)>
+        struct when<Grammar, Return(Args...)>
           : raw_transform
         {
             typedef typename Grammar::proto_base_expr proto_base_expr;
@@ -291,7 +291,7 @@
         };
 
         template<typename Grammar, typename Return, typename... Args>
-        struct case_<Grammar, Return(*)(Args...)>
+        struct when<Grammar, Return(*)(Args...)>
           : raw_transform
         {
             typedef typename Grammar::proto_base_expr proto_base_expr;
Modified: branches/proto/v3/libs/xpressive/proto3/example/calc3.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/example/calc3.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/example/calc3.cpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -37,14 +37,14 @@
   : proto::or_<
 
         // placeholders have a non-zero arity ...
-        case_< proto::terminal< arg<_> >, _arg >
+        when< proto::terminal< arg<_> >, _arg >
 
         // Any other terminals have arity 0 ...
-      , case_< proto::terminal<_>, zero() >
+      , when< proto::terminal<_>, zero() >
 
         // For any non-terminals, find the arity of the children and
         // take the maximum. This is recursive.
-      , case_< proto::nary_expr<_, proto::vararg<_> >
+      , when< proto::nary_expr<_, proto::vararg<_> >
              , fold<_, zero(), mpl::max<CalculatorGrammar, _state>() > >
 
     >
Modified: branches/proto/v3/libs/xpressive/proto3/example/mixed.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/example/mixed.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/example/mixed.cpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -59,10 +59,10 @@
 // begin iterators
 struct Begin
   : proto::or_<
-        case_< proto::terminal< std::vector<_, _> >, begin(_arg) >
-      , case_< proto::terminal< std::list<_, _> >, begin(_arg) >
-      , case_< proto::terminal<_> >
-      , case_< proto::nary_expr<_, proto::vararg<Begin> > >
+        when< proto::terminal< std::vector<_, _> >, begin(_arg) >
+      , when< proto::terminal< std::list<_, _> >, begin(_arg) >
+      , when< proto::terminal<_> >
+      , when< proto::nary_expr<_, proto::vararg<Begin> > >
     >
 {};
 
Modified: branches/proto/v3/libs/xpressive/proto3/example/rgb.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/example/rgb.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/example/rgb.cpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -78,9 +78,9 @@
 
 struct RGB
   : or_<
-        case_< Red, RedTag() >
-      , case_< Blue, BlueTag() >
-      , case_< Green, GreenTag() >
+        when< Red, RedTag() >
+      , when< Blue, BlueTag() >
+      , when< Green, GreenTag() >
     >
 {};
 
Modified: branches/proto/v3/libs/xpressive/proto3/example/vec3.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/example/vec3.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/example/vec3.cpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -72,12 +72,12 @@
 struct CountLeaves
   : or_<
         // match a Vec3 terminal, return 1
-        case_<terminal<int[3]>, one() >
+        when<terminal<int[3]>, one() >
         // match a terminal, return int() (which is 0)
-      , case_<terminal<_>, int() >
+      , when<terminal<_>, int() >
         // fold everything else, using std::plus<> to add
         // the leaf count of each child to the accumulated state.
-      , case_< nary_expr<_, vararg<_> >, fold<_, int(), iplus(CountLeaves, _state) > >
+      , when< nary_expr<_, vararg<_> >, fold<_, int(), iplus(CountLeaves, _state) > >
     >
 {};
 
Modified: branches/proto/v3/libs/xpressive/proto3/test/examples.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/test/examples.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/test/examples.cpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -138,11 +138,11 @@
 //[ CalculatorArityGrammar
 struct CalculatorArity
   : or_<
-        case_< terminal< placeholder1 >,    one() >
-      , case_< terminal< placeholder2 >,    two() >
-      , case_< terminal<_>,                 zero() >
-      , case_< unary_expr<_, _>,            unary_arity >
-      , case_< binary_expr<_, _, _>,        binary_arity >
+        when< terminal< placeholder1 >,    one() >
+      , when< terminal< placeholder2 >,    two() >
+      , when< terminal<_>,                 zero() >
+      , when< unary_expr<_, _>,            unary_arity >
+      , when< binary_expr<_, _, _>,        binary_arity >
     >
 {};
 //]
@@ -150,11 +150,11 @@
 //[ CalculatorArityGrammar2
 struct CalcArity2
   : or_<
-        case_< terminal< placeholder1 >,                one()               >
-      , case_< terminal< placeholder2 >,                two()               >
-      , case_< terminal<_>,                             zero()              >
-      , case_< unary_expr<_, CalcArity2>,               CalcArity2(_arg)    >
-      , case_< binary_expr<_, CalcArity2, CalcArity2>,  mpl::max<CalcArity2(_left), CalcArity2(_right)>()   >
+        when< terminal< placeholder1 >,                one()               >
+      , when< terminal< placeholder2 >,                two()               >
+      , when< terminal<_>,                             zero()              >
+      , when< unary_expr<_, CalcArity2>,               CalcArity2(_arg)    >
+      , when< binary_expr<_, CalcArity2, CalcArity2>,  mpl::max<CalcArity2(_left), CalcArity2(_right)>()   >
     >
 {};
 //]
@@ -164,7 +164,7 @@
 // and transforms them into Fusion cons lists of their arguments. In this
 // case, the result would be cons(1, cons('a', cons("b", nil()))).
 struct ArgsAsList
-  : case_<
+  : when<
         function<terminal<_>, vararg<terminal<_> > >
       /*<< Use a `reverse_fold<>` transform to iterate over the children
       of this node in reverse order, building a fusion list from back to
@@ -195,13 +195,13 @@
         // This grammar describes what counts as the terminals in expressions
         // of the form (_1=1,'a',"b"), which will be flattened using
         // reverse_fold_tree<> below.
-        case_<assign<_, terminal<_> >
+        when<assign<_, terminal<_> >
              , _arg(_right)
         >
-      , case_<terminal<_>
+      , when<terminal<_>
              , _arg
         >
-      , case_<
+      , when<
             comma<FoldTreeToList, FoldTreeToList>
           /*<< Fold all terminals that are separated by commas into a Fusion cons list. >>*/
           , reverse_fold_tree<
@@ -221,12 +221,12 @@
   : or_<
         /*<< Match a `terminal<float>`, then construct a 
         `terminal<double>::type` with the `float`. >>*/
-        case_<terminal<float>, terminal<double>::type(_arg) >
-      , case_<terminal<_> >
+        when<terminal<float>, terminal<double>::type(_arg) >
+      , when<terminal<_> >
       /*<< `nary_expr<>` has a pass-through transform which 
       will transform each child sub-expression using the 
       `Promote` transform. >>*/
-      , case_<nary_expr<_, vararg<Promote> > >
+      , when<nary_expr<_, vararg<Promote> > >
     >
 {};
 //]
@@ -239,7 +239,7 @@
 // `make_pair_(1, 3.14)` and actually builds a `std::pair<>`
 // from the arguments.
 struct MakePair
-  : case_<
+  : when<
         /*<< Match expressions like `make_pair_(1, 3.14)` >>*/
         function<terminal<make_pair_tag>, terminal<_>, terminal<_> >
       /*<< Return `std::pair<F,S>(f,s)` where `f` and `s` are the
@@ -251,14 +251,14 @@
 
 //[ NegateInt
 struct NegateInt
-  : case_<terminal<int>, negate<_>(_)>
+  : when<terminal<int>, negate<_>(_)>
 {};
 //]
 
 #ifndef BOOST_MSVC
 //[ SquareAndPromoteInt
 struct SquareAndPromoteInt
-  : case_<
+  : when<
         terminal<int>
       , multiplies<terminal<long>::type, terminal<long>::type>::type
             (terminal<long>::type(_arg), terminal<long>::type(_arg))
Modified: branches/proto/v3/libs/xpressive/proto3/test/lambda.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/test/lambda.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/test/lambda.cpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -63,9 +63,9 @@
     // The lambda grammar, with the transforms for calculating the max arity
     struct Lambda
       : or_<
-            case_< terminal< placeholder<_> >,  mpl::next<placeholder_arity<_arg> >() >
-          , case_< terminal<_>,                 zero() >
-          , case_< nary_expr<_, vararg<_> >,    fold<_, zero(), mpl::max<Lambda,_state>()> >
+            when< terminal< placeholder<_> >,  mpl::next<placeholder_arity<_arg> >() >
+          , when< terminal<_>,                 zero() >
+          , when< nary_expr<_, vararg<_> >,    fold<_, zero(), mpl::max<Lambda,_state>()> >
         >
     {};
 }
Modified: branches/proto/v3/libs/xpressive/proto3/test/main.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/test/main.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/test/main.cpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -87,11 +87,11 @@
 // be compatible with the ops role as a meta-function.
 struct Promote
   : or_<
-        case_< terminal<float>, terminal<double>::type(_arg) >
-      , case_< posit<Promote>, make_negate(Promote(_arg))    >
-      , case_< terminal<char const *>, std::string(_arg)     >
-      , case_< terminal<_> >
-      , case_< nary_expr<_, vararg<Promote> > >
+        when< terminal<float>, terminal<double>::type(_arg) >
+      , when< posit<Promote>, make_negate(Promote(_arg))    >
+      , when< terminal<char const *>, std::string(_arg)     >
+      , when< terminal<_> >
+      , when< nary_expr<_, vararg<Promote> > >
     >
 {};
 
@@ -107,20 +107,20 @@
 
 struct Arity
   : or_<
-        case_< terminal<placeholder<_> >
+        when< terminal<placeholder<_> >
              , _arg
         >
-      , case_< terminal<_>
+      , when< terminal<_>
              , zero()
         >
-      , case_< nary_expr<_, vararg<Arity> >
+      , when< nary_expr<_, vararg<Arity> >
              , fold<_, zero(), mpl::max<Arity, _state>() >
         >
     >
 {};
 
 struct ArgsAsList
-  : case_<
+  : when<
         function<terminal<_>, vararg<terminal<_> > >
       , reverse_fold<
             pop_front(_)
@@ -132,13 +132,13 @@
 
 struct FoldTreeToList
   : or_<
-        case_<assign<_, terminal<_> >
+        when<assign<_, terminal<_> >
              , _arg(_right)
         >
-      , case_<terminal<_>
+      , when<terminal<_>
              , _arg
         >
-      , case_<
+      , when<
             comma<FoldTreeToList, FoldTreeToList>
           , reverse_fold_tree<
                 _
Modified: branches/proto/v3/libs/xpressive/proto3/test/toy_spirit.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/test/toy_spirit.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/test/toy_spirit.cpp	2007-11-27 16:36:52 EST (Tue, 27 Nov 2007)
@@ -200,11 +200,11 @@
         // Extract the arg from terminals
         struct SpiritTerminal
           : or_<
-                case_< AnyChar,          _arg >
-              , case_< CharLiteral,      if_<_icase, ichar(_arg), _arg> >
-              , case_< CharParser,       if_<_icase, ichar(_arg(_arg1)), _arg(_arg1)> > // char_('a')
-              , case_< NTBSLiteral,      if_<_icase, istr(_arg), char const*(_arg)> >
-              , case_< CharRangeParser,  if_<_icase
+                when< AnyChar,          _arg >
+              , when< CharLiteral,      if_<_icase, ichar(_arg), _arg> >
+              , when< CharParser,       if_<_icase, ichar(_arg(_arg1)), _arg(_arg1)> > // char_('a')
+              , when< NTBSLiteral,      if_<_icase, istr(_arg), char const*(_arg)> >
+              , when< CharRangeParser,  if_<_icase
                                             , ichar_range(_arg(_arg1), _arg(_arg2))
                                             , char_range(_arg(_arg1), _arg(_arg2))> >// char_('a','z')
             >
@@ -217,18 +217,18 @@
         // sequence rule folds all >>'s together into a list
         // and wraps the result in a sequence<> wrapper
         struct SpiritSequence
-          : case_< shift_right<SpiritExpr, SpiritExpr>,  sequence<FoldToList>(FoldToList)  >
+          : when< shift_right<SpiritExpr, SpiritExpr>,  sequence<FoldToList>(FoldToList)  >
         {};
 
         // alternate rule folds all |'s together into a list
         // and wraps the result in a alternate<> wrapper
         struct SpiritAlternate
-          : case_< bitwise_or<SpiritExpr, SpiritExpr>,   alternate<FoldToList>(FoldToList) >
+          : when< bitwise_or<SpiritExpr, SpiritExpr>,   alternate<FoldToList>(FoldToList) >
         {};
 
         // Directives such as no_case are handled here
         struct SpiritDirective
-          : case_< subscript<NoCase, SpiritExpr>, SpiritExpr(_right, _state, True()) >
+          : when< subscript<NoCase, SpiritExpr>, SpiritExpr(_right, _state, True()) >
         {};
 
         // A SpiritExpr is an alternate, a sequence, a directive or a terminal