Update of /cvsroot/boost/boost/boost/xpressive/proto
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19839/proto

Modified Files:
        extends.hpp matches.hpp traits.hpp 
Log Message:
basic_regex uses proto::extends<>, eliminate regex_operators.hpp and 
as_matcher(), as_xpr() is simply proto::as_expr()

Index: extends.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/extends.hpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- extends.hpp 22 Feb 2007 00:55:43 -0000      1.24
+++ extends.hpp 12 Mar 2007 22:11:30 -0000      1.25
@@ -220,6 +220,10 @@
           : expr()
         {}
 
+        extends(extends const &that)
+          : expr(that.expr)
+        {}
+
         extends(Expr const &expr_)
           : expr(expr_)
         {}

Index: matches.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/matches.hpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- matches.hpp 22 Feb 2007 00:55:43 -0000      1.37
+++ matches.hpp 12 Mar 2007 22:11:30 -0000      1.38
@@ -25,6 +25,7 @@
     #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
     #include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
     #include <boost/config.hpp>
+    #include <boost/mpl/or.hpp>
     #include <boost/mpl/bool.hpp>
     #include <boost/mpl/apply.hpp>
     #include <boost/mpl/aux_/template_arity.hpp>
@@ -67,18 +68,18 @@
             template<typename T, typename U
                 BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(long Arity = 
mpl::aux::template_arity<U>::value)
             >
-            struct lambda_matches
+            struct lambda_matches_impl
               : is_same<T, U>
             {};
 
             template<typename T>
-            struct lambda_matches<T, proto::_ 
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(-1)>
+            struct lambda_matches_impl<T, proto::_ 
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(-1)>
               : mpl::true_
             {};
 
             template<template<typename> class T, typename Expr0, typename 
Grammar0>
-            struct lambda_matches<T<Expr0>, T<Grammar0> 
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(1) >
-              : lambda_matches<Expr0, Grammar0>
+            struct lambda_matches_impl<T<Expr0>, T<Grammar0> 
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(1) >
+              : lambda_matches_impl<Expr0, Grammar0>
             {};
 
             // wrap_terminal
@@ -86,29 +87,26 @@
             struct wrap_terminal
             {
                 wrap_terminal(T const &);
-                
-                template<typename U>
-                wrap_terminal(U const &, typename enable_if<lambda_matches<U, 
T> >::type * = 0 );
             };
 
             template<typename T>
             struct wrap_terminal<T &>
             {
                 wrap_terminal(T &);
-                
-                template<typename U>
-                wrap_terminal(U &, typename enable_if<lambda_matches<U, T> 
>::type * = 0 );
             };
 
             template<typename T>
             struct wrap_terminal<T const &>
             {
                 wrap_terminal(T const &);
-
-                template<typename U>
-                wrap_terminal(U const &, typename enable_if<lambda_matches<U, 
T> >::type * = 0 );
             };
 
+            // TODO: this is a little too loose; it allows "foo<T> const &" to 
match "foo<_> &"
+            template<typename T, typename U>
+            struct lambda_matches
+              : lambda_matches_impl<typename remove_cv_ref<T>::type, typename 
remove_cv_ref<U>::type>
+            {};
+
             // vararg_matches_impl
             template<typename Args1, typename Back, long From, long To>
             struct vararg_matches_impl;
@@ -135,7 +133,10 @@
             // terminal_matches
             template<typename Expr, typename Grammar>
             struct terminal_matches
-              : is_convertible<Expr, wrap_terminal<Grammar> >
+              : mpl::or_<
+                    lambda_matches<Expr, Grammar>
+                  , is_convertible<Expr, wrap_terminal<Grammar> >
+                >
             {};
 
             template<typename Expr>
@@ -207,7 +208,7 @@
             >
 
         #define BOOST_PROTO_DEFINE_LAMBDA_MATCHES(z, n, data)\
-            lambda_matches<\
+            lambda_matches_impl<\
                 BOOST_PP_CAT(Expr, n)\
               , BOOST_PP_CAT(Grammar, n)\
             >
@@ -392,7 +393,7 @@
                 BOOST_PP_ENUM_TRAILING_PARAMS(N, typename Expr)
                 BOOST_PP_ENUM_TRAILING_PARAMS(N, typename Grammar)
             >
-            struct lambda_matches<T<BOOST_PP_ENUM_PARAMS(N, Expr)>, 
T<BOOST_PP_ENUM_PARAMS(N, Grammar)> BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(N) >
+            struct lambda_matches_impl<T<BOOST_PP_ENUM_PARAMS(N, Expr)>, 
T<BOOST_PP_ENUM_PARAMS(N, Grammar)> BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(N) >
               : BOOST_PP_CAT(and, N)<
                     BOOST_PROTO_DEFINE_LAMBDA_MATCHES(~, 0, ~)::value,
                     BOOST_PP_ENUM_SHIFTED(N, 
BOOST_PROTO_DEFINE_LAMBDA_MATCHES, ~)

Index: traits.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/traits.hpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- traits.hpp  15 Feb 2007 18:38:06 -0000      1.42
+++ traits.hpp  12 Mar 2007 22:11:30 -0000      1.43
@@ -80,7 +80,7 @@
                 typedef typename mpl::if_<
                     mpl::or_<BOOST_PROTO_IS_ARRAY_(T), is_function<T> >
                   , T &
-                  , T
+                  , typename remove_cv<T>::type
                 >::type arg0_type;
 
                 typedef expr<proto::tag::terminal, args1<arg0_type> > type;


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs

Reply via email to