Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
extends.hpp File Reference

Macros and a base class for defining end-user expression types. More...

Include dependency graph for extends.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  boost::proto::exprns_::is_proto_expr
 Empty type to be used as a dummy template parameter of POD expression wrappers. More...
 
struct  boost::proto::exprns_::extends< Expr, Derived, Domain, Arity >
 extends<> class template for adding behaviors to a Proto expression template More...
 
struct  boost::proto::exprns_::extends< Expr, Derived, Domain, 0 >
 extends<> class template for adding behaviors to a Proto expression template More...
 
struct  boost::proto::exprns_::virtual_member< This, Fun, Domain >
 INTERNAL ONLY. More...
 

Namespaces

 boost
 Duration formatting facet for input.
 
 boost::proto
 
 boost::proto::exprns_
 

Macros

#define BOOST_PROTO_OFFSETOF   offsetof
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_CONST()   const
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_TYPENAME()   typename
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_TEMPLATE_YES_(Z, N)   template<BOOST_PP_ENUM_PARAMS_Z(Z, N, typename A)>
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_TEMPLATE_NO_(Z, N)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, DATA, Const)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(Const)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_DEFINE_FUN_OP_CONST(Z, N, DATA)   BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, DATA, BOOST_PROTO_CONST) \
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_DEFINE_FUN_OP_NON_CONST(Z, N, DATA)   BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, DATA, BOOST_PP_EMPTY) \
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_DEFINE_FUN_OP(Z, N, DATA)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_EXTENDS_CHILD(Z, N, DATA)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_BASIC_EXTENDS_(Expr, Derived, Domain)
 
#define BOOST_PROTO_BASIC_EXTENDS(Expr, Derived, Domain)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_IMPL_(This, Const, Typename)
 
#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_(This, Typename)   BOOST_PROTO_EXTENDS_COPY_ASSIGN_IMPL_(This, BOOST_PROTO_CONST, Typename) \
 
#define BOOST_PROTO_EXTENDS_ASSIGN_IMPL_(ThisConst, ThatConst)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_EXTENDS_ASSIGN_CONST_()
 
#define BOOST_PROTO_EXTENDS_ASSIGN_NON_CONST_()
 
#define BOOST_PROTO_EXTENDS_ASSIGN_()
 
#define BOOST_PROTO_EXTENDS_ASSIGN_CONST()
 
#define BOOST_PROTO_EXTENDS_ASSIGN_NON_CONST()
 
#define BOOST_PROTO_EXTENDS_ASSIGN()
 
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_IMPL_(ThisConst, ThatConst)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_CONST()
 
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_NON_CONST()
 
#define BOOST_PROTO_EXTENDS_SUBSCRIPT()
 
#define BOOST_PROTO_EXTENDS_FUNCTION_()
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_EXTENDS_FUNCTION_CONST()
 
#define BOOST_PROTO_EXTENDS_FUNCTION_NON_CONST()
 
#define BOOST_PROTO_EXTENDS_FUNCTION()
 
#define BOOST_PROTO_EXTENDS(Expr, Derived, Domain)
 
#define BOOST_PROTO_EXTENDS_USING_ASSIGN(Derived)
 
#define BOOST_PROTO_EXTENDS_USING_ASSIGN_NON_DEPENDENT(Derived)
 
#define BOOST_PROTO_NO_WAVE_OUTPUT
 
#define BOOST_PROTO_EXTENDS_MEMBER_(R, DOMAIN, ELEM)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_EXTENDS_MEMBERS_WITH_DOMAIN(SEQ, DOMAIN)
 For declaring virtual data members in an extension class. More...
 
#define BOOST_PROTO_EXTENDS_MEMBERS(SEQ)   BOOST_PROTO_EXTENDS_MEMBERS_WITH_DOMAIN(SEQ, proto_domain) \
 For declaring virtual data members in an extension class. More...
 

Detailed Description

Macros and a base class for defining end-user expression types.

Macro Definition Documentation

#define BOOST_PROTO_BASIC_EXTENDS (   Expr,
  Derived,
  Domain 
)
Value:
BOOST_PROTO_BASIC_EXTENDS_(Expr, Derived, Domain) \
typedef void proto_is_aggregate_; \
#define BOOST_PROTO_BASIC_EXTENDS_(Expr, Derived, Domain)
Definition: extends.hpp:160

INTERNAL ONLY.

#define BOOST_PROTO_BASIC_EXTENDS_ (   Expr,
  Derived,
  Domain 
)
#define BOOST_PROTO_CONST ( )    const

INTERNAL ONLY.

#define BOOST_PROTO_DEFINE_FUN_OP (   Z,
  N,
  DATA 
)
Value:
#define BOOST_PROTO_DEFINE_FUN_OP_NON_CONST(Z, N, DATA)
INTERNAL ONLY.
Definition: extends.hpp:141
#define N
Definition: forward_adapter.hpp:198
#define BOOST_PROTO_DEFINE_FUN_OP_CONST(Z, N, DATA)
INTERNAL ONLY.
Definition: extends.hpp:135

INTERNAL ONLY.

#define BOOST_PROTO_DEFINE_FUN_OP_CONST (   Z,
  N,
  DATA 
)    BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, DATA, BOOST_PROTO_CONST) \

INTERNAL ONLY.

#define BOOST_PROTO_DEFINE_FUN_OP_IMPL_ (   Z,
  N,
  DATA,
  Const 
)
Value:
proto_generator( \
proto_derived_expr Const() \
>::type \
) \
>::type const \
operator ()(BOOST_PP_ENUM_BINARY_PARAMS_Z(Z, N, A, const &a)) Const() \
{ \
proto_derived_expr Const() \
> funop; \
return proto_generator()( \
*static_cast<proto_derived_expr Const() *>(this) \
) \
); \
} \
#define BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, count, param)
Definition: enum_trailing_params.hpp:34
#define BOOST_PROTO_RESULT_OF
Definition: proto_fwd.hpp:110
auto call(F f, Context const &context, mpl::true_)
Definition: call.hpp:52
#define BOOST_PROTO_TEMPLATE_NO_(Z, N)
INTERNAL ONLY.
Definition: extends.hpp:71
#define BOOST_PP_IF(cond, t, f)
Definition: if.hpp:26
#define BOOST_PROTO_TEMPLATE_YES_(Z, N)
INTERNAL ONLY.
Definition: extends.hpp:67
#define BOOST_PP_ENUM_BINARY_PARAMS_Z(z, count, p1, p2)
Definition: enum_binary_params.hpp:50
#define BOOST_PP_CAT(a, b)
Definition: cat.hpp:24
#define N
Definition: forward_adapter.hpp:198
Allocator Allocator a
Definition: function_template.hpp:727
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_PROTO_DISABLE_MSVC_C4714
Definition: proto_fwd.hpp:131
#define BOOST_FORCEINLINE
Definition: suffix.hpp:583

INTERNAL ONLY.

#define BOOST_PROTO_DEFINE_FUN_OP_NON_CONST (   Z,
  N,
  DATA 
)    BOOST_PROTO_DEFINE_FUN_OP_IMPL_(Z, N, DATA, BOOST_PP_EMPTY) \

INTERNAL ONLY.

#define BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_ (   Const)
Value:
template<typename... A> \
proto_generator( \
proto_derived_expr Const()(A const &...) \
, proto_derived_expr \
, proto_domain \
>::type \
) \
operator ()(A const &...a) Const() \
{ \
proto_derived_expr Const()(A const &...) \
, proto_derived_expr \
, proto_domain \
> funop; \
return proto_generator()( \
*static_cast<proto_derived_expr Const() *>(this) \
, a... \
) \
); \
} \
#define BOOST_PROTO_RESULT_OF
Definition: proto_fwd.hpp:110
auto call(F f, Context const &context, mpl::true_)
Definition: call.hpp:52
A helper metafunction for computing the return type of proto::expr<>::operator(). ...
Definition: expr.hpp:124
Allocator Allocator a
Definition: function_template.hpp:727
result_type operator()()
Definition: bind_template.hpp:17
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_PROTO_DISABLE_MSVC_C4714
Definition: proto_fwd.hpp:131

INTERNAL ONLY.

#define BOOST_PROTO_EXTENDS (   Expr,
  Derived,
  Domain 
)
Value:
BOOST_PROTO_BASIC_EXTENDS(Expr, Derived, Domain) \
#define BOOST_PROTO_EXTENDS_ASSIGN()
Definition: extends.hpp:322
#define BOOST_PROTO_EXTENDS_SUBSCRIPT()
Definition: extends.hpp:374
#define BOOST_PROTO_EXTENDS_FUNCTION()
Definition: extends.hpp:410
#define BOOST_PROTO_BASIC_EXTENDS(Expr, Derived, Domain)
INTERNAL ONLY.
Definition: extends.hpp:204
#define BOOST_PROTO_EXTENDS_ASSIGN ( )
Value:
#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_(This, Typename)
Definition: extends.hpp:255
#define BOOST_PROTO_EXTENDS_ASSIGN_()
Definition: extends.hpp:307
#define BOOST_PROTO_TYPENAME()
INTERNAL ONLY.
Definition: extends.hpp:63
#define BOOST_PROTO_EXTENDS_ASSIGN_ ( )
Value:
#define BOOST_PROTO_EXTENDS_ASSIGN_CONST_()
Definition: extends.hpp:297
#define BOOST_PROTO_EXTENDS_ASSIGN_NON_CONST_()
Definition: extends.hpp:302
#define BOOST_PROTO_EXTENDS_ASSIGN_CONST ( )
Value:
#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_(This, Typename)
Definition: extends.hpp:255
#define BOOST_PROTO_TYPENAME()
INTERNAL ONLY.
Definition: extends.hpp:63
#define BOOST_PROTO_EXTENDS_ASSIGN_CONST_()
Definition: extends.hpp:297
#define BOOST_PROTO_EXTENDS_ASSIGN_CONST_ ( )
Value:
#define BOOST_PROTO_EXTENDS_ASSIGN_IMPL_(ThisConst, ThatConst)
INTERNAL ONLY.
Definition: extends.hpp:262
#define BOOST_PROTO_CONST()
INTERNAL ONLY.
Definition: extends.hpp:59
#define BOOST_PP_EMPTY()
Definition: empty.hpp:21
#define BOOST_PROTO_EXTENDS_ASSIGN_IMPL_ (   ThisConst,
  ThatConst 
)

INTERNAL ONLY.

#define BOOST_PROTO_EXTENDS_ASSIGN_NON_CONST ( )
Value:
#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_(This, Typename)
Definition: extends.hpp:255
#define BOOST_PROTO_TYPENAME()
INTERNAL ONLY.
Definition: extends.hpp:63
#define BOOST_PROTO_EXTENDS_ASSIGN_NON_CONST_()
Definition: extends.hpp:302
#define BOOST_PROTO_EXTENDS_ASSIGN_NON_CONST_ ( )
Value:
#define BOOST_PROTO_EXTENDS_ASSIGN_IMPL_(ThisConst, ThatConst)
INTERNAL ONLY.
Definition: extends.hpp:262
#define BOOST_PROTO_CONST()
INTERNAL ONLY.
Definition: extends.hpp:59
#define BOOST_PP_EMPTY()
Definition: empty.hpp:21
#define BOOST_PROTO_EXTENDS_CHILD (   Z,
  N,
  DATA 
)
Value:
typedef \
typename proto_base_expr::BOOST_PP_CAT(proto_child, N) \
BOOST_PP_CAT(proto_child, N); \
#define BOOST_PP_CAT(a, b)
Definition: cat.hpp:24
#define N
Definition: forward_adapter.hpp:198

INTERNAL ONLY.

#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_ (   This,
  Typename 
)    BOOST_PROTO_EXTENDS_COPY_ASSIGN_IMPL_(This, BOOST_PROTO_CONST, Typename) \
#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_IMPL_ (   This,
  Const,
  Typename 
)
#define BOOST_PROTO_EXTENDS_FUNCTION ( )
Value:
#define BOOST_PROTO_EXTENDS_FUNCTION_()
INTERNAL ONLY.
Definition: extends.hpp:381
#define BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(Const)
INTERNAL ONLY.
Definition: extends.hpp:105
#define BOOST_PROTO_CONST()
INTERNAL ONLY.
Definition: extends.hpp:59
#define BOOST_PP_EMPTY()
Definition: empty.hpp:21
#define BOOST_PROTO_EXTENDS_FUNCTION_ ( )
Value:
template<typename Sig> \
struct result \
{ \
typedef \
proto_generator( \
Sig \
, proto_derived_expr \
, proto_domain \
>::type \
) \
}; \
#define BOOST_PROTO_RESULT_OF
Definition: proto_fwd.hpp:110
detail::safe_reaction_result result
Definition: result.hpp:91
A helper metafunction for computing the return type of proto::expr<>::operator(). ...
Definition: expr.hpp:124
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42

INTERNAL ONLY.

#define BOOST_PROTO_EXTENDS_FUNCTION_CONST ( )
Value:
#define BOOST_PROTO_EXTENDS_FUNCTION_()
INTERNAL ONLY.
Definition: extends.hpp:381
#define BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(Const)
INTERNAL ONLY.
Definition: extends.hpp:105
#define BOOST_PROTO_CONST()
INTERNAL ONLY.
Definition: extends.hpp:59
#define BOOST_PROTO_EXTENDS_FUNCTION_NON_CONST ( )
Value:
#define BOOST_PROTO_EXTENDS_FUNCTION_()
INTERNAL ONLY.
Definition: extends.hpp:381
#define BOOST_PROTO_DEFINE_FUN_OP_VARIADIC_IMPL_(Const)
INTERNAL ONLY.
Definition: extends.hpp:105
#define BOOST_PP_EMPTY()
Definition: empty.hpp:21
#define BOOST_PROTO_EXTENDS_MEMBER_ (   R,
  DOMAIN,
  ELEM 
)
Value:
proto_derived_expr \
, BOOST_PP_TUPLE_ELEM(2, 0, ELEM) \
, DOMAIN \
> BOOST_PP_TUPLE_ELEM(2, 1, ELEM); \
INTERNAL ONLY.
Definition: extends.hpp:560
#define BOOST_PP_TUPLE_ELEM(size, n, tuple)
Definition: elem.hpp:57

INTERNAL ONLY.

#define BOOST_PROTO_EXTENDS_MEMBERS (   SEQ)    BOOST_PROTO_EXTENDS_MEMBERS_WITH_DOMAIN(SEQ, proto_domain) \

For declaring virtual data members in an extension class.

#define BOOST_PROTO_EXTENDS_MEMBERS_WITH_DOMAIN (   SEQ,
  DOMAIN 
)
Value:
union \
{ \
char proto_member_union_start_; \
}; \
#define BOOST_PROTO_EXTENDS_MEMBER_(R, DOMAIN, ELEM)
INTERNAL ONLY.
Definition: extends.hpp:609
#define BOOST_PP_SEQ_FOR_EACH(macro, data, seq)
Definition: for_each.hpp:28

For declaring virtual data members in an extension class.

#define BOOST_PROTO_EXTENDS_SUBSCRIPT ( )
Value:
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_CONST()
Definition: extends.hpp:364
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_NON_CONST()
Definition: extends.hpp:369
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_CONST ( )
Value:
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_IMPL_(ThisConst, ThatConst)
INTERNAL ONLY.
Definition: extends.hpp:329
#define BOOST_PROTO_CONST()
INTERNAL ONLY.
Definition: extends.hpp:59
#define BOOST_PP_EMPTY()
Definition: empty.hpp:21
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_IMPL_ (   ThisConst,
  ThatConst 
)

INTERNAL ONLY.

#define BOOST_PROTO_EXTENDS_SUBSCRIPT_NON_CONST ( )
Value:
#define BOOST_PROTO_EXTENDS_SUBSCRIPT_IMPL_(ThisConst, ThatConst)
INTERNAL ONLY.
Definition: extends.hpp:329
#define BOOST_PROTO_CONST()
INTERNAL ONLY.
Definition: extends.hpp:59
#define BOOST_PP_EMPTY()
Definition: empty.hpp:21
#define BOOST_PROTO_EXTENDS_USING_ASSIGN (   Derived)
Value:
typedef typename Derived::proto_extends proto_extends; \
using proto_extends::operator =; \
#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_(This, Typename)
Definition: extends.hpp:255
#define BOOST_PROTO_TYPENAME()
INTERNAL ONLY.
Definition: extends.hpp:63
#define BOOST_PROTO_EXTENDS_USING_ASSIGN_NON_DEPENDENT (   Derived)
Value:
typedef Derived::proto_extends proto_extends; \
using proto_extends::operator =; \
#define BOOST_PROTO_EXTENDS_COPY_ASSIGN_(This, Typename)
Definition: extends.hpp:255
#define BOOST_PP_EMPTY()
Definition: empty.hpp:21
#define BOOST_PROTO_NO_WAVE_OUTPUT
#define BOOST_PROTO_OFFSETOF   offsetof
#define BOOST_PROTO_TEMPLATE_NO_ (   Z,
  N 
)

INTERNAL ONLY.

#define BOOST_PROTO_TEMPLATE_YES_ (   Z,
  N 
)    template<BOOST_PP_ENUM_PARAMS_Z(Z, N, typename A)>

INTERNAL ONLY.

#define BOOST_PROTO_TYPENAME ( )    typename

INTERNAL ONLY.