Update of /cvsroot/boost/boost/boost/xpressive/proto
In directory
sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19904/boost/xpressive/proto
Modified Files:
context.hpp debug.hpp expr.hpp extends.hpp operators.hpp
proto_fwd.hpp proto_typeof.hpp tags.hpp traits.hpp
Log Message:
rename left_shift to shift_left, non-terminals do not get non-const overloads
for op=, op[] and op() for better compile times
Index: context.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/context.hpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- context.hpp 5 May 2007 15:02:17 -0000 1.28
+++ context.hpp 21 May 2007 03:21:33 -0000 1.29
@@ -37,7 +37,7 @@
// If we're generating doxygen documentation, hide all the nasty
// Boost.Typeof gunk.
#ifndef BOOST_PROTO_DOXYGEN_INVOKED
- #define BOOST_PROTO_DECLTYPE_NESTED_TYPEDEF_TPL(Nested, Expr)\
+ #define BOOST_PROTO_DECLTYPE_NESTED_TYPEDEF_TPL_(Nested, Expr)\
BOOST_TYPEOF_NESTED_TYPEDEF_TPL(BOOST_PP_CAT(nested_and_hidden_,
Nested), Expr)\
struct Nested\
: mpl::if_c<\
@@ -47,13 +47,16 @@
>\
{};
- #define BOOST_PROTO_TYPEOF(Expr, Type)\
- BOOST_PROTO_DECLTYPE_NESTED_TYPEDEF_TPL(BOOST_PP_CAT(nested_,
Type), (Expr))\
+ #define BOOST_PROTO_DECLTYPE_(Expr, Type)\
+ BOOST_PROTO_DECLTYPE_NESTED_TYPEDEF_TPL_(BOOST_PP_CAT(nested_,
Type), (Expr))\
typedef typename BOOST_PP_CAT(nested_, Type)::type Type;
#else
/// INTERNAL ONLY
///
- #define BOOST_PROTO_TYPEOF(Expr, Type)\
+ #define BOOST_PROTO_DECLTYPE_NESTED_TYPEDEF_TPL_(Nested, Expr)
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PROTO_DECLTYPE_(Expr, Type)\
typedef detail::unspecified Type;
#endif
@@ -81,7 +84,7 @@
template<typename A0, typename A1>
struct comma_result
{
- BOOST_PROTO_TYPEOF((detail::make<A0>(), detail::make<A1>()),
type)
+ BOOST_PROTO_DECLTYPE_((detail::make<A0>(),
detail::make<A1>()), type)
};
template<typename A0>
@@ -157,7 +160,7 @@
static Expr &sexpr;\
static Context &sctx;\
public:\
- BOOST_PROTO_TYPEOF(Op
proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)), sctx), result_type)\
+ BOOST_PROTO_DECLTYPE_(Op
proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)), sctx), result_type)\
result_type operator()(Expr &expr, Context &ctx) const\
{\
return Op proto::eval(proto::arg_c<0>(expr), ctx);\
@@ -175,7 +178,7 @@
static Expr &sexpr;\
static Context &sctx;\
public:\
-
BOOST_PROTO_TYPEOF(proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)), sctx)
Op proto::eval(BOOST_PROTO_REF(proto::arg_c<1>(sexpr)), sctx), result_type)\
+
BOOST_PROTO_DECLTYPE_(proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)),
sctx) Op proto::eval(BOOST_PROTO_REF(proto::arg_c<1>(sexpr)), sctx),
result_type)\
result_type operator()(Expr &expr, Context &ctx) const\
{\
return proto::eval(proto::arg_c<0>(expr), ctx) Op
proto::eval(proto::arg_c<1>(expr), ctx);\
@@ -192,8 +195,8 @@
BOOST_PROTO_UNARY_OP_RESULT(++, proto::tag::pre_inc)
BOOST_PROTO_UNARY_OP_RESULT(--, proto::tag::pre_dec)
- BOOST_PROTO_BINARY_OP_RESULT(<<, proto::tag::left_shift)
- BOOST_PROTO_BINARY_OP_RESULT(>>, proto::tag::right_shift)
+ BOOST_PROTO_BINARY_OP_RESULT(<<, proto::tag::shift_left)
+ BOOST_PROTO_BINARY_OP_RESULT(>>, proto::tag::shift_right)
BOOST_PROTO_BINARY_OP_RESULT(*, proto::tag::multiplies)
BOOST_PROTO_BINARY_OP_RESULT(/, proto::tag::divides)
BOOST_PROTO_BINARY_OP_RESULT(%, proto::tag::modulus)
@@ -213,8 +216,8 @@
BOOST_PROTO_BINARY_OP_RESULT(->*, proto::tag::mem_ptr)
BOOST_PROTO_BINARY_OP_RESULT(=, proto::tag::assign)
- BOOST_PROTO_BINARY_OP_RESULT(<<=, proto::tag::left_shift_assign)
- BOOST_PROTO_BINARY_OP_RESULT(>>=, proto::tag::right_shift_assign)
+ BOOST_PROTO_BINARY_OP_RESULT(<<=, proto::tag::shift_left_assign)
+ BOOST_PROTO_BINARY_OP_RESULT(>>=, proto::tag::shift_right_assign)
BOOST_PROTO_BINARY_OP_RESULT(*=, proto::tag::multilpies_assign)
BOOST_PROTO_BINARY_OP_RESULT(/=, proto::tag::divides_assign)
BOOST_PROTO_BINARY_OP_RESULT(%=, proto::tag::modulus_assign)
@@ -249,7 +252,7 @@
static Expr &sexpr;
static Context &sctx;
public:
-
BOOST_PROTO_TYPEOF(proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)), sctx)
++, result_type)
+
BOOST_PROTO_DECLTYPE_(proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)),
sctx) ++, result_type)
result_type operator()(Expr &expr, Context &ctx) const
{
return proto::eval(proto::arg_c<0>(expr), ctx) ++;
@@ -264,7 +267,7 @@
static Expr &sexpr;
static Context &sctx;
public:
-
BOOST_PROTO_TYPEOF(proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)), sctx)
--, result_type)
+
BOOST_PROTO_DECLTYPE_(proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)),
sctx) --, result_type)
result_type operator()(Expr &expr, Context &ctx) const
{
return proto::eval(proto::arg_c<0>(expr), ctx) --;
@@ -279,7 +282,7 @@
static Expr &sexpr;
static Context &sctx;
public:
-
BOOST_PROTO_TYPEOF(proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)),
sctx)[proto::eval(BOOST_PROTO_REF(proto::arg_c<1>(sexpr)), sctx)], result_type)
+
BOOST_PROTO_DECLTYPE_(proto::eval(BOOST_PROTO_REF(proto::arg_c<0>(sexpr)),
sctx)[proto::eval(BOOST_PROTO_REF(proto::arg_c<1>(sexpr)), sctx)], result_type)
result_type operator()(Expr &expr, Context &ctx) const
{
return proto::eval(proto::arg_c<0>(expr),
ctx)[proto::eval(proto::arg_c<1>(expr), ctx)];
@@ -349,6 +352,9 @@
}}
+ #undef BOOST_PROTO_DECLTYPE_NESTED_TYPEDEF_TPL_
+ #undef BOOST_PROTO_DECLTYPE_
+
#endif
#else
Index: debug.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/debug.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- debug.hpp 29 Apr 2007 03:38:49 -0000 1.6
+++ debug.hpp 21 May 2007 03:21:33 -0000 1.7
@@ -51,8 +51,8 @@
BOOST_PROTO_DEFINE_TAG_NAME(pre_dec)
BOOST_PROTO_DEFINE_TAG_NAME(post_inc)
BOOST_PROTO_DEFINE_TAG_NAME(post_dec)
- BOOST_PROTO_DEFINE_TAG_NAME(left_shift)
- BOOST_PROTO_DEFINE_TAG_NAME(right_shift)
+ BOOST_PROTO_DEFINE_TAG_NAME(shift_left)
+ BOOST_PROTO_DEFINE_TAG_NAME(shift_right)
BOOST_PROTO_DEFINE_TAG_NAME(multiplies)
BOOST_PROTO_DEFINE_TAG_NAME(divides)
BOOST_PROTO_DEFINE_TAG_NAME(modulus)
@@ -72,8 +72,8 @@
BOOST_PROTO_DEFINE_TAG_NAME(comma)
BOOST_PROTO_DEFINE_TAG_NAME(mem_ptr)
BOOST_PROTO_DEFINE_TAG_NAME(assign)
- BOOST_PROTO_DEFINE_TAG_NAME(left_shift_assign)
- BOOST_PROTO_DEFINE_TAG_NAME(right_shift_assign)
+ BOOST_PROTO_DEFINE_TAG_NAME(shift_left_assign)
+ BOOST_PROTO_DEFINE_TAG_NAME(shift_right_assign)
BOOST_PROTO_DEFINE_TAG_NAME(multilpies_assign)
BOOST_PROTO_DEFINE_TAG_NAME(divides_assign)
BOOST_PROTO_DEFINE_TAG_NAME(modulus_assign)
Index: expr.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/expr.hpp,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- expr.hpp 5 May 2007 01:07:16 -0000 1.31
+++ expr.hpp 21 May 2007 03:21:33 -0000 1.32
@@ -71,11 +71,14 @@
namespace result_of
{
- #define BOOST_PP_ITERATION_PARAMS_1 (3, (1,
BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY), <boost/xpressive/proto/detail/funop.hpp>))
+ template<typename Sig, typename This>
+ struct funop;
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (0,
BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY), <boost/xpressive/proto/detail/funop.hpp>))
#include BOOST_PP_ITERATE()
}
- #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, BOOST_PROTO_MAX_ARITY,
<boost/xpressive/proto/expr.hpp>))
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PROTO_MAX_ARITY,
<boost/xpressive/proto/expr.hpp>))
#include BOOST_PP_ITERATE()
#undef BOOST_PROTO_ARG
@@ -110,32 +113,44 @@
/// type is \c boost::proto::tag::terminal, in which case
/// \c Args must be \c proto::args1\<T\>, where \c T can
be any
/// type.
+ #if 0 == BOOST_PP_ITERATION()
+ #define IS_TERMINAL 1
+ #define ARG_COUNT 1
+ template<typename Args>
+ struct expr<proto::tag::terminal, Args, 1>
+ {
+ typedef proto::tag::terminal tag_type;
+ typedef mpl::long_<1> arity;
+ #else
+ #define IS_TERMINAL 0
+ #define ARG_COUNT BOOST_PP_ITERATION()
template<typename Tag, typename Args>
struct expr<Tag, Args, BOOST_PP_ITERATION() >
{
typedef Tag tag_type;
+ typedef mpl::long_<BOOST_PP_ITERATION() > arity;
+ #endif
typedef expr type;
typedef Args args_type;
typedef default_domain domain;
- typedef mpl::long_<BOOST_PP_ITERATION()> arity;
typedef proto_expr_tag fusion_tag;
typedef void is_boost_proto_expr_;
typedef expr boost_proto_expr_type_;
BOOST_PROTO_IDENTITY_TRANSFORM();
- BOOST_PP_REPEAT(BOOST_PP_ITERATION(), BOOST_PROTO_ARG, ~)
- BOOST_PP_REPEAT_FROM_TO(BOOST_PP_ITERATION(),
BOOST_PROTO_MAX_ARITY, BOOST_PROTO_VOID, ~)
+ BOOST_PP_REPEAT(ARG_COUNT, BOOST_PROTO_ARG, ~)
+ BOOST_PP_REPEAT_FROM_TO(ARG_COUNT, BOOST_PROTO_MAX_ARITY,
BOOST_PROTO_VOID, ~)
/// \return *this
///
- expr &cast()
+ expr const &cast() const
{
return *this;
}
- /// \return *this
+ /// \overload
///
- expr const &cast() const
+ expr &cast()
{
return *this;
}
@@ -143,14 +158,14 @@
/// \return A new \c expr\<\> object initialized with the specified
/// arguments.
///
- template<BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename A)>
- static expr make(BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_ITERATION(),
A, const &a))
+ template<BOOST_PP_ENUM_PARAMS(ARG_COUNT, typename A)>
+ static expr make(BOOST_PP_ENUM_BINARY_PARAMS(ARG_COUNT, A, const
&a))
{
- expr that = {BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), a)};
+ expr that = {BOOST_PP_ENUM_PARAMS(ARG_COUNT, a)};
return that;
}
- #if 1 == BOOST_PP_ITERATION()
+ #if IS_TERMINAL
/// \overload
///
template<typename A0>
@@ -159,7 +174,9 @@
expr that = {a0};
return that;
}
+ #endif
+ #if 1 == BOOST_PP_ITERATION()
/// If \c Tag is \c boost::proto::tag::address_of and \c arg0_type
is
/// \c proto::ref_\<T\>, then \c address_of_hack_type_ is
<tt>T*</tt>.
/// Otherwise, it is some undefined type.
@@ -183,95 +200,95 @@
/// \param a The rhs.
/// \return A new \c expr\<\> node representing an assignment of
\c a to \c *this.
template<typename A>
- expr<tag::assign, args2<ref_<expr>, typename
result_of::as_arg<A>::type> > const
- operator =(A &a)
+ expr<tag::assign, args2<ref_<expr const>, typename
result_of::as_arg<A>::type> > const
+ operator =(A &a) const
{
- expr<tag::assign, args2<ref_<expr>, typename
result_of::as_arg<A>::type> > that = {{*this}, proto::as_arg(a)};
+ expr<tag::assign, args2<ref_<expr const>, typename
result_of::as_arg<A>::type> > that = {{*this}, proto::as_arg(a)};
return that;
}
/// \overload
///
template<typename A>
- expr<tag::assign, args2<ref_<expr>, typename result_of::as_arg<A
const>::type> > const
- operator =(A const &a)
+ expr<tag::assign, args2<ref_<expr const>, typename
result_of::as_arg<A const>::type> > const
+ operator =(A const &a) const
{
- expr<tag::assign, args2<ref_<expr>, typename
result_of::as_arg<A const>::type> > that = {{*this}, proto::as_arg(a)};
+ expr<tag::assign, args2<ref_<expr const>, typename
result_of::as_arg<A const>::type> > that = {{*this}, proto::as_arg(a)};
return that;
}
+ #if IS_TERMINAL
/// \overload
///
template<typename A>
- expr<tag::assign, args2<ref_<expr const>, typename
result_of::as_arg<A>::type> > const
- operator =(A &a) const
+ expr<tag::assign, args2<ref_<expr>, typename
result_of::as_arg<A>::type> > const
+ operator =(A &a)
{
- expr<tag::assign, args2<ref_<expr const>, typename
result_of::as_arg<A>::type> > that = {{*this}, proto::as_arg(a)};
+ expr<tag::assign, args2<ref_<expr>, typename
result_of::as_arg<A>::type> > that = {{*this}, proto::as_arg(a)};
return that;
}
/// \overload
///
template<typename A>
- expr<tag::assign, args2<ref_<expr const>, typename
result_of::as_arg<A const>::type> > const
- operator =(A const &a) const
+ expr<tag::assign, args2<ref_<expr>, typename result_of::as_arg<A
const>::type> > const
+ operator =(A const &a)
{
- expr<tag::assign, args2<ref_<expr const>, typename
result_of::as_arg<A const>::type> > that = {{*this}, proto::as_arg(a)};
+ expr<tag::assign, args2<ref_<expr>, typename
result_of::as_arg<A const>::type> > that = {{*this}, proto::as_arg(a)};
return that;
}
+ #endif
/// Subscript
///
/// \param a The rhs.
/// \return A new \c expr\<\> node representing \c *this
subscripted with \c a.
template<typename A>
- expr<tag::subscript, args2<ref_<expr>, typename
result_of::as_arg<A>::type> > const
- operator [](A &a)
+ expr<tag::subscript, args2<ref_<expr const>, typename
result_of::as_arg<A>::type> > const
+ operator [](A &a) const
{
- expr<tag::subscript, args2<ref_<expr>, typename
result_of::as_arg<A>::type> > that = {{*this}, proto::as_arg(a)};
+ expr<tag::subscript, args2<ref_<expr const>, typename
result_of::as_arg<A>::type> > that = {{*this}, proto::as_arg(a)};
return that;
}
/// \overload
///
template<typename A>
- expr<tag::subscript, args2<ref_<expr>, typename
result_of::as_arg<A const>::type> > const
- operator [](A const &a)
+ expr<tag::subscript, args2<ref_<expr const>, typename
result_of::as_arg<A const>::type> > const
+ operator [](A const &a) const
{
- expr<tag::subscript, args2<ref_<expr>, typename
result_of::as_arg<A const>::type> > that = {{*this}, proto::as_arg(a)};
+ expr<tag::subscript, args2<ref_<expr const>, typename
result_of::as_arg<A const>::type> > that = {{*this}, proto::as_arg(a)};
return that;
}
+ #if IS_TERMINAL
/// \overload
///
template<typename A>
- expr<tag::subscript, args2<ref_<expr const>, typename
result_of::as_arg<A>::type> > const
- operator [](A &a) const
+ expr<tag::subscript, args2<ref_<expr>, typename
result_of::as_arg<A>::type> > const
+ operator [](A &a)
{
- expr<tag::subscript, args2<ref_<expr const>, typename
result_of::as_arg<A>::type> > that = {{*this}, proto::as_arg(a)};
+ expr<tag::subscript, args2<ref_<expr>, typename
result_of::as_arg<A>::type> > that = {{*this}, proto::as_arg(a)};
return that;
}
/// \overload
///
template<typename A>
- expr<tag::subscript, args2<ref_<expr const>, typename
result_of::as_arg<A const>::type> > const
- operator [](A const &a) const
+ expr<tag::subscript, args2<ref_<expr>, typename
result_of::as_arg<A const>::type> > const
+ operator [](A const &a)
{
- expr<tag::subscript, args2<ref_<expr const>, typename
result_of::as_arg<A const>::type> > that = {{*this}, proto::as_arg(a)};
+ expr<tag::subscript, args2<ref_<expr>, typename
result_of::as_arg<A const>::type> > that = {{*this}, proto::as_arg(a)};
return that;
}
-
- template<typename Sig>
- struct result {};
+ #endif
/// Encodes the return type of \c expr\<\>::operator(), for use
with \c boost::result_of\<\>
///
- template<typename This>
- struct result<This()>
- {
- typedef expr<tag::function, args1<ref_<expr const> > > type;
- };
+ template<typename Sig>
+ struct result
+ : result_of::funop<Sig, expr>
+ {};
/// Function call
///
@@ -283,19 +300,28 @@
return that;
}
+ #if IS_TERMINAL
+ /// \overload
+ ///
+ expr<tag::function, args1<ref_<expr> > > const
+ operator ()()
+ {
+ expr<tag::function, args1<ref_<expr> > > that = {{*this}};
+ return that;
+ }
+ #endif
+
#define BOOST_PP_ITERATION_PARAMS_2 (3, (1,
BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY), <boost/xpressive/proto/expr.hpp>))
#include BOOST_PP_ITERATE()
};
+ #undef ARG_COUNT
+ #undef IS_TERMINAL
+
#elif BOOST_PP_ITERATION_DEPTH() == 2
#define N BOOST_PP_ITERATION()
- template<typename This BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)>
- struct result<This(BOOST_PP_ENUM_PARAMS(N, A))>
- : result_of::BOOST_PP_CAT(funop, N)<expr const
BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(N, typename remove_reference<A, >::type
BOOST_PP_INTERCEPT)>
- {};
-
/// \overload
///
template<BOOST_PP_ENUM_PARAMS(N, typename A)>
@@ -306,6 +332,18 @@
::call(*this BOOST_PP_ENUM_TRAILING_PARAMS(N, a));
}
+ #if IS_TERMINAL
+ /// \overload
+ ///
+ template<BOOST_PP_ENUM_PARAMS(N, typename A)>
+ typename result_of::BOOST_PP_CAT(funop, N)<expr
BOOST_PP_ENUM_TRAILING_PARAMS(N, const A)>::type const
+ operator ()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, const &a))
+ {
+ return result_of::BOOST_PP_CAT(funop, N)<expr
BOOST_PP_ENUM_TRAILING_PARAMS(N, const A)>
+ ::call(*this BOOST_PP_ENUM_TRAILING_PARAMS(N, a));
+ }
+ #endif
+
#undef N
#endif
Index: extends.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/extends.hpp,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- extends.hpp 7 May 2007 04:41:25 -0000 1.31
+++ extends.hpp 21 May 2007 03:21:33 -0000 1.32
@@ -11,6 +11,7 @@
#include <boost/xpressive/proto/detail/prefix.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/control/if.hpp>
#include <boost/preprocessor/arithmetic/inc.hpp>
#include <boost/preprocessor/arithmetic/dec.hpp>
#include <boost/preprocessor/iteration/local.hpp>
@@ -30,48 +31,62 @@
{
/// INTERNAL ONLY
///
- #define BOOST_PROTO_DEFINE_FUN_OP(Z, N, Data)\
- template<typename This BOOST_PP_ENUM_TRAILING_PARAMS_Z(Z, N, typename
A)>\
- struct result<This(BOOST_PP_ENUM_PARAMS_Z(Z, N, A))>\
- {\
- typedef\
- typename boost::proto::generate<\
- BOOST_PP_TUPLE_ELEM(3, 2, Data)\
- , typename boost::proto::result_of::BOOST_PP_CAT(funop, N)<\
- BOOST_PP_TUPLE_ELEM(3, 1, Data) const\
- BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z(\
- Z\
- , N\
- , typename boost::remove_reference<A\
- , >::type BOOST_PP_INTERCEPT\
- )\
- >::type\
- >::type\
- type;\
- };\
- \
- template<BOOST_PP_ENUM_PARAMS_Z(Z, N, typename A)>\
+ #define BOOST_PROTO_CONST0
+
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PROTO_CONST1 const
+
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PROTO_TEMPLATE_YES_(Z, N) template<BOOST_PP_ENUM_PARAMS_Z(Z,
N, typename A)>
+
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PROTO_TEMPLATE_NO_(Z, N)
+
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, Data, Const)\
+ BOOST_PP_IF(N, BOOST_PROTO_TEMPLATE_YES_, BOOST_PROTO_TEMPLATE_NO_)(Z,
N)\
typename boost::proto::generate<\
BOOST_PP_TUPLE_ELEM(3, 2, Data)\
, typename boost::proto::result_of::BOOST_PP_CAT(funop, N)<\
- BOOST_PP_TUPLE_ELEM(3, 1, Data) const\
+ BOOST_PP_TUPLE_ELEM(3, 1, Data) BOOST_PROTO_CONST ## Const\
BOOST_PP_ENUM_TRAILING_PARAMS_Z(Z, N, const A)\
>::type\
>::type const\
- operator ()(BOOST_PP_ENUM_BINARY_PARAMS_Z(Z, N, A, const &a)) const\
+ operator ()(BOOST_PP_ENUM_BINARY_PARAMS_Z(Z, N, A, const &a))
BOOST_PROTO_CONST ## Const\
{\
typedef boost::proto::result_of::BOOST_PP_CAT(funop, N)<\
- BOOST_PP_TUPLE_ELEM(3, 1, Data) const\
+ BOOST_PP_TUPLE_ELEM(3, 1, Data) BOOST_PROTO_CONST ## Const\
BOOST_PP_ENUM_TRAILING_PARAMS_Z(Z, N, const A)\
> funop;\
return boost::proto::generate<BOOST_PP_TUPLE_ELEM(3, 2, Data),
typename funop::type>::make(\
- funop::call(*static_cast<BOOST_PP_TUPLE_ELEM(3, 1, Data) const
*>(this) BOOST_PP_ENUM_TRAILING_PARAMS_Z(Z, N, a))\
+ funop::call(*static_cast<BOOST_PP_TUPLE_ELEM(3, 1, Data)
BOOST_PROTO_CONST ## Const *>(this) BOOST_PP_ENUM_TRAILING_PARAMS_Z(Z, N, a))\
);\
}\
/**/
/// INTERNAL ONLY
///
+ #define BOOST_PROTO_DEFINE_FUN_OP_CONST(Z, N, Data)\
+ BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, Data, 1)
+
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PROTO_DEFINE_FUN_OP_NON_CONST(Z, N, Data)\
+ BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, Data, 0)
+
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PROTO_DEFINE_FUN_OP(Z, N, Data)\
+ BOOST_PROTO_DEFINE_FUN_OP_CONST(Z, N, Data)\
+ BOOST_PROTO_DEFINE_FUN_OP_NON_CONST(Z, N, Data)\
+ /**/
+
+ /// INTERNAL ONLY
+ ///
#define BOOST_PROTO_EXTENDS_ARG(z, n, Expr)\
typedef\
typename Expr::BOOST_PP_CAT(BOOST_PP_CAT(arg, n), _type)\
@@ -110,106 +125,97 @@
}\
/**/
- #define BOOST_PROTO_EXTENDS_ASSIGN(Expr, Derived, Domain)\
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PROTO_EXTENDS_ASSIGN_IMPL_(Expr, Derived, Domain, Const)\
template<typename A>\
- typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived >, typename
boost::proto::result_of::as_arg<A>::type> > >::type const\
- operator =(A &a)\
+ typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived BOOST_PROTO_CONST ## Const>,
typename boost::proto::result_of::as_arg<A>::type> > >::type const\
+ operator =(A &a) BOOST_PROTO_CONST ## Const\
{\
- typedef boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived >, typename
boost::proto::result_of::as_arg<A>::type> > that_type;\
- that_type that = {{*static_cast<Derived *>(this)},
boost::proto::as_arg(a)};\
+ typedef boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived BOOST_PROTO_CONST ## Const>,
typename boost::proto::result_of::as_arg<A>::type> > that_type;\
+ that_type that = {{*static_cast<Derived BOOST_PROTO_CONST ## Const
*>(this)}, boost::proto::as_arg(a)};\
return boost::proto::generate<Domain, that_type>::make(that);\
}\
\
template<typename A>\
- typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived >, typename
boost::proto::result_of::as_arg<A const>::type> > >::type const\
- operator =(A const &a)\
+ typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived BOOST_PROTO_CONST ## Const>,
typename boost::proto::result_of::as_arg<A const>::type> > >::type const\
+ operator =(A const &a) BOOST_PROTO_CONST ## Const\
{\
- typedef boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived >, typename
boost::proto::result_of::as_arg<A const>::type> > that_type;\
- that_type that = {{*static_cast<Derived *>(this)},
boost::proto::as_arg(a)};\
+ typedef boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived BOOST_PROTO_CONST ## Const>,
typename boost::proto::result_of::as_arg<A const>::type> > that_type;\
+ that_type that = {{*static_cast<Derived BOOST_PROTO_CONST ## Const
*>(this)}, boost::proto::as_arg(a)};\
return boost::proto::generate<Domain, that_type>::make(that);\
}\
- \
+ /**/
+
+ #define BOOST_PROTO_EXTENDS_ASSIGN_CONST(Expr, Derived, Domain)\
+ BOOST_PROTO_EXTENDS_ASSIGN_IMPL_(Expr, Derived, Domain, 1)
+
+ #define BOOST_PROTO_EXTENDS_ASSIGN_NON_CONST(Expr, Derived, Domain)\
+ BOOST_PROTO_EXTENDS_ASSIGN_IMPL_(Expr, Derived, Domain, 0)
+
+ #define BOOST_PROTO_EXTENDS_ASSIGN(Expr, Derived, Domain)\
+ BOOST_PROTO_EXTENDS_ASSIGN_CONST(Expr, Derived, Domain)\
+ BOOST_PROTO_EXTENDS_ASSIGN_NON_CONST(Expr, Derived, Domain)\
+ /**/
+
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PROTO_EXTENDS_SUBSCRIPT_IMPL_(Expr, Derived, Domain, Const)\
template<typename A>\
- typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived const>, typename
boost::proto::result_of::as_arg<A>::type> > >::type const\
- operator =(A &a) const\
+ typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived BOOST_PROTO_CONST ## Const>,
typename boost::proto::result_of::as_arg<A>::type> > >::type const\
+ operator [](A &a) BOOST_PROTO_CONST ## Const\
{\
- typedef boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived const>, typename
boost::proto::result_of::as_arg<A>::type> > that_type;\
- that_type that = {{*static_cast<Derived const *>(this)},
boost::proto::as_arg(a)};\
+ typedef boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived BOOST_PROTO_CONST ## Const>,
typename boost::proto::result_of::as_arg<A>::type> > that_type;\
+ that_type that = {{*static_cast<Derived BOOST_PROTO_CONST ## Const
*>(this)}, boost::proto::as_arg(a)};\
return boost::proto::generate<Domain, that_type>::make(that);\
}\
\
template<typename A>\
- typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived const>, typename
boost::proto::result_of::as_arg<A const>::type> > >::type const\
- operator =(A const &a) const\
+ typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived BOOST_PROTO_CONST ## Const>,
typename boost::proto::result_of::as_arg<A const>::type> > >::type const\
+ operator [](A const &a) BOOST_PROTO_CONST ## Const\
{\
- typedef boost::proto::expr<boost::proto::tag::assign,
boost::proto::args2<boost::proto::ref_<Derived const>, typename
boost::proto::result_of::as_arg<A const>::type> > that_type;\
- that_type that = {{*static_cast<Derived const *>(this)},
boost::proto::as_arg(a)};\
+ typedef boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived BOOST_PROTO_CONST ## Const>,
typename boost::proto::result_of::as_arg<A const>::type> > that_type;\
+ that_type that = {{*static_cast<Derived BOOST_PROTO_CONST ## Const
*>(this)}, boost::proto::as_arg(a)};\
return boost::proto::generate<Domain, that_type>::make(that);\
}\
/**/
+ #define BOOST_PROTO_EXTENDS_SUBSCRIPT_CONST(Expr, Derived, Domain)\
+ BOOST_PROTO_EXTENDS_SUBSCRIPT_IMPL_(Expr, Derived, Domain, 1)
+
+ #define BOOST_PROTO_EXTENDS_SUBSCRIPT_NON_CONST(Expr, Derived, Domain)\
+ BOOST_PROTO_EXTENDS_SUBSCRIPT_IMPL_(Expr, Derived, Domain, 0)
+
#define BOOST_PROTO_EXTENDS_SUBSCRIPT(Expr, Derived, Domain)\
- template<typename A>\
- typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived >, typename
boost::proto::result_of::as_arg<A>::type> > >::type const\
- operator [](A &a)\
- {\
- typedef boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived >, typename
boost::proto::result_of::as_arg<A>::type> > that_type;\
- that_type that = {{*static_cast<Derived *>(this)},
boost::proto::as_arg(a)};\
- return boost::proto::generate<Domain, that_type>::make(that);\
- }\
- \
- template<typename A>\
- typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived >, typename
boost::proto::result_of::as_arg<A const>::type> > >::type const\
- operator [](A const &a)\
- {\
- typedef boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived >, typename
boost::proto::result_of::as_arg<A const>::type> > that_type;\
- that_type that = {{*static_cast<Derived *>(this)},
boost::proto::as_arg(a)};\
- return boost::proto::generate<Domain, that_type>::make(that);\
- }\
- \
- template<typename A>\
- typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived const>, typename
boost::proto::result_of::as_arg<A>::type> > >::type const\
- operator [](A &a) const\
- {\
- typedef boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived const>, typename
boost::proto::result_of::as_arg<A>::type> > that_type;\
- that_type that = {{*static_cast<Derived const *>(this)},
boost::proto::as_arg(a)};\
- return boost::proto::generate<Domain, that_type>::make(that);\
- }\
- \
- template<typename A>\
- typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived const>, typename
boost::proto::result_of::as_arg<A const>::type> > >::type const\
- operator [](A const &a) const\
- {\
- typedef boost::proto::expr<boost::proto::tag::subscript,
boost::proto::args2<boost::proto::ref_<Derived const>, typename
boost::proto::result_of::as_arg<A const>::type> > that_type;\
- that_type that = {{*static_cast<Derived const *>(this)},
boost::proto::as_arg(a)};\
- return boost::proto::generate<Domain, that_type>::make(that);\
- }\
+ BOOST_PROTO_EXTENDS_SUBSCRIPT_CONST(Expr, Derived, Domain)\
+ BOOST_PROTO_EXTENDS_SUBSCRIPT_NON_CONST(Expr, Derived, Domain)\
/**/
/// INTERNAL ONLY
///
#define BOOST_PROTO_EXTENDS_FUNCTION_(Expr, Derived, Domain)\
template<typename Sig>\
- struct result {};\
- \
- template<typename This>\
- struct result<This()>\
+ struct result\
{\
- typedef typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::function,
boost::proto::args1<boost::proto::ref_<Derived const> > > >::type type;\
+ typedef\
+ typename boost::proto::generate<Domain, typename
boost::proto::result_of::funop<Sig, Derived>::type>::type\
+ type;\
};\
- \
- typename boost::proto::generate<Domain,
boost::proto::expr<boost::proto::tag::function,
boost::proto::args1<boost::proto::ref_<Derived const> > > >::type const\
- operator ()() const\
- {\
- typedef boost::proto::expr<boost::proto::tag::function,
boost::proto::args1<boost::proto::ref_<Derived const> > > that_type;\
- that_type that = {{*static_cast<Derived const *>(this)}};\
- return boost::proto::generate<Domain, that_type>::make(that);\
- }\
+ /**/
+
+ #define BOOST_PROTO_EXTENDS_FUNCTION_CONST(Expr, Derived, Domain)\
+ BOOST_PROTO_EXTENDS_FUNCTION_(Expr, Derived, Domain)\
+ BOOST_PP_REPEAT_FROM_TO(0, BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY),
BOOST_PROTO_DEFINE_FUN_OP_CONST, (Expr, Derived, Domain))\
+ /**/
+
+ #define BOOST_PROTO_EXTENDS_FUNCTION_NON_CONST(Expr, Derived, Domain)\
+ BOOST_PROTO_EXTENDS_FUNCTION_(Expr, Derived, Domain)\
+ BOOST_PP_REPEAT_FROM_TO(0, BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY),
BOOST_PROTO_DEFINE_FUN_OP_NON_CONST, (Expr, Derived, Domain))\
/**/
#define BOOST_PROTO_EXTENDS_FUNCTION(Expr, Derived, Domain)\
BOOST_PROTO_EXTENDS_FUNCTION_(Expr, Derived, Domain)\
- BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY),
BOOST_PROTO_DEFINE_FUN_OP, (Expr, Derived, Domain))\
+ BOOST_PP_REPEAT_FROM_TO(0, BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY),
BOOST_PROTO_DEFINE_FUN_OP, (Expr, Derived, Domain))\
/**/
/// \brief Empty type to be used as a dummy template parameter of
@@ -242,7 +248,7 @@
/// \brief extends\<\> class template for adding behaviors to a proto
expression template
///
- template<typename Expr, typename Derived, typename Domain>
+ template<typename Expr, typename Derived, typename Domain, typename Tag>
struct extends
{
extends()
@@ -258,6 +264,44 @@
{}
BOOST_PROTO_EXTENDS(Expr, Derived, Domain)
+ BOOST_PROTO_EXTENDS_ASSIGN_CONST(Expr, Derived, Domain)
+ BOOST_PROTO_EXTENDS_SUBSCRIPT_CONST(Expr, Derived, Domain)
+
+ // Instead of using BOOST_PROTO_EXTENDS_FUNCTION, which uses
+ // nested preprocessor loops, use file iteration here to generate
+ // the operator() overloads, which is more efficient.
+ BOOST_PROTO_EXTENDS_FUNCTION_(Expr, Derived, Domain)
+
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PP_LOCAL_MACRO(N) \
+ BOOST_PROTO_DEFINE_FUN_OP_CONST(1, N, (Expr, Derived, Domain))\
+ /**/
+
+ /// INTERNAL ONLY
+ ///
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY))
+ #include BOOST_PP_LOCAL_ITERATE()
+ };
+
+ /// \brief extends\<\> class template for adding behaviors to a proto
expression template
+ ///
+ template<typename Expr, typename Derived, typename Domain>
+ struct extends<Expr, Derived, Domain, tag::terminal>
+ {
+ extends()
+ : expr()
+ {}
+
+ extends(extends const &that)
+ : expr(that.expr)
+ {}
+
+ extends(Expr const &expr_)
+ : expr(expr_)
+ {}
+
+ BOOST_PROTO_EXTENDS(Expr, Derived, Domain)
BOOST_PROTO_EXTENDS_ASSIGN(Expr, Derived, Domain)
BOOST_PROTO_EXTENDS_SUBSCRIPT(Expr, Derived, Domain)
@@ -274,7 +318,7 @@
/// INTERNAL ONLY
///
- #define BOOST_PP_LOCAL_LIMITS (1, BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY))
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY))
#include BOOST_PP_LOCAL_ITERATE()
};
Index: operators.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/operators.hpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- operators.hpp 30 Apr 2007 23:07:18 -0000 1.28
+++ operators.hpp 21 May 2007 03:21:33 -0000 1.29
@@ -158,8 +158,8 @@
BOOST_PROTO_UNARY_OP(++, tag::pre_inc)
BOOST_PROTO_UNARY_OP(--, tag::pre_dec)
- BOOST_PROTO_BINARY_OP(<<, tag::left_shift)
- BOOST_PROTO_BINARY_OP(>>, tag::right_shift)
+ BOOST_PROTO_BINARY_OP(<<, tag::shift_left)
+ BOOST_PROTO_BINARY_OP(>>, tag::shift_right)
BOOST_PROTO_BINARY_OP(*, tag::multiplies)
BOOST_PROTO_BINARY_OP(/, tag::divides)
BOOST_PROTO_BINARY_OP(%, tag::modulus)
@@ -179,8 +179,8 @@
BOOST_PROTO_BINARY_OP(BOOST_PP_COMMA(), tag::comma)
BOOST_PROTO_BINARY_OP(->*, tag::mem_ptr)
- BOOST_PROTO_BINARY_OP(<<=, tag::left_shift_assign)
- BOOST_PROTO_BINARY_OP(>>=, tag::right_shift_assign)
+ BOOST_PROTO_BINARY_OP(<<=, tag::shift_left_assign)
+ BOOST_PROTO_BINARY_OP(>>=, tag::shift_right_assign)
BOOST_PROTO_BINARY_OP(*=, tag::multilpies_assign)
BOOST_PROTO_BINARY_OP(/=, tag::divides_assign)
BOOST_PROTO_BINARY_OP(%=, tag::modulus_assign)
Index: proto_fwd.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/proto_fwd.hpp,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- proto_fwd.hpp 30 Apr 2007 23:07:18 -0000 1.61
+++ proto_fwd.hpp 21 May 2007 03:21:33 -0000 1.62
@@ -62,8 +62,8 @@
struct post_inc;
struct post_dec;
- struct left_shift;
- struct right_shift;
+ struct shift_left;
+ struct shift_right;
struct multiplies;
struct divides;
struct modulus;
@@ -84,8 +84,8 @@
struct mem_ptr;
struct assign;
- struct left_shift_assign;
- struct right_shift_assign;
+ struct shift_left_assign;
+ struct shift_right_assign;
struct multilpies_assign;
struct divides_assign;
struct modulus_assign;
@@ -197,7 +197,7 @@
typedef domain<> default_domain;
- template<typename Expr, typename Derived, typename Domain = default_domain>
+ template<typename Expr, typename Derived, typename Domain =
default_domain, typename Tag = typename Expr::tag_type>
struct extends;
struct default_context;
@@ -284,8 +284,8 @@
template<typename T> struct post_inc;
template<typename T> struct post_dec;
- template<typename T, typename U> struct left_shift;
- template<typename T, typename U> struct right_shift;
+ template<typename T, typename U> struct shift_left;
+ template<typename T, typename U> struct shift_right;
template<typename T, typename U> struct multiplies;
template<typename T, typename U> struct divides;
template<typename T, typename U> struct modulus;
@@ -306,8 +306,8 @@
template<typename T, typename U> struct mem_ptr;
template<typename T, typename U> struct assign;
- template<typename T, typename U> struct left_shift_assign;
- template<typename T, typename U> struct right_shift_assign;
+ template<typename T, typename U> struct shift_left_assign;
+ template<typename T, typename U> struct shift_right_assign;
template<typename T, typename U> struct multilpies_assign;
template<typename T, typename U> struct divides_assign;
template<typename T, typename U> struct modulus_assign;
Index: proto_typeof.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/proto_typeof.hpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- proto_typeof.hpp 30 Apr 2007 23:07:18 -0000 1.13
+++ proto_typeof.hpp 21 May 2007 03:21:33 -0000 1.14
@@ -29,8 +29,8 @@
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::pre_dec)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::post_inc)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::post_dec)
-BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::left_shift)
-BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::right_shift)
+BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::shift_left)
+BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::shift_right)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::multiplies)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::divides)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::modulus)
@@ -50,8 +50,8 @@
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::comma)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::mem_ptr)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::assign)
-BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::left_shift_assign)
-BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::right_shift_assign)
+BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::shift_left_assign)
+BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::shift_right_assign)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::multilpies_assign)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::divides_assign)
BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::modulus_assign)
Index: tags.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/tags.hpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- tags.hpp 29 Apr 2007 22:03:43 -0000 1.9
+++ tags.hpp 21 May 2007 03:21:33 -0000 1.10
@@ -50,10 +50,10 @@
struct post_dec {};
/// Tag type for the binary \<\< operator.
- struct left_shift {};
+ struct shift_left {};
/// Tag type for the binary \>\> operator.
- struct right_shift {};
+ struct shift_right {};
/// Tag type for the binary * operator.
struct multiplies {};
@@ -113,10 +113,10 @@
struct assign {};
/// Tag type for the binary \<\<= operator.
- struct left_shift_assign {};
+ struct shift_left_assign {};
/// Tag type for the binary \>\>= operator.
- struct right_shift_assign {};
+ struct shift_right_assign {};
/// Tag type for the binary *= operator.
struct multilpies_assign {};
Index: traits.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/traits.hpp,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- traits.hpp 30 Apr 2007 23:07:18 -0000 1.50
+++ traits.hpp 21 May 2007 03:21:33 -0000 1.51
@@ -236,8 +236,8 @@
BOOST_PROTO_UNARY_GENERATOR(post_inc)
BOOST_PROTO_UNARY_GENERATOR(post_dec)
- BOOST_PROTO_BINARY_GENERATOR(left_shift)
- BOOST_PROTO_BINARY_GENERATOR(right_shift)
+ BOOST_PROTO_BINARY_GENERATOR(shift_left)
+ BOOST_PROTO_BINARY_GENERATOR(shift_right)
BOOST_PROTO_BINARY_GENERATOR(multiplies)
BOOST_PROTO_BINARY_GENERATOR(divides)
BOOST_PROTO_BINARY_GENERATOR(modulus)
@@ -258,8 +258,8 @@
BOOST_PROTO_BINARY_GENERATOR(mem_ptr)
BOOST_PROTO_BINARY_GENERATOR(assign)
- BOOST_PROTO_BINARY_GENERATOR(left_shift_assign)
- BOOST_PROTO_BINARY_GENERATOR(right_shift_assign)
+ BOOST_PROTO_BINARY_GENERATOR(shift_left_assign)
+ BOOST_PROTO_BINARY_GENERATOR(shift_right_assign)
BOOST_PROTO_BINARY_GENERATOR(multilpies_assign)
BOOST_PROTO_BINARY_GENERATOR(divides_assign)
BOOST_PROTO_BINARY_GENERATOR(modulus_assign)
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs