Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/boost/xpressive/proto/proto_fwd.hpp @ 44

Last change on this file since 44 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 5.0 KB
Line 
1///////////////////////////////////////////////////////////////////////////////
2/// \file proto_fwd.hpp
3/// Forward declarations of all of proto's public types and functions.
4//
5//  Copyright 2004 Eric Niebler. Distributed under the Boost
6//  Software License, Version 1.0. (See accompanying file
7//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8
9#ifndef BOOST_PROTO_FWD_HPP_EAN_04_01_2005
10#define BOOST_PROTO_FWD_HPP_EAN_04_01_2005
11
12#include <boost/mpl/bool.hpp>
13#include <boost/mpl/apply_fwd.hpp>
14#include <boost/spirit/fusion/sequence/tuple_forward.hpp>
15#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
16
17#ifndef BOOST_PROTO_MAX_ARITY
18# define BOOST_PROTO_MAX_ARITY FUSION_MAX_TUPLE_SIZE
19#endif
20
21namespace boost { namespace proto
22{
23
24    ///////////////////////////////////////////////////////////////////////////////
25    // Operator tags
26    struct unary_tag;
27    struct binary_tag;
28    struct nary_tag;
29
30    struct noop_tag;
31    struct unary_plus_tag;
32    struct unary_minus_tag;
33    struct unary_star_tag;
34    struct complement_tag;
35    struct address_of_tag;
36    struct logical_not_tag;
37    struct pre_inc_tag;
38    struct pre_dec_tag;
39    struct post_inc_tag;
40    struct post_dec_tag;
41
42    struct left_shift_tag;
43    struct right_shift_tag;
44    struct multiply_tag;
45    struct divide_tag;
46    struct modulus_tag;
47    struct add_tag;
48    struct subtract_tag;
49    struct less_tag;
50    struct greater_tag;
51    struct less_equal_tag;
52    struct greater_equal_tag;
53    struct equal_tag;
54    struct not_equal_tag;
55    struct logical_or_tag;
56    struct logical_and_tag;
57    struct bitand_tag;
58    struct bitor_tag;
59    struct bitxor_tag;
60    struct comma_tag;
61    struct mem_ptr_tag;
62
63    struct assign_tag;
64    struct left_shift_assign_tag;
65    struct right_shift_assign_tag;
66    struct multiply_assign_tag;
67    struct divide_assign_tag;
68    struct modulus_assign_tag;
69    struct add_assign_tag;
70    struct subtract_assign_tag;
71    struct bitand_assign_tag;
72    struct bitor_assign_tag;
73    struct bitxor_assign_tag;
74    struct subscript_tag;
75
76    struct function_tag;
77
78    template<typename Tag>
79    struct is_unary;
80
81    template<typename Tag>
82    struct is_binary;
83
84    template<typename Tag>
85    struct is_nary;
86
87    template<typename Arg, typename Op>
88    struct unary_op;
89
90    template<typename Left, typename Right, typename Op>
91    struct binary_op;
92
93    template<typename Op, typename Param = void>
94    struct op_proxy;
95
96    template
97    <
98        typename Fun
99      , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_PROTO_MAX_ARITY, typename A, fusion::void_t)
100    >
101    struct nary_op;
102
103    template<typename Op, typename Arg>
104    unary_op<Arg, Op> const
105    make_op(Arg const &arg);
106
107    template<typename Op, typename Left, typename Right>
108    binary_op<Left, Right, Op> const
109    make_op(Left const &left, Right const &right);
110
111    template<typename Arg>
112    unary_op<Arg, noop_tag> const
113    noop(Arg const &arg);
114
115    struct op_root;
116
117    template<typename T>
118    struct is_proxy;
119
120    template<typename T>
121    struct is_op;
122
123    template<typename T, bool IsOp = is_op<T>::value>
124    struct as_op;
125
126    template<typename Op>
127    struct op_base;
128
129    template<typename T>
130    struct value_type;
131
132    template<typename Op>
133    struct arg_type;
134
135    template<typename Op>
136    struct left_type;
137
138    template<typename Op>
139    struct right_type;
140
141    template<typename Op>
142    struct tag_type;
143
144    template<typename OpTag, typename DomainTag, typename Dummy = void>
145    struct compiler;
146
147    template<typename OpTag, typename DomainTag, bool RightFirst = true>
148    struct fold_compiler;
149
150    template<typename Lambda, typename DomainTag, typename Compiler = void>
151    struct transform_compiler;
152
153    template<typename Lambda, typename DomainTag>
154    struct branch_compiler;
155
156    template<typename Predicate, typename IfCompiler, typename ElseCompiler>
157    struct conditional_compiler;
158
159    template<typename Lambda, typename Map>
160    struct switch_compiler;
161
162    struct error_compiler;
163
164    struct identity_transform;
165
166    struct arg_transform;
167
168    struct left_transform;
169
170    struct right_transform;
171
172    template<typename Always>
173    struct always_transform;
174
175    template<typename First, typename Second>
176    struct compose_transforms;
177
178    template<typename Predicate, typename IfTransform, typename ElseTransform = identity_transform>
179    struct conditional_transform;
180
181    template<typename Op>
182    typename arg_type<Op>::const_reference arg(Op const &op);
183
184    template<typename Op>
185    typename left_type<Op>::const_reference left(Op const &op);
186
187    template<typename Op>
188    typename right_type<Op>::const_reference right(Op const &op);
189
190    template<typename Op, typename State, typename Visitor, typename DomainTag>
191    struct compile_result;
192
193    template<typename Op, typename State, typename Visitor, typename DomainTag>
194    typename compile_result<Op, State, Visitor, DomainTag>::type const
195    compile(Op const &op, State const &state, Visitor &visitor, DomainTag tag_type);
196
197}} // namespace boost::proto
198
199#endif
Note: See TracBrowser for help on using the repository browser.