$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: eric_at_[hidden]
Date: 2007-11-08 21:40:19
Author: eric_niebler
Date: 2007-11-08 21:40:18 EST (Thu, 08 Nov 2007)
New Revision: 40952
URL: http://svn.boost.org/trac/boost/changeset/40952
Log:
port lambda2 to proto3
Text files modified: 
   branches/proto/v3/boost/xpressive/proto3/context/callable.hpp |     2                                         
   branches/proto/v3/boost/xpressive/proto3/context/null.hpp     |   166 ++++++++++++++++++++--------------------
   branches/proto/v3/boost/xpressive/proto3/tags.hpp             |     2                                         
   branches/proto/v3/libs/xpressive/proto3/test/lambda2.cpp      |     9 +                                       
   branches/proto/v3/libs/xpressive/proto3/test/toy_spirit3.cpp  |     1                                         
   5 files changed, 91 insertions(+), 89 deletions(-)
Modified: branches/proto/v3/boost/xpressive/proto3/context/callable.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/context/callable.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/context/callable.hpp	2007-11-08 21:40:18 EST (Thu, 08 Nov 2007)
@@ -68,7 +68,7 @@
           : remove_cv<Context>::type
         {
             callable_context_wrapper();
-            typedef private_type_ const &(*pointer_to_function)(DontCare...);
+            typedef private_type_ const &(*pointer_to_function)(dont_care, DontCare...);
             operator pointer_to_function() const;
         };
 
Modified: branches/proto/v3/boost/xpressive/proto3/context/null.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/context/null.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/context/null.hpp	2007-11-08 21:40:18 EST (Thu, 08 Nov 2007)
@@ -1,83 +1,83 @@
-#ifndef BOOST_PP_IS_ITERATING
-    ///////////////////////////////////////////////////////////////////////////////
-    /// \file null.hpp
-    /// Definintion of null_context\<\>, an evaluation context for
-    /// proto::eval() that simply evaluates each child expression, doesn't
-    /// combine the results at all, and returns void.
-    //
-    //  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_PROTO_CONTEXT_NULL_HPP_EAN_06_24_2007
-    #define BOOST_PROTO_CONTEXT_NULL_HPP_EAN_06_24_2007
-
-    #include <boost/xpressive/proto/detail/prefix.hpp> // must be first include
-    #include <boost/preprocessor/iteration/iterate.hpp>
-    #include <boost/preprocessor/repetition/repeat.hpp>
-    #include <boost/xpressive/proto/proto_fwd.hpp>
-    #include <boost/xpressive/proto/eval.hpp>
-    #include <boost/xpressive/proto/traits.hpp>
-    #include <boost/xpressive/proto/detail/suffix.hpp> // must be last include
-
-    namespace boost { namespace proto { namespace context
-    {
-
-        template<typename Expr, typename Context, long Arity>
-        struct null_eval
-        {};
-
-        template<typename Expr, typename Context>
-        struct null_eval<Expr, Context, 0>
-        {
-            typedef void result_type;
-            void operator()(Expr &, Context &) const
-            {}
-        };
-
-    #define BOOST_PROTO_EVAL_N(Z, N, DATA)                                                          \
-        proto::eval(proto::arg_c<N>(expr), ctx);                                                    \
-        /**/
-
-    #define BOOST_PP_ITERATION_PARAMS_1                                                             \
-        (3, (1, BOOST_PROTO_MAX_ARITY, <boost/xpressive/proto/context/null.hpp>))                   \
-        /**/
-
-    #include BOOST_PP_ITERATE()
-
-    #undef BOOST_PROTO_EVAL_N
-
-        /// null_context
-        ///
-        struct null_context
-        {
-            /// null_context::eval
-            ///
-            template<typename Expr, typename ThisContext = null_context const>
-            struct eval
-              : null_eval<Expr, ThisContext>
-            {};
-        };
-
-    }}}
-
-    #endif
-
-#else
-
-    #define N BOOST_PP_ITERATION()
-
-        template<typename Expr, typename Context>
-        struct null_eval<Expr, Context, N>
-        {
-            typedef void result_type;
-
-            void operator ()(Expr &expr, Context &ctx) const
-            {
-                BOOST_PP_REPEAT(N, BOOST_PROTO_EVAL_N, ~)                
-            }
-        };
-
-    #undef N
-
-#endif
+//#ifndef BOOST_PP_IS_ITERATING
+//    ///////////////////////////////////////////////////////////////////////////////
+//    /// \file null.hpp
+//    /// Definintion of null_context\<\>, an evaluation context for
+//    /// proto::eval() that simply evaluates each child expression, doesn't
+//    /// combine the results at all, and returns void.
+//    //
+//    //  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_PROTO_CONTEXT_NULL_HPP_EAN_06_24_2007
+//    #define BOOST_PROTO_CONTEXT_NULL_HPP_EAN_06_24_2007
+//
+//    #include <boost/xpressive/proto/detail/prefix.hpp> // must be first include
+//    #include <boost/preprocessor/iteration/iterate.hpp>
+//    #include <boost/preprocessor/repetition/repeat.hpp>
+//    #include <boost/xpressive/proto/proto_fwd.hpp>
+//    #include <boost/xpressive/proto/eval.hpp>
+//    #include <boost/xpressive/proto/traits.hpp>
+//    #include <boost/xpressive/proto/detail/suffix.hpp> // must be last include
+//
+//    namespace boost { namespace proto { namespace context
+//    {
+//
+//        template<typename Expr, typename Context, long Arity>
+//        struct null_eval
+//        {};
+//
+//        template<typename Expr, typename Context>
+//        struct null_eval<Expr, Context, 0>
+//        {
+//            typedef void result_type;
+//            void operator()(Expr &, Context &) const
+//            {}
+//        };
+//
+//    #define BOOST_PROTO_EVAL_N(Z, N, DATA)                                                          \
+//        proto::eval(proto::arg_c<N>(expr), ctx);                                                    \
+//        /**/
+//
+//    #define BOOST_PP_ITERATION_PARAMS_1                                                             \
+//        (3, (1, BOOST_PROTO_MAX_ARITY, <boost/xpressive/proto/context/null.hpp>))                   \
+//        /**/
+//
+//    #include BOOST_PP_ITERATE()
+//
+//    #undef BOOST_PROTO_EVAL_N
+//
+//        /// null_context
+//        ///
+//        struct null_context
+//        {
+//            /// null_context::eval
+//            ///
+//            template<typename Expr, typename ThisContext = null_context const>
+//            struct eval
+//              : null_eval<Expr, ThisContext>
+//            {};
+//        };
+//
+//    }}}
+//
+//    #endif
+//
+//#else
+//
+//    #define N BOOST_PP_ITERATION()
+//
+//        template<typename Expr, typename Context>
+//        struct null_eval<Expr, Context, N>
+//        {
+//            typedef void result_type;
+//
+//            void operator ()(Expr &expr, Context &ctx) const
+//            {
+//                BOOST_PP_REPEAT(N, BOOST_PROTO_EVAL_N, ~)                
+//            }
+//        };
+//
+//    #undef N
+//
+//#endif
Modified: branches/proto/v3/boost/xpressive/proto3/tags.hpp
==============================================================================
--- branches/proto/v3/boost/xpressive/proto3/tags.hpp	(original)
+++ branches/proto/v3/boost/xpressive/proto3/tags.hpp	2007-11-08 21:40:18 EST (Thu, 08 Nov 2007)
@@ -14,7 +14,7 @@
 namespace boost { namespace proto
 {
 
-    namespace tags
+    namespace tag
     {
 
         struct terminal {};
Modified: branches/proto/v3/libs/xpressive/proto3/test/lambda2.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/test/lambda2.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/test/lambda2.cpp	2007-11-08 21:40:18 EST (Thu, 08 Nov 2007)
@@ -27,7 +27,7 @@
 #include <boost/type_traits/add_reference.hpp>
 #include <boost/xpressive/proto3/proto.hpp>
 #include <boost/xpressive/proto3/context.hpp>
-#include <boost/xpressive/proto3/transform2.hpp>
+#include <boost/xpressive/proto3/transform.hpp>
 #include <boost/test/unit_test.hpp>
 #include <boost/test/floating_point_comparison.hpp>
 
@@ -53,16 +53,19 @@
     typedef typename T::arity type;
 };
 
+struct zero : mpl::int_<0> {};
+
 namespace grammar
 {
     using namespace proto;
+    using namespace transform;
 
     // The lambda grammar, with the transforms for calculating the max arity
     struct Lambda
       : or_<
             case_< terminal< placeholder<_> >,  mpl::next<placeholder_arity<_arg> >() >
-          , case_< terminal<_>,                 mpl::int_<0>() >
-          , case_< nary_expr<_, vararg<_> >,    fold<_children, mpl::int_<0>(), mpl::max<Lambda,_state>()> >
+          , case_< terminal<_>,                 zero() >
+          , case_< nary_expr<_, vararg<_> >,    fold<_, zero(), mpl::max<Lambda,_state>()> >
         >
     {};
 }
Modified: branches/proto/v3/libs/xpressive/proto3/test/toy_spirit3.cpp
==============================================================================
--- branches/proto/v3/libs/xpressive/proto3/test/toy_spirit3.cpp	(original)
+++ branches/proto/v3/libs/xpressive/proto3/test/toy_spirit3.cpp	2007-11-08 21:40:18 EST (Thu, 08 Nov 2007)
@@ -246,7 +246,6 @@
           : case_< 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()) >