Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
boost::proto Namespace Reference

Namespaces

 argsns_
 
 context
 
 detail
 
 domainns_
 
 envns_
 
 exprns_
 
 functional
 
 hidden_detail_
 
 result_of
 
 tagns_
 
 utility
 

Classes

struct  _
 A wildcard grammar element that matches any expression, and a transform that returns the current expression unchanged. More...
 
struct  _byref
 A unary CallableTransform that wraps its argument in a boost::reference_wrapper<>. More...
 
struct  _byval
 A unary CallableTransform that strips references and boost::reference_wrapper<> from its argument. More...
 
struct  _child_c
 A PrimitiveTransform that returns N-th child of the current expression. More...
 
struct  _data
 A PrimitiveTransform that returns the current data unmodified. More...
 
struct  _deep_copy
 A PrimitiveTransform for deep-copying Proto expression trees. More...
 
struct  _default
 
struct  _env
 
struct  _env_var
 
struct  _expr
 A PrimitiveTransform that returns the current expression unmodified. More...
 
struct  _state
 A PrimitiveTransform that returns the current state unmodified. More...
 
struct  _value
 A PrimitiveTransform that returns the value of the current terminal expression. More...
 
struct  _void
 A PrimitiveTransform that does nothing and returns void. More...
 
struct  address_of
 
struct  and_
 For matching all of a set of grammars. More...
 
struct  arity_of
 A metafunction that returns the arity of a Proto expression. More...
 
struct  arity_of< Expr & >
 
struct  assign
 
struct  basic_default_generator
 A simple generator that passes an expression through unchanged and specifies a preference for proto::basic_expr<> over proto::expr<>. More...
 
struct  binary_expr
 A metafunction for generating binary expression types with a specified tag type, a grammar element for matching binary expressions, and a PrimitiveTransform that dispatches to the pass_through<> transform. More...
 
struct  bitwise_and
 
struct  bitwise_and_assign
 
struct  bitwise_or
 
struct  bitwise_or_assign
 
struct  bitwise_xor
 
struct  bitwise_xor_assign
 
struct  by_value_generator
 A generator that replaces child nodes held by reference with ones held by value. More...
 
struct  call
 Wrap PrimitiveTransform so that when<> knows it is callable. More...
 
struct  call< detail::msvc_fun_workaround< Fun > >
 INTERNAL ONLY. More...
 
struct  call< Fun * >
 A specialization that treats function pointer Transforms as if they were function type Transforms. More...
 
struct  call< Fun(A0)>
 Either call the PolymorphicFunctionObject with 1 argument, or invoke the PrimitiveTransform with 3 arguments. More...
 
struct  call< Fun(A0, A1)>
 Either call the PolymorphicFunctionObject with 2 arguments, or invoke the PrimitiveTransform with 3 arguments. More...
 
struct  call< Fun(A0, A1, A2)>
 Call the PolymorphicFunctionObject or the PrimitiveTransform with the current expression, state and data, transformed according to A0, A1, and A2, respectively. More...
 
struct  callable
 
struct  char_
 A PrimitiveTransform that returns a specified char. More...
 
struct  comma
 
struct  complement
 
struct  compose_generators
 A composite generator that first applies one transform to an expression and then forwards the result on to another generator for further transformation. More...
 
struct  convertible_to
 For matching terminals that are convertible to a type. More...
 
struct  default_generator
 A simple generator that passes an expression through unchanged. More...
 
struct  dereference
 
struct  divides
 
struct  divides_assign
 
struct  domain_of
 A metafunction that returns the domain of a given type. More...
 
struct  domain_of< boost::reference_wrapper< T > const, void >
 INTERNAL ONLY. More...
 
struct  domain_of< boost::reference_wrapper< T >, void >
 INTERNAL ONLY. More...
 
struct  domain_of< T &, void >
 INTERNAL ONLY. More...
 
struct  domain_of< T, typename T::proto_is_expr_ >
 INTERNAL ONLY. More...
 
struct  equal_to
 
struct  eval_fun
 INTERNAL ONLY. More...
 
struct  exact
 For forcing exact matches of terminal types. More...
 
struct  external_transforms
 For defining a map of Rule/Transform pairs for use with when<T, external_transform> to make transforms external to the grammar. More...
 
struct  fold
 A PrimitiveTransform that invokes the fusion::fold<> algorithm to accumulate. More...
 
struct  fold< _, State0, Fun >
 INTERNAL ONLY. More...
 
struct  fold_tree
 A PrimitiveTransform that recursively applies the fold<> transform to sub-trees that all share a common tag type. More...
 
struct  function
 
struct  generator
 A generator that wraps expressions passed to it in the specified extension wrapper. More...
 
struct  greater
 
struct  greater_equal
 
struct  if_
 Used to select one grammar or another based on the result of a compile-time Boolean. More...
 
struct  if_else_
 A metafunction for generating ternary conditional expression types, a grammar element for matching ternary conditional expressions, and a PrimitiveTransform that dispatches to the pass_through<> transform. More...
 
struct  int_
 A PrimitiveTransform that returns a specified int. More...
 
struct  integral_c
 A PrimitiveTransform that returns a specified integral constant. More...
 
struct  is_aggregate
 A Boolean metafunction that indicates whether a type requires aggregate initialization. More...
 
struct  is_callable
 Boolean metafunction which detects whether a type is a callable function object type or not. More...
 
struct  is_callable< _byref >
 INTERNAL ONLY. More...
 
struct  is_callable< _byval >
 INTERNAL ONLY. More...
 
struct  is_callable< _child_c< N > >
 INTERNAL ONLY. More...
 
struct  is_callable< _data >
 INTERNAL ONLY. More...
 
struct  is_callable< _default< Grammar > >
 
struct  is_callable< _env_var< Key > >
 INTERNAL ONLY. More...
 
struct  is_callable< _expr >
 INTERNAL ONLY. More...
 
struct  is_callable< _state >
 INTERNAL ONLY. More...
 
struct  is_callable< _value >
 INTERNAL ONLY. More...
 
struct  is_callable< and_< BOOST_PP_ENUM_PARAMS(BOOST_PROTO_MAX_LOGICAL_ARITY, G) > >
 INTERNAL ONLY. More...
 
struct  is_callable< by_value_generator >
 INTERNAL ONLY. More...
 
struct  is_callable< call< Fun > >
 INTERNAL ONLY. More...
 
struct  is_callable< char_< I > >
 INTERNAL ONLY. More...
 
struct  is_callable< compose_generators< First, Second > >
 INTERNAL ONLY. More...
 
struct  is_callable< default_generator >
 INTERNAL ONLY. More...
 
struct  is_callable< eval_fun< Context > >
 INTERNAL ONLY. More...
 
struct  is_callable< fold< Sequence, State, Fun > >
 INTERNAL ONLY. More...
 
struct  is_callable< fold_tree< Sequence, State0, Fun > >
 INTERNAL ONLY. More...
 
struct  is_callable< functional::as_child< Domain > >
 INTERNAL ONLY. More...
 
struct  is_callable< functional::as_expr< Domain > >
 INTERNAL ONLY. More...
 
struct  is_callable< functional::child< N > >
 INTERNAL ONLY. More...
 
struct  is_callable< functional::child_c< N > >
 INTERNAL ONLY. More...
 
struct  is_callable< functional::env_var< Key > >
 INTERNAL ONLY. More...
 
struct  is_callable< functional::has_env_var< Key > >
 INTERNAL ONLY. More...
 
struct  is_callable< functional::make_expr< Tag, Domain > >
 INTERNAL ONLY. More...
 
struct  is_callable< functional::unpack_expr< Tag, Domain > >
 INTERNAL ONLY. More...
 
struct  is_callable< generator< Extends > >
 INTERNAL ONLY. More...
 
struct  is_callable< if_< If, Then, Else > >
 INTERNAL ONLY. More...
 
struct  is_callable< int_< I > >
 INTERNAL ONLY. More...
 
struct  is_callable< integral_c< T, I > >
 INTERNAL ONLY. More...
 
struct  is_callable< lazy< Object > >
 INTERNAL ONLY. More...
 
struct  is_callable< long_< I > >
 INTERNAL ONLY. More...
 
struct  is_callable< make< Object > >
 INTERNAL ONLY. More...
 
struct  is_callable< not_< Grammar > >
 INTERNAL ONLY. More...
 
struct  is_callable< or_< BOOST_PP_ENUM_PARAMS(BOOST_PROTO_MAX_LOGICAL_ARITY, G) > >
 INTERNAL ONLY. More...
 
struct  is_callable< pass_through< Grammar, Domain > >
 INTERNAL ONLY. More...
 
struct  is_callable< phoenix::call< Fun, Dummy > >
 
struct  is_callable< pod_generator< Extends > >
 INTERNAL ONLY. More...
 
struct  is_callable< protect< PrimitiveTransform > >
 INTERNAL ONLY. More...
 
struct  is_callable< proto::_ >
 INTERNAL ONLY. More...
 
struct  is_callable< proto::callable >
 INTERNAL ONLY. More...
 
struct  is_callable< proto::transform< PrimitiveTransform, X > >
 INTERNAL ONLY. More...
 
struct  is_callable< reverse_fold< Sequence, State, Fun > >
 INTERNAL ONLY. More...
 
struct  is_callable< reverse_fold_tree< Sequence, State0, Fun > >
 INTERNAL ONLY. More...
 
struct  is_callable< size_t< I > >
 INTERNAL ONLY. More...
 
struct  is_callable< spirit::modify< Domain, Enable > >
 
struct  is_callable< switch_< Cases, Transform > >
 INTERNAL ONLY. More...
 
struct  is_callable< vararg< Grammar > >
 INTERNAL ONLY. More...
 
struct  is_callable< when< Grammar, Transform > >
 INTERNAL ONLY. More...
 
struct  is_domain
 A metafunction that returns mpl::true_ if the type T is the type of a Proto domain; mpl::false_ otherwise. More...
 
struct  is_domain< T, typename T::proto_is_domain_ >
 INTERNAL ONLY. More...
 
struct  is_env
 
struct  is_env< T &, void >
 
struct  is_env< T, typename T::proto_environment_ >
 
struct  is_expr
 A Boolean metafunction that indicates whether a given type T is a Proto expression type. More...
 
struct  is_expr< T &, void >
 
struct  is_expr< T, typename T::proto_is_expr_ >
 A Boolean metafunction that indicates whether a given type T is a Proto expression type. More...
 
struct  is_extension
 
struct  is_extension< T & >
 
struct  is_sub_domain_of
 A metafunction that returns mpl::true_ if the type SubDomain is a sub-domain of SuperDomain; mpl::false_ otherwise. More...
 
struct  is_sub_domain_of< proto::no_super_domain, SuperDomain >
 INTERNAL ONLY. More...
 
struct  is_sub_domain_of< SuperDomain, SuperDomain >
 INTERNAL ONLY. More...
 
struct  is_transform
 Boolean metafunction which detects whether a type is a PrimitiveTransform type or not. More...
 
struct  lazy
 A PrimitiveTransform that uses make<> to build a CallableTransform, and then uses call<> to apply it. More...
 
struct  lazy< detail::msvc_fun_workaround< Fun > >
 INTERNAL ONLY. More...
 
struct  less
 
struct  less_equal
 
struct  logical_and
 
struct  logical_not
 
struct  logical_or
 
struct  long_
 A PrimitiveTransform that returns a specified long. More...
 
struct  make
 A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type. More...
 
struct  make< detail::msvc_fun_workaround< Fun > >
 INTERNAL ONLY. More...
 
struct  matches
 A Boolean metafunction that evaluates whether a given expression type matches a grammar. More...
 
struct  matches< Expr &, Grammar >
 INTERNAL ONLY. More...
 
struct  mem_ptr
 
struct  member
 
struct  minus
 
struct  minus_assign
 
struct  modulus
 
struct  modulus_assign
 
struct  multiplies
 
struct  multiplies_assign
 
struct  nary_expr
 
struct  negate
 
struct  noinvoke
 
struct  not_
 Inverts the set of expressions matched by a grammar. More...
 
struct  not_equal_to
 
struct  nullary_expr
 A metafunction for generating nullary expression types with a specified tag type, a grammar element for matching nullary expressions, and a PrimitiveTransform that returns the current expression unchanged. More...
 
struct  or_
 For matching one of a set of alternate grammars. More...
 
struct  otherwise
 Syntactic sugar for when<_, Fun>, for use in grammars to handle all the cases not yet handled. More...
 
struct  pass_through
 A PrimitiveTransform that transforms the child expressions of an expression node according to the corresponding children of a Grammar. More...
 
struct  plus
 
struct  plus_assign
 
struct  pod_generator
 A generator that wraps expressions passed to it in the specified extension wrapper and uses aggregate initialization for the wrapper. More...
 
struct  post_dec
 
struct  post_inc
 
struct  pre_dec
 
struct  pre_inc
 
struct  protect
 A PrimitiveTransform which prevents another PrimitiveTransform from being applied in an ObjectTransform. More...
 
struct  reverse_fold
 A PrimitiveTransform that is the same as the fold<> transform, except that it folds back-to-front instead of front-to-back. More...
 
struct  reverse_fold< _, State0, Fun >
 INTERNAL ONLY. More...
 
struct  reverse_fold_tree
 A PrimitiveTransform that recursively applies the reverse_fold<> transform to sub-trees that all share a common tag type. More...
 
struct  shift_left
 
struct  shift_left_assign
 
struct  shift_right
 
struct  shift_right_assign
 
struct  size_t
 A PrimitiveTransform that returns a specified std::size_t. More...
 
struct  subscript
 
struct  switch_
 For matching one of a set of alternate grammars, which are looked up based on some property of an expression. More...
 
struct  switch_< Cases >
 INTERNAL ONLY (This is merely a compile-time optimization for the common case) More...
 
struct  tag_of
 A metafunction that returns the tag type of a Proto expression. More...
 
struct  tag_of< Expr & >
 
struct  terminal
 A metafunction for generating terminal expression types, a grammar element for matching terminal expressions, and a PrimitiveTransform that returns the current expression unchanged. More...
 
struct  transform
 
struct  transform_impl
 
struct  transform_impl< Expr &, State &, Data & >
 
struct  transform_impl< Expr &, State &, Data >
 
struct  transform_impl< Expr &, State, Data & >
 
struct  transform_impl< Expr &, State, Data >
 
struct  transform_impl< Expr, State &, Data & >
 
struct  transform_impl< Expr, State &, Data >
 
struct  transform_impl< Expr, State, Data & >
 
struct  unary_expr
 A metafunction for generating unary expression types with a specified tag type, a grammar element for matching unary expressions, and a PrimitiveTransform that dispatches to the pass_through<> transform. More...
 
struct  unary_plus
 
struct  unexpr
 Lets you inherit the interface of an expression while hiding from Proto the fact that the type is a Proto expression. More...
 
struct  use_basic_expr
 Annotate a generator to indicate that it would prefer to be passed instances of proto::basic_expr<> rather than proto::expr<>. More...
 
struct  vararg
 For matching a Grammar to a variable number of sub-expressions. More...
 
struct  wants_basic_expr
 Tests a generator to see whether it would prefer to be passed instances of proto::basic_expr<> rather than proto::expr<>. More...
 
struct  wants_basic_expr< Generator, typename Generator::proto_use_basic_expr_ >
 
struct  when
 A grammar element and a PrimitiveTransform that associates a transform with the grammar. More...
 
struct  when< Grammar, external_transform >
 This specialization uses the Data parameter as a collection of transforms that can be indexed by the specified rule. More...
 
struct  when< Grammar, Fun * >
 A specialization that treats function pointer Transforms as if they were function type Transforms. More...
 

Typedefs

typedef detail::ignore const ignore
 
typedef functional::flatten _flatten
 
typedef functional::make_pair _make_pair
 
typedef functional::first _first
 
typedef functional::second _second
 
typedef functional::pop_front _at
 
typedef functional::pop_front _pop_front
 
typedef functional::push_front _push_front
 
typedef functional::pop_back _pop_back
 
typedef functional::push_back _push_back
 
typedef functional::reverse _reverse
 
typedef functional::eval _eval
 
typedef functional::make_expr
< tag::terminal
_make_terminal
 
typedef functional::make_expr
< tag::unary_plus
_make_unary_plus
 
typedef functional::make_expr
< tag::negate
_make_negate
 
typedef functional::make_expr
< tag::dereference
_make_dereference
 
typedef functional::make_expr
< tag::complement
_make_complement
 
typedef functional::make_expr
< tag::address_of
_make_address_of
 
typedef functional::make_expr
< tag::logical_not
_make_logical_not
 
typedef functional::make_expr
< tag::pre_inc
_make_pre_inc
 
typedef functional::make_expr
< tag::pre_dec
_make_pre_dec
 
typedef functional::make_expr
< tag::post_inc
_make_post_inc
 
typedef functional::make_expr
< tag::post_dec
_make_post_dec
 
typedef functional::make_expr
< tag::shift_left
_make_shift_left
 
typedef functional::make_expr
< tag::shift_right
_make_shift_right
 
typedef functional::make_expr
< tag::multiplies
_make_multiplies
 
typedef functional::make_expr
< tag::divides
_make_divides
 
typedef functional::make_expr
< tag::modulus
_make_modulus
 
typedef functional::make_expr
< tag::plus
_make_plus
 
typedef functional::make_expr
< tag::minus
_make_minus
 
typedef functional::make_expr
< tag::less
_make_less
 
typedef functional::make_expr
< tag::greater
_make_greater
 
typedef functional::make_expr
< tag::less_equal
_make_less_equal
 
typedef functional::make_expr
< tag::greater_equal
_make_greater_equal
 
typedef functional::make_expr
< tag::equal_to
_make_equal_to
 
typedef functional::make_expr
< tag::not_equal_to
_make_not_equal_to
 
typedef functional::make_expr
< tag::logical_or
_make_logical_or
 
typedef functional::make_expr
< tag::logical_and
_make_logical_and
 
typedef functional::make_expr
< tag::bitwise_and
_make_bitwise_and
 
typedef functional::make_expr
< tag::bitwise_or
_make_bitwise_or
 
typedef functional::make_expr
< tag::bitwise_xor
_make_bitwise_xor
 
typedef functional::make_expr
< tag::comma
_make_comma
 
typedef functional::make_expr
< tag::mem_ptr
_make_mem_ptr
 
typedef functional::make_expr
< tag::assign
_make_assign
 
typedef functional::make_expr
< tag::shift_left_assign
_make_shift_left_assign
 
typedef functional::make_expr
< tag::shift_right_assign
_make_shift_right_assign
 
typedef functional::make_expr
< tag::multiplies_assign
_make_multiplies_assign
 
typedef functional::make_expr
< tag::divides_assign
_make_divides_assign
 
typedef functional::make_expr
< tag::modulus_assign
_make_modulus_assign
 
typedef functional::make_expr
< tag::plus_assign
_make_plus_assign
 
typedef functional::make_expr
< tag::minus_assign
_make_minus_assign
 
typedef functional::make_expr
< tag::bitwise_and_assign
_make_bitwise_and_assign
 
typedef functional::make_expr
< tag::bitwise_or_assign
_make_bitwise_or_assign
 
typedef functional::make_expr
< tag::bitwise_xor_assign
_make_bitwise_xor_assign
 
typedef functional::make_expr
< tag::subscript
_make_subscript
 
typedef functional::make_expr
< tag::if_else_
_make_if_else
 
typedef functional::make_expr
< tag::function
_make_function
 
typedef _child_c< 0 > _child0
 
typedef _child_c< 1 > _child1
 
typedef _child0 _child
 
typedef _child0 _left
 
typedef _child1 _right
 

Functions

template<typename Expr >
void display_expr (Expr const &expr, std::ostream &sout)
 Pretty-print a Proto expression tree. More...
 
template<typename Expr >
void display_expr (Expr const &expr)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Grammar , typename Expr >
void assert_matches (Expr const &)
 Assert at compile time that a particular expression matches the specified grammar. More...
 
template<typename Grammar , typename Expr >
void assert_matches_not (Expr const &)
 Assert at compile time that a particular expression does not match the specified grammar. More...
 
template<typename Expr >
proto::result_of::deep_copy
< Expr >::type 
deep_copy (Expr const &e)
 A function for deep-copying Proto expression trees. More...
 
template<typename Expr , typename Context >
proto::result_of::eval< Expr,
Context >::type 
eval (Expr &e, Context &ctx)
 Evaluate a given Proto expression with a given context. More...
 
template<typename Expr , typename Context >
proto::result_of::eval< Expr,
Context >::type 
eval (Expr &e, Context const &ctx)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Expr , typename Context >
proto::result_of::eval< Expr
const, Context >::type 
eval (Expr const &e, Context &ctx)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Expr , typename Context >
proto::result_of::eval< Expr
const, Context >::type 
eval (Expr const &e, Context const &ctx)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Expr >
proto::detail::flat_view< Expr >
const 
flatten (Expr &e)
 A function that returns a "flattened" view of a Proto expression tree. More...
 
template<typename Expr >
proto::detail::flat_view< Expr
const > const 
flatten (Expr const &e)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename T >
literal< T & > const lit (T &t)
 A helper function for creating a literal<> wrapper. More...
 
template<typename T >
literal< T const & > const lit (T const &t)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Tag , typename A0 >
BOOST_FORCEINLINE
lazy_disable_if< is_domain< A0 >
, result_of::make_expr< Tag,
A0 const > >::type const 
make_expr (A0 const &a0)
 Construct an expression of the requested tag type with a domain and with the specified arguments as children. More...
 
template<typename Tag , typename Domain , typename C0 >
BOOST_FORCEINLINE
result_of::make_expr< Tag,
Domain, C0 const >::type
const 
make_expr (C0 const &c0)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Tag , typename Sequence >
BOOST_FORCEINLINE
lazy_disable_if< is_domain
< Sequence >
, result_of::unpack_expr< Tag,
Sequence const > >::type
const 
unpack_expr (Sequence const &sequence)
 Construct an expression of the requested tag type with a domain and with childres from the specified Fusion Forward Sequence. More...
 
template<typename Tag , typename Domain , typename Sequence2 >
BOOST_FORCEINLINE
result_of::unpack_expr< Tag,
Domain, Sequence2 const >
::type const 
unpack_expr (Sequence2 const &sequence2)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
 BOOST_PP_REPEAT_FROM_TO (2, BOOST_PP_DEC(10), M0,~) struct _byref
 
template<typename T >
BOOST_FORCEINLINE add_const
< typename result_of::as_expr
< T, default_domain >::type >
::type 
as_expr (T &t BOOST_PROTO_DISABLE_IF_IS_CONST(T) BOOST_PROTO_DISABLE_IF_IS_FUNCTION(T))
 A function that wraps non-Proto expression types in Proto terminals and leaves Proto expression types alone. More...
 
template<typename T >
BOOST_FORCEINLINE add_const
< typename result_of::as_expr
< T const, default_domain >
::type >::type 
as_expr (T const &t)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Domain , typename T >
BOOST_FORCEINLINE add_const
< typename result_of::as_expr
< T, Domain >::type >::type 
as_expr (T &t BOOST_PROTO_DISABLE_IF_IS_CONST(T) BOOST_PROTO_DISABLE_IF_IS_FUNCTION(T))
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Domain , typename T >
BOOST_FORCEINLINE add_const
< typename result_of::as_expr
< T const, Domain >::type >
::type 
as_expr (T const &t)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename T >
BOOST_FORCEINLINE add_const
< typename result_of::as_child
< T, default_domain >::type >
::type 
as_child (T &t BOOST_PROTO_DISABLE_IF_IS_CONST(T) BOOST_PROTO_DISABLE_IF_IS_FUNCTION(T))
 A function that wraps non-Proto expression types in Proto terminals (by reference) and returns Proto expression types by reference. More...
 
template<typename T >
BOOST_FORCEINLINE add_const
< typename result_of::as_child
< T const, default_domain >
::type >::type 
as_child (T const &t)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Domain , typename T >
BOOST_FORCEINLINE add_const
< typename result_of::as_child
< T, Domain >::type >::type 
as_child (T &t BOOST_PROTO_DISABLE_IF_IS_CONST(T) BOOST_PROTO_DISABLE_IF_IS_FUNCTION(T))
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Domain , typename T >
BOOST_FORCEINLINE add_const
< typename result_of::as_child
< T const, Domain >::type >
::type 
as_child (T const &t)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename N , typename Expr >
BOOST_FORCEINLINE
result_of::child< Expr &, N >
::type 
child (Expr &e BOOST_PROTO_DISABLE_IF_IS_CONST(Expr))
 Return the Nth child of the specified Proto expression. More...
 
template<typename N , typename Expr >
BOOST_FORCEINLINE
result_of::child< Expr const
&, N >::type 
child (Expr const &e)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Expr2 >
BOOST_FORCEINLINE
detail::expr_traits< typename
Expr2::proto_base_expr::proto_child0 >
::reference 
child (Expr2 &expr2 BOOST_PROTO_DISABLE_IF_IS_CONST(Expr2))
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Expr2 >
BOOST_FORCEINLINE
detail::expr_traits< typename
Expr2::proto_base_expr::proto_child0 >
::const_reference 
child (Expr2 const &expr2)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<long N, typename Expr >
BOOST_FORCEINLINE
result_of::child_c< Expr &, N >
::type 
child_c (Expr &e BOOST_PROTO_DISABLE_IF_IS_CONST(Expr))
 Return the Nth child of the specified Proto expression. More...
 
template<long N, typename Expr >
BOOST_FORCEINLINE
result_of::child_c< Expr const
&, N >::type 
child_c (Expr const &e)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Expr >
BOOST_FORCEINLINE
result_of::value< Expr & >
::type 
value (Expr &e BOOST_PROTO_DISABLE_IF_IS_CONST(Expr))
 Return the value stored within the specified Proto terminal expression. More...
 
template<typename Expr >
BOOST_FORCEINLINE
result_of::value< Expr const & >
::type 
value (Expr const &e)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Expr >
BOOST_FORCEINLINE
result_of::left< Expr & >
::type 
left (Expr &e BOOST_PROTO_DISABLE_IF_IS_CONST(Expr))
 Return the left child of the specified binary Proto expression. More...
 
template<typename Expr >
BOOST_FORCEINLINE
result_of::left< Expr const & >
::type 
left (Expr const &e)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Expr >
BOOST_FORCEINLINE
result_of::right< Expr & >
::type 
right (Expr &e BOOST_PROTO_DISABLE_IF_IS_CONST(Expr))
 Return the right child of the specified binary Proto expression. More...
 
template<typename Expr >
BOOST_FORCEINLINE
result_of::right< Expr const & >
::type 
right (Expr const &e)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename T >
proto::result_of::as_env< T & >
::type const 
as_env (T &t BOOST_PROTO_DISABLE_IF_IS_CONST(T))
 
template<typename T >
proto::result_of::as_env< T
const & >::type const 
as_env (T const &t)
 
template<typename Key , typename Env >
proto::result_of::has_env_var
< Env &, Key >::type 
has_env_var (Env &e BOOST_PROTO_DISABLE_IF_IS_CONST(Env))
 
template<typename Key , typename Env >
proto::result_of::has_env_var
< Env const &, Key >::type 
has_env_var (Env const &e)
 
template<typename Key , typename Env >
proto::result_of::env_var< Env
&, Key >::type 
env_var (Env &e BOOST_PROTO_DISABLE_IF_IS_CONST(Env))
 
template<typename Key , typename Env >
proto::result_of::env_var< Env
const &, Key >::type 
env_var (Env const &e)
 

Variables

int const N = (INT_MAX >> 10)
 

Typedef Documentation

Function Documentation

template<typename T >
BOOST_FORCEINLINE add_const<typename result_of::as_child<T, default_domain>::type>::type boost::proto::as_child ( T &t   BOOST_PROTO_DISABLE_IF_IS_CONSTT) BOOST_PROTO_DISABLE_IF_IS_FUNCTION(T)

A function that wraps non-Proto expression types in Proto terminals (by reference) and returns Proto expression types by reference.

The as_child() function turns objects into Proto terminals if they are not Proto expression types already. Non-Proto types are held by reference. Types which are already Proto types are simply returned as-is.

This function can be called either with an explicitly specified Domain parameter (i.e., as_child<Domain>(t)), or without (i.e., as_child(t)). If no domain is specified, default_domain is assumed.

If is_expr<T>value is true, then the argument is returned as-is. Otherwise, as_child() returns Domain()(terminal<T &>::type::make(t)).

Parameters
tThe object to wrap.

References boost::flyweights::t.

template<typename T >
BOOST_FORCEINLINE add_const<typename result_of::as_child<T const, default_domain>::type>::type boost::proto::as_child ( T const &  t)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

template<typename Domain , typename T >
BOOST_FORCEINLINE add_const<typename result_of::as_child<T, Domain>::type>::type boost::proto::as_child ( T &t   BOOST_PROTO_DISABLE_IF_IS_CONSTT) BOOST_PROTO_DISABLE_IF_IS_FUNCTION(T)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References boost::flyweights::t, and template.

template<typename Domain , typename T >
BOOST_FORCEINLINE add_const<typename result_of::as_child<T const, Domain>::type>::type boost::proto::as_child ( T const &  t)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References template.

template<typename T >
proto::result_of::as_env<T &>::type const boost::proto::as_env ( T &t   BOOST_PROTO_DISABLE_IF_IS_CONSTT)
template<typename T >
proto::result_of::as_env<T const &>::type const boost::proto::as_env ( T const &  t)

References boost::flyweights::t.

Referenced by as_env().

template<typename T >
BOOST_FORCEINLINE add_const<typename result_of::as_expr<T, default_domain>::type>::type boost::proto::as_expr ( T &t   BOOST_PROTO_DISABLE_IF_IS_CONSTT) BOOST_PROTO_DISABLE_IF_IS_FUNCTION(T)

A function that wraps non-Proto expression types in Proto terminals and leaves Proto expression types alone.

The as_expr() function turns objects into Proto terminals if they are not Proto expression types already. Non-Proto types are held by value, if possible. Types which are already Proto types are left alone and returned by reference.

This function can be called either with an explicitly specified Domain parameter (i.e., as_expr<Domain>(t)), or without (i.e., as_expr(t)). If no domain is specified, default_domain is assumed.

If is_expr<T>value is true, then the argument is returned unmodified, by reference. Otherwise, the argument is wrapped in a Proto terminal expression node according to the following rules. If T is a function type, let A be T &. Otherwise, let A be the type T stripped of cv-qualifiers. Then, as_expr() returns Domain()(terminal<A>::type::make(t)).

Parameters
tThe object to wrap.

References boost::flyweights::t.

Referenced by boost::xpressive::detail::skip_directive< Skip >::operator()().

template<typename T >
BOOST_FORCEINLINE add_const<typename result_of::as_expr<T const, default_domain>::type>::type boost::proto::as_expr ( T const &  t)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

template<typename Domain , typename T >
BOOST_FORCEINLINE add_const<typename result_of::as_expr<T, Domain>::type>::type boost::proto::as_expr ( T &t   BOOST_PROTO_DISABLE_IF_IS_CONSTT) BOOST_PROTO_DISABLE_IF_IS_FUNCTION(T)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References boost::flyweights::t, and template.

template<typename Domain , typename T >
BOOST_FORCEINLINE add_const<typename result_of::as_expr<T const, Domain>::type>::type boost::proto::as_expr ( T const &  t)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References template.

template<typename Grammar , typename Expr >
void boost::proto::assert_matches ( Expr const &  )

Assert at compile time that a particular expression matches the specified grammar.

Note
Equivalent to BOOST_MPL_ASSERT((proto::matches<Expr, Grammar>))
Parameters
exprThe Proto expression to check againts Grammar

References BOOST_MPL_ASSERT.

template<typename Grammar , typename Expr >
void boost::proto::assert_matches_not ( Expr const &  )

Assert at compile time that a particular expression does not match the specified grammar.

Note
Equivalent to BOOST_MPL_ASSERT_NOT((proto::matches<Expr, Grammar>))
Parameters
exprThe Proto expression to check againts Grammar

References BOOST_MPL_ASSERT_NOT.

boost::proto::BOOST_PP_REPEAT_FROM_TO ( ,
BOOST_PP_DEC(10)  ,
M0  ,
 
)
template<typename N , typename Expr >
BOOST_FORCEINLINE result_of::child<Expr &, N>::type boost::proto::child ( Expr &e   BOOST_PROTO_DISABLE_IF_IS_CONSTExpr)

Return the Nth child of the specified Proto expression.

Return the Nth child of the specified Proto expression. If N is not specified, as in child(expr), then N is assumed to be mpl::long_<0>. The child is returned by reference.

Parameters
exprThe Proto expression.
Precondition
is_expr<Expr>value is true.
N is an MPL Integral Constant.
N::value < Expr::proto_arity::value
Exceptions
nothrow
Returns
A reference to the Nth child

References boost::spirit::x3::detail::call().

Referenced by boost::boyer_myrvold_impl< Graph, VertexIndexMap, StoreOldHandlesPolicy, StoreEmbeddingPolicy >::extract_kuratowski_subgraph(), boost::heap::detail::skew_heap_node< value_type, store_parent_pointer >::is_heap(), boost::spirit::detail::make_unary< Domain, Tag, Grammar >::impl< Expr, State, Data >::operator()(), boost::relaxed_heap< vertex_descriptor, queue_compare_type, VertexIndexMap >::pop(), boost::subgraph< Graph >::subgraph(), and boost::mpi::detail::tree_reduce_impl().

template<typename N , typename Expr >
BOOST_FORCEINLINE result_of::child<Expr const &, N>::type boost::proto::child ( Expr const &  e)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References boost::spirit::x3::detail::call().

template<typename Expr2 >
BOOST_FORCEINLINE detail::expr_traits<typename Expr2::proto_base_expr::proto_child0>::reference boost::proto::child ( Expr2 &expr2   BOOST_PROTO_DISABLE_IF_IS_CONSTExpr2)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

template<typename Expr2 >
BOOST_FORCEINLINE detail::expr_traits<typename Expr2::proto_base_expr::proto_child0>::const_reference boost::proto::child ( Expr2 const &  expr2)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

template<long N, typename Expr >
BOOST_FORCEINLINE result_of::child_c<Expr &, N>::type boost::proto::child_c ( Expr &e   BOOST_PROTO_DISABLE_IF_IS_CONSTExpr)

Return the Nth child of the specified Proto expression.

Return the Nth child of the specified Proto expression. The child is returned by reference.

Parameters
exprThe Proto expression.
Precondition
is_expr<Expr>value is true.
N < Expr::proto_arity::value
Exceptions
nothrow
Returns
A reference to the Nth child

References boost::spirit::x3::detail::call().

Referenced by BOOST_PHOENIX_DEFINE_EXPRESSION().

template<long N, typename Expr >
BOOST_FORCEINLINE result_of::child_c<Expr const &, N>::type boost::proto::child_c ( Expr const &  e)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References boost::spirit::x3::detail::call().

template<typename Expr >
proto::result_of::deep_copy<Expr>::type boost::proto::deep_copy ( Expr const &  e)

A function for deep-copying Proto expression trees.

A function for deep-copying Proto expression trees. When a tree is deep-copied, all internal nodes and most terminals held by reference are instead held by value.

Attention
Terminals of reference-to-function type are left unchanged.
See also
proto::functional::deep_copy.

Referenced by boost::spirit::qi::copy(), and boost::sub_match< BidirectionalIterator >::sub_match().

template<typename Expr >
void boost::proto::display_expr ( Expr const &  expr,
std::ostream &  sout 
)

Pretty-print a Proto expression tree.

Note
Equivalent to functional::display_expr(0, sout)(expr)
Parameters
exprThe Proto expression tree to pretty-print
soutThe ostream to which the output should be written. If not specified, defaults to std::cout.

References display_expr().

Referenced by boost::phoenix::display_expr().

template<typename Expr >
void boost::proto::display_expr ( Expr const &  expr)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Referenced by display_expr().

template<typename Key , typename Env >
proto::result_of::env_var<Env &, Key>::type boost::proto::env_var ( Env &e   BOOST_PROTO_DISABLE_IF_IS_CONSTEnv)
template<typename Key , typename Env >
proto::result_of::env_var<Env const &, Key>::type boost::proto::env_var ( Env const &  e)
template<typename Expr , typename Context >
proto::result_of::eval<Expr, Context>::type boost::proto::eval ( Expr &  e,
Context &  ctx 
)
template<typename Expr , typename Context >
proto::result_of::eval<Expr, Context>::type boost::proto::eval ( Expr &  e,
Context const &  ctx 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References template.

template<typename Expr , typename Context >
proto::result_of::eval<Expr const, Context>::type boost::proto::eval ( Expr const &  e,
Context &  ctx 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References template.

template<typename Expr , typename Context >
proto::result_of::eval<Expr const, Context>::type boost::proto::eval ( Expr const &  e,
Context const &  ctx 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References template.

template<typename Expr >
proto::detail::flat_view<Expr> const boost::proto::flatten ( Expr &  e)

A function that returns a "flattened" view of a Proto expression tree.

For a tree with a top-most node tag of type T, the elements of the flattened sequence are determined by recursing into each child node with the same tag type and returning those nodes of different type. So for instance, the Proto expression tree corresponding to the expression a | b | c has a flattened view with elements [a, b, c], even though the tree is grouped as ((a | b) | c).

template<typename Expr >
proto::detail::flat_view<Expr const> const boost::proto::flatten ( Expr const &  e)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

template<typename Key , typename Env >
proto::result_of::has_env_var<Env &, Key>::type boost::proto::has_env_var ( Env &e   BOOST_PROTO_DISABLE_IF_IS_CONSTEnv)
template<typename Key , typename Env >
proto::result_of::has_env_var<Env const &, Key>::type boost::proto::has_env_var ( Env const &  e)
template<typename Expr >
BOOST_FORCEINLINE result_of::left<Expr &>::type boost::proto::left ( Expr &e   BOOST_PROTO_DISABLE_IF_IS_CONSTExpr)

Return the left child of the specified binary Proto expression.

Return the left child of the specified binary Proto expression. The child is returned by reference.

Parameters
exprThe Proto expression.
Precondition
is_expr<Expr>value is true.
2 == Expr::proto_arity::value
Exceptions
nothrow
Returns
A reference to the left child

Referenced by boost::xpressive::match_results< BidiIter >::let().

template<typename Expr >
BOOST_FORCEINLINE result_of::left<Expr const &>::type boost::proto::left ( Expr const &  e)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

template<typename T >
literal<T &> const boost::proto::lit ( T t)
inline

A helper function for creating a literal<> wrapper.

Parameters
tThe object to wrap.
Returns
literal<T &>(t)
Attention
The returned value holds the argument by reference.
Exceptions
nothrow

References boost::flyweights::t.

Referenced by boost::re_detail::basic_regex_parser< charT, traits >::parse_repeat().

template<typename T >
literal<T const &> const boost::proto::lit ( T const &  t)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References boost::flyweights::t.

template<typename Tag , typename A0 >
BOOST_FORCEINLINE lazy_disable_if< is_domain<A0> , result_of::make_expr< Tag , A0 const > >::type const boost::proto::make_expr ( A0 const &  a0)

Construct an expression of the requested tag type with a domain and with the specified arguments as children.

This function template may be invoked either with or without specifying a Domain argument. If no domain is specified, the domain is deduced by examining in order the domains of the given arguments and taking the first that is not default_domain, if any such domain exists, or default_domain otherwise.

Let wrap_(x) be defined such that:

  • If x is a boost::reference_wrapper<>, wrap_(x) is equivalent to as_child<Domain>(x.get()).
  • Otherwise, wrap_(x) is equivalent to as_expr<Domain>(x).

Let make_<Tag>(b0,...bN) be defined as expr<Tag, listN<C0,...CN> >::make(c0,...cN) where Bx is the type of bx.

Returns
Domain()(make_<Tag>(wrap_(a0),...wrap_(aN))).

Referenced by boost::xpressive::after(), boost::xpressive::before(), BOOST_PHOENIX_DEFINE_EXPRESSION(), boost::xpressive::keep(), boost::phoenix::detail::catch_push_back< TryCatch, Exception, Expr, 1 >::make(), boost::phoenix::detail::catch_all_push_back< TryCatch, Expr, 1 >::make(), boost::phoenix::operator<<(), boost::phoenix::operator>>(), boost::xpressive::optional(), and boost::xpressive::repeat().

template<typename Tag , typename Domain , typename C0 >
BOOST_FORCEINLINE result_of::make_expr< Tag , Domain , C0 const >::type const boost::proto::make_expr ( C0 const &  c0)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

template<typename Expr >
BOOST_FORCEINLINE result_of::right<Expr &>::type boost::proto::right ( Expr &e   BOOST_PROTO_DISABLE_IF_IS_CONSTExpr)

Return the right child of the specified binary Proto expression.

Return the right child of the specified binary Proto expression. The child is returned by reference.

Parameters
exprThe Proto expression.
Precondition
is_expr<Expr>value is true.
2 == Expr::proto_arity::value
Exceptions
nothrow
Returns
A reference to the right child

Referenced by boost::xpressive::match_results< BidiIter >::let().

template<typename Expr >
BOOST_FORCEINLINE result_of::right<Expr const &>::type boost::proto::right ( Expr const &  e)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

template<typename Tag , typename Sequence >
BOOST_FORCEINLINE lazy_disable_if< is_domain<Sequence> , result_of::unpack_expr<Tag, Sequence const> >::type const boost::proto::unpack_expr ( Sequence const &  sequence)

Construct an expression of the requested tag type with a domain and with childres from the specified Fusion Forward Sequence.

This function template may be invoked either with or without specifying a Domain argument. If no domain is specified, the domain is deduced by examining in order the domains of the elements of sequence and taking the first that is not default_domain, if any such domain exists, or default_domain otherwise.

Let s be a Fusion Random Access Sequence equivalent to sequence. Let wrap_<N>(s), where s has type S, be defined such that:

Let make_<Tag>(b0,...bN) be defined as expr<Tag, listN<B0,...BN> >::make(b0,...bN) where Bx is the type of bx.

Parameters
sequencea Fusion Forward Sequence.
Returns
Domain()(make_<Tag>(wrap_<0>(s),...wrap_<N-1>(s))), where N is the size of Sequence.

References boost::spirit::x3::detail::call(), and boost::detail::const.

template<typename Tag , typename Domain , typename Sequence2 >
BOOST_FORCEINLINE result_of::unpack_expr<Tag, Domain, Sequence2 const>::type const boost::proto::unpack_expr ( Sequence2 const &  sequence2)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References boost::spirit::x3::detail::call(), and boost::detail::const.

template<typename Expr >
BOOST_FORCEINLINE result_of::value<Expr &>::type boost::proto::value ( Expr &e   BOOST_PROTO_DISABLE_IF_IS_CONSTExpr)

Return the value stored within the specified Proto terminal expression.

Return the value stored within the specified Proto terminal expression. The value is returned by reference.

Parameters
exprThe Proto terminal expression.
Precondition
N::value == 0
Exceptions
nothrow
Returns
A reference to the terminal's value

Referenced by boost::fusion::extension::deref_impl< proto::tag::proto_expr_iterator< Tag, Domain > >::apply< Iterator, 0 >::call(), boost::fusion::extension::at_impl< proto::tag::proto_expr< Tag, Domain > >::apply< Sequence, Index, 0 >::call(), boost::proto::utility::literal< T, Domain >::get(), boost::xpressive::value< T >::get(), boost::xpressive::reference< T >::get(), boost::xpressive::local< T >::get(), boost::xpressive::match_results< BidiIter >::let(), boost::xpressive::basic_regex< BidiIter >::mark_count(), boost::proto::context::default_eval< Expr, Context, tag::terminal, 0 >::operator()(), boost::spirit::detail::make_terminal_impl< Expr, State, Data, Domain >::operator()(), boost::phoenix::detail::do_assign::operator()(), boost::proto::context::callable_eval< Expr, Context, 0 >::operator()(), boost::proto::_value::impl< Expr, State, Data >::operator()(), boost::spirit::detail::make_directive< Domain, Grammar >::impl< Expr, State, Data >::operator()(), boost::spirit::detail::make_action< Domain, Grammar >::impl< Expr, State, Data >::operator()(), boost::xpressive::basic_regex< BidiIter >::operator=(), boost::xpressive::basic_regex< BidiIter >::regex_id(), and boost::xpressive::basic_regex< BidiIter >::swap().

template<typename Expr >
BOOST_FORCEINLINE result_of::value<Expr const &>::type boost::proto::value ( Expr const &  e)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Variable Documentation

int const boost::proto::N = (INT_MAX >> 10)