]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================= |
2 | Copyright (c) 2006 Tobias Schwinger | |
3 | http://spirit.sourceforge.net/ | |
4 | ||
5 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
6 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
7 | =============================================================================*/ | |
8 | #if !defined(BOOST_SPIRIT_CORE_TYPEOF_HPP) | |
9 | #define BOOST_SPIRIT_CORE_TYPEOF_HPP | |
10 | ||
11 | #include <boost/config.hpp> | |
12 | #include <boost/cstdint.hpp> | |
13 | ||
14 | #include <boost/typeof/typeof.hpp> | |
15 | ||
16 | #include <boost/spirit/home/classic/namespace.hpp> | |
17 | #include <boost/spirit/home/classic/core/nil.hpp> | |
18 | #include <boost/spirit/home/classic/core/primitives/numerics_fwd.hpp> | |
19 | #include <boost/spirit/home/classic/core/scanner/scanner_fwd.hpp> | |
20 | #include <boost/spirit/home/classic/core/scanner/skipper_fwd.hpp> | |
21 | #include <boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp> | |
22 | ||
23 | namespace boost { namespace spirit { | |
24 | ||
25 | BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN | |
26 | ||
27 | // parser.hpp | |
28 | template <typename IteratorT> struct parse_info; | |
29 | struct plain_parser_category; | |
30 | struct binary_parser_category; | |
31 | struct unary_parser_category; | |
32 | struct action_parser_category; | |
33 | ||
34 | // match.hpp | |
35 | template<typename T> class match; | |
36 | ||
37 | // primitives/primitives.hpp | |
38 | template<class ParserT> struct negated_char_parser; | |
39 | template<typename CharT> struct chlit; | |
40 | template<typename CharT> struct range; | |
41 | template<typename IteratorT> class chseq; | |
42 | template<typename IteratorT> class strlit; | |
43 | struct nothing_parser; | |
44 | struct anychar_parser; | |
45 | struct alnum_parser; | |
46 | struct alpha_parser; | |
47 | struct cntrl_parser; | |
48 | struct digit_parser; | |
49 | struct xdigit_parser; | |
50 | struct graph_parser; | |
51 | struct upper_parser; | |
52 | struct lower_parser; | |
53 | struct print_parser; | |
54 | struct punct_parser; | |
55 | struct blank_parser; | |
56 | struct space_parser; | |
57 | struct eol_parser; | |
58 | struct end_parser; | |
59 | ||
60 | // non_terminal/parser_context.hpp | |
61 | template<typename T> struct parser_context; | |
62 | ||
63 | // non_terminal/parser_id.hpp | |
64 | class parser_id; | |
65 | template<int N> struct parser_tag; | |
66 | class dynamic_parser_tag; | |
67 | struct parser_address_tag; | |
68 | ||
69 | // non_terminal/rule.hpp | |
70 | template<typename T0, typename T1, typename T2> class rule; | |
71 | ||
72 | // non_terminal/grammar.hpp | |
73 | template<class DerivedT, typename ContextT> struct grammar; | |
74 | ||
75 | // composite.hpp | |
76 | template<class ParserT, typename ActionT> class action; | |
77 | template<class A, class B> struct alternative; | |
78 | template<class A, class B> struct difference; | |
79 | template<class A, class B> struct exclusive_or; | |
80 | template<class A, class B> struct intersection; | |
81 | template<class a, class b> struct sequence; | |
82 | template<class A, class B> struct sequential_or; | |
83 | template<class S> struct kleene_star; | |
84 | template<class S> struct positive; | |
85 | template<class S> struct optional; | |
86 | // composite/directives.hpp | |
87 | template<class ParserT> struct contiguous; | |
88 | template<class ParserT> struct inhibit_case; | |
89 | template<class BaseT> struct inhibit_case_iteration_policy; | |
90 | template<class A, class B> struct longest_alternative; | |
91 | template<class A, class B> struct shortest_alternative; | |
92 | template<class ParserT, typename BoundsT> struct min_bounded; | |
93 | template<class ParserT, typename BoundsT> struct max_bounded; | |
94 | template<class ParserT, typename BoundsT> struct bounded; | |
95 | // composite/no_actions.hpp | |
96 | template<class Parser> struct no_actions_parser; | |
97 | template<class Base> struct no_actions_action_policy; | |
98 | // composite/epsilon.hpp | |
99 | struct epsilon_parser; | |
100 | template<typename CondT, bool positive> struct condition_parser; | |
101 | template<typename SubjectT> struct empty_match_parser; | |
102 | template<typename SubjectT> struct negated_empty_match_parser; | |
103 | ||
104 | // deprecated assign/push_back actor -- they live somewhere else, now | |
105 | struct assign_action; | |
106 | struct push_back_action; | |
107 | template<typename T, typename ActionT> class ref_value_actor; | |
108 | template<typename T, typename ValueT, typename ActionT> | |
109 | class ref_const_ref_actor; | |
110 | ||
111 | BOOST_SPIRIT_CLASSIC_NAMESPACE_END | |
112 | ||
113 | }} // namespace BOOST_SPIRIT_CLASSIC_NS | |
114 | ||
115 | ||
116 | ||
117 | #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() | |
118 | ||
119 | ||
120 | // parser.hpp | |
121 | ||
122 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::parse_info,1) | |
123 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::plain_parser_category) | |
124 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::binary_parser_category) | |
125 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::unary_parser_category) | |
126 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::action_parser_category) | |
127 | ||
128 | ||
129 | // nil.hpp (included directly) | |
130 | ||
131 | #if !defined(BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED) | |
132 | // registration guard to decouple the iterators from the core | |
133 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::nil_t) | |
134 | # define BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED | |
135 | #endif | |
136 | ||
137 | // match.hpp | |
138 | ||
139 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::match, 1) | |
140 | ||
141 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::match<BOOST_SPIRIT_CLASSIC_NS::nil_t>) | |
142 | ||
143 | ||
144 | // primitives/primitives.hpp | |
145 | ||
146 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::negated_char_parser, 1) | |
147 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::chlit, 1) | |
148 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::range, 1) | |
149 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::chseq, 1) | |
150 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::strlit, 1) | |
151 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::nothing_parser) | |
152 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::anychar_parser) | |
153 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::alnum_parser) | |
154 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::alpha_parser) | |
155 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::cntrl_parser) | |
156 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::digit_parser) | |
157 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::xdigit_parser) | |
158 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::graph_parser) | |
159 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::upper_parser) | |
160 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::lower_parser) | |
161 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::print_parser) | |
162 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::punct_parser) | |
163 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::blank_parser) | |
164 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::space_parser) | |
165 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::eol_parser) | |
166 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::end_parser) | |
167 | ||
168 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chlit<char>) | |
169 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chlit<wchar_t>) | |
170 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::range<char>) | |
171 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::range<wchar_t>) | |
172 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chseq<char const *>) | |
173 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chseq<wchar_t const *>) | |
174 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strlit<char const *>) | |
175 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strlit<wchar_t const *>) | |
176 | ||
177 | ||
178 | // primitives/numerics.hpp (has forward header) | |
179 | ||
180 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::int_parser, (class)(int)(unsigned)(int)) | |
181 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::uint_parser, (class)(int)(unsigned)(int)) | |
182 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::sign_parser) | |
183 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::real_parser, 2) | |
184 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::real_parser_policies, 1) | |
185 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ureal_parser_policies, 1) | |
186 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::strict_real_parser_policies, 1) | |
187 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::strict_ureal_parser_policies, 1) | |
188 | ||
189 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::int_parser, (class)(int)) | |
190 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::uint_parser, (class)(int)) | |
191 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::int_parser<boost::int32_t>) | |
192 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::uint_parser<boost::uint32_t>) | |
193 | #if !defined(BOOST_NO_INT64_T) | |
194 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::int_parser<boost::int64_t>) | |
195 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::uint_parser<boost::uint64_t>) | |
196 | #endif | |
197 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::real_parser_policies<float>) | |
198 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::real_parser_policies<double>) | |
199 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::ureal_parser_policies<float>) | |
200 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::ureal_parser_policies<double>) | |
201 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strict_real_parser_policies<float>) | |
202 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strict_real_parser_policies<double>) | |
203 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strict_ureal_parser_policies<float>) | |
204 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strict_ureal_parser_policies<double>) | |
205 | ||
206 | ||
207 | // scanner/scanner.hpp (has forward header) | |
208 | ||
209 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner,2) | |
210 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner_policies,3) | |
211 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::iteration_policy) | |
212 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::action_policy) | |
213 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::match_policy) | |
214 | ||
215 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner,1) | |
216 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner_policies,2) | |
217 | ||
218 | ||
219 | // scanner/skipper.hpp (has forward header) | |
220 | ||
221 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::skipper_iteration_policy,1) | |
222 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::no_skipper_iteration_policy,1) | |
223 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::skip_parser_iteration_policy,2) | |
224 | ||
225 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::skipper_iteration_policy<>) | |
226 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::skip_parser_iteration_policy,1) | |
227 | ||
228 | ||
229 | // non_terminal/parser_context.hpp | |
230 | ||
231 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::parser_context,1) | |
232 | ||
233 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::parser_context<BOOST_SPIRIT_CLASSIC_NS::nil_t>) | |
234 | ||
235 | ||
236 | // non_terminal/parser_id.hpp | |
237 | ||
238 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::parser_id) | |
239 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::parser_tag, (int)) | |
240 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::dynamic_parser_tag) | |
241 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::parser_address_tag) | |
242 | ||
243 | ||
244 | // non_terminal/subrule.hpp (has forward header) | |
245 | ||
246 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule,(int)(class)) | |
247 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule_parser,(int)(class)(class)) | |
248 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule_list,2) | |
249 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrules_scanner,2) | |
250 | ||
251 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule,(int)) | |
252 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule_parser,(int)(class)) | |
253 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<0>) | |
254 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<1>) | |
255 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<2>) | |
256 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<3>) | |
257 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<4>) | |
258 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<5>) | |
259 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<6>) | |
260 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<7>) | |
261 | ||
262 | ||
263 | // non_terminal/rule.hpp | |
264 | ||
265 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::rule,3) | |
266 | #if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 | |
267 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner_list,1) | |
268 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner_list,BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT) | |
269 | #endif | |
270 | ||
271 | ||
272 | // non_terminal/grammar.hpp | |
273 | ||
274 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::grammar,2) | |
275 | ||
276 | ||
277 | // composite.hpp | |
278 | ||
279 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::action, 2) | |
280 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::alternative, 2) | |
281 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::difference, 2) | |
282 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::exclusive_or, 2) | |
283 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::intersection, 2) | |
284 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::sequence, 2) | |
285 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::sequential_or, 2) | |
286 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::kleene_star, 1) | |
287 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::positive, 1) | |
288 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::optional, 1) | |
289 | ||
290 | ||
291 | // composite/directives.hpp | |
292 | ||
293 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::contiguous, 1) | |
294 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::inhibit_case, 1) | |
295 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::inhibit_case_iteration_policy,1) | |
296 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::longest_alternative, 2) | |
297 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::shortest_alternative, 2) | |
298 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::min_bounded, 2) | |
299 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::max_bounded, 2) | |
300 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::bounded, 2) | |
301 | ||
302 | ||
303 | // composite/no_actions.hpp | |
304 | ||
305 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::no_actions_parser, 1) | |
306 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::no_actions_action_policy, 1) | |
307 | ||
308 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::no_actions_action_policy<BOOST_SPIRIT_CLASSIC_NS::action_policy>) | |
309 | ||
310 | ||
311 | // composite/epsilon.hpp | |
312 | ||
313 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::epsilon_parser) | |
314 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::condition_parser, (class)(bool)) | |
315 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::empty_match_parser, 1) | |
316 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::negated_empty_match_parser, 1) | |
317 | ||
318 | ||
319 | #if !defined(BOOST_SPIRIT_ACTOR_TYPEOF_HPP) | |
320 | // deprecated assign/push_back actor -- they live somewhere else, now | |
321 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_value_actor,2) | |
322 | BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_const_ref_actor,3) | |
323 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::assign_action) | |
324 | BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::push_back_action) | |
325 | #endif | |
326 | ||
327 | ||
328 | #if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) && BOOST_MSVC >= 1400 | |
329 | namespace boost { namespace spirit { | |
330 | ||
331 | BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN | |
332 | ||
333 | nil_t & operator* (nil_t); | |
334 | nil_t & operator+ (nil_t); | |
335 | ||
336 | BOOST_SPIRIT_CLASSIC_NAMESPACE_END | |
337 | ||
338 | } } // namespace ::BOOST_SPIRIT_CLASSIC_NS | |
339 | #endif | |
340 | ||
341 | ||
342 | #endif | |
343 |