• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*=============================================================================
2     Copyright (c) 2001-2003 Joel de Guzman
3     Copyright (c) 2001-2003 Daniel Nuffer
4     http://spirit.sourceforge.net/
5 
6   Distributed under the Boost Software License, Version 1.0. (See accompanying
7   file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 =============================================================================*/
9 #ifndef BOOST_SPIRIT_CHSET_OPERATORS_HPP
10 #define BOOST_SPIRIT_CHSET_OPERATORS_HPP
11 
12 ///////////////////////////////////////////////////////////////////////////////
13 #include <boost/spirit/home/classic/namespace.hpp>
14 #include <boost/spirit/home/classic/utility/chset.hpp>
15 
16 ///////////////////////////////////////////////////////////////////////////////
17 namespace boost { namespace spirit {
18 
19 BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
20 
21 ///////////////////////////////////////////////////////////////////////////////
22 //
23 //  chset free operators
24 //
25 //      Where a and b are both chsets, implements:
26 //
27 //          a | b, a & b, a - b, a ^ b
28 //
29 //      Where a is a chset, implements:
30 //
31 //          ~a
32 //
33 ///////////////////////////////////////////////////////////////////////////////
34 template <typename CharT>
35 chset<CharT>
36 operator~(chset<CharT> const& a);
37 
38 //////////////////////////////////
39 template <typename CharT>
40 chset<CharT>
41 operator|(chset<CharT> const& a, chset<CharT> const& b);
42 
43 //////////////////////////////////
44 template <typename CharT>
45 chset<CharT>
46 operator&(chset<CharT> const& a, chset<CharT> const& b);
47 
48 //////////////////////////////////
49 template <typename CharT>
50 chset<CharT>
51 operator-(chset<CharT> const& a, chset<CharT> const& b);
52 
53 //////////////////////////////////
54 template <typename CharT>
55 chset<CharT>
56 operator^(chset<CharT> const& a, chset<CharT> const& b);
57 
58 ///////////////////////////////////////////////////////////////////////////////
59 //
60 //  range <--> chset free operators
61 //
62 //      Where a is a chset and b is a range, and vice-versa, implements:
63 //
64 //          a | b, a & b, a - b, a ^ b
65 //
66 ///////////////////////////////////////////////////////////////////////////////
67 template <typename CharT>
68 chset<CharT>
69 operator|(chset<CharT> const& a, range<CharT> const& b);
70 
71 //////////////////////////////////
72 template <typename CharT>
73 chset<CharT>
74 operator&(chset<CharT> const& a, range<CharT> const& b);
75 
76 //////////////////////////////////
77 template <typename CharT>
78 chset<CharT>
79 operator-(chset<CharT> const& a, range<CharT> const& b);
80 
81 //////////////////////////////////
82 template <typename CharT>
83 chset<CharT>
84 operator^(chset<CharT> const& a, range<CharT> const& b);
85 
86 //////////////////////////////////
87 template <typename CharT>
88 chset<CharT>
89 operator|(range<CharT> const& a, chset<CharT> const& b);
90 
91 //////////////////////////////////
92 template <typename CharT>
93 chset<CharT>
94 operator&(range<CharT> const& a, chset<CharT> const& b);
95 
96 //////////////////////////////////
97 template <typename CharT>
98 chset<CharT>
99 operator-(range<CharT> const& a, chset<CharT> const& b);
100 
101 //////////////////////////////////
102 template <typename CharT>
103 chset<CharT>
104 operator^(range<CharT> const& a, chset<CharT> const& b);
105 
106 ///////////////////////////////////////////////////////////////////////////////
107 //
108 //  chlit <--> chset free operators
109 //
110 //      Where a is a chset and b is a chlit, and vice-versa, implements:
111 //
112 //          a | b, a & b, a - b, a ^ b
113 //
114 ///////////////////////////////////////////////////////////////////////////////
115 template <typename CharT>
116 chset<CharT>
117 operator|(chset<CharT> const& a, chlit<CharT> const& b);
118 
119 //////////////////////////////////
120 template <typename CharT>
121 chset<CharT>
122 operator&(chset<CharT> const& a, chlit<CharT> const& b);
123 
124 //////////////////////////////////
125 template <typename CharT>
126 chset<CharT>
127 operator-(chset<CharT> const& a, chlit<CharT> const& b);
128 
129 //////////////////////////////////
130 template <typename CharT>
131 chset<CharT>
132 operator^(chset<CharT> const& a, chlit<CharT> const& b);
133 
134 //////////////////////////////////
135 template <typename CharT>
136 chset<CharT>
137 operator|(chlit<CharT> const& a, chset<CharT> const& b);
138 
139 //////////////////////////////////
140 template <typename CharT>
141 chset<CharT>
142 operator&(chlit<CharT> const& a, chset<CharT> const& b);
143 
144 //////////////////////////////////
145 template <typename CharT>
146 chset<CharT>
147 operator-(chlit<CharT> const& a, chset<CharT> const& b);
148 
149 //////////////////////////////////
150 template <typename CharT>
151 chset<CharT>
152 operator^(chlit<CharT> const& a, chset<CharT> const& b);
153 
154 ///////////////////////////////////////////////////////////////////////////////
155 //
156 //  negated_char_parser<range> <--> chset free operators
157 //
158 //      Where a is a chset and b is a range, and vice-versa, implements:
159 //
160 //          a | b, a & b, a - b, a ^ b
161 //
162 ///////////////////////////////////////////////////////////////////////////////
163 template <typename CharT>
164 chset<CharT>
165 operator|(chset<CharT> const& a, negated_char_parser<range<CharT> > const& b);
166 
167 //////////////////////////////////
168 template <typename CharT>
169 chset<CharT>
170 operator&(chset<CharT> const& a, negated_char_parser<range<CharT> > const& b);
171 
172 //////////////////////////////////
173 template <typename CharT>
174 chset<CharT>
175 operator-(chset<CharT> const& a, negated_char_parser<range<CharT> > const& b);
176 
177 //////////////////////////////////
178 template <typename CharT>
179 chset<CharT>
180 operator^(chset<CharT> const& a, negated_char_parser<range<CharT> > const& b);
181 
182 //////////////////////////////////
183 template <typename CharT>
184 chset<CharT>
185 operator|(negated_char_parser<range<CharT> > const& a, chset<CharT> const& b);
186 
187 //////////////////////////////////
188 template <typename CharT>
189 chset<CharT>
190 operator&(negated_char_parser<range<CharT> > const& a, chset<CharT> const& b);
191 
192 //////////////////////////////////
193 template <typename CharT>
194 chset<CharT>
195 operator-(negated_char_parser<range<CharT> > const& a, chset<CharT> const& b);
196 
197 //////////////////////////////////
198 template <typename CharT>
199 chset<CharT>
200 operator^(negated_char_parser<range<CharT> > const& a, chset<CharT> const& b);
201 
202 ///////////////////////////////////////////////////////////////////////////////
203 //
204 //  negated_char_parser<chlit> <--> chset free operators
205 //
206 //      Where a is a chset and b is a chlit, and vice-versa, implements:
207 //
208 //          a | b, a & b, a - b, a ^ b
209 //
210 ///////////////////////////////////////////////////////////////////////////////
211 template <typename CharT>
212 chset<CharT>
213 operator|(chset<CharT> const& a, negated_char_parser<chlit<CharT> > const& b);
214 
215 //////////////////////////////////
216 template <typename CharT>
217 chset<CharT>
218 operator&(chset<CharT> const& a, negated_char_parser<chlit<CharT> > const& b);
219 
220 //////////////////////////////////
221 template <typename CharT>
222 chset<CharT>
223 operator-(chset<CharT> const& a, negated_char_parser<chlit<CharT> > const& b);
224 
225 //////////////////////////////////
226 template <typename CharT>
227 chset<CharT>
228 operator^(chset<CharT> const& a, negated_char_parser<chlit<CharT> > const& b);
229 
230 //////////////////////////////////
231 template <typename CharT>
232 chset<CharT>
233 operator|(negated_char_parser<chlit<CharT> > const& a, chset<CharT> const& b);
234 
235 //////////////////////////////////
236 template <typename CharT>
237 chset<CharT>
238 operator&(negated_char_parser<chlit<CharT> > const& a, chset<CharT> const& b);
239 
240 //////////////////////////////////
241 template <typename CharT>
242 chset<CharT>
243 operator-(negated_char_parser<chlit<CharT> > const& a, chset<CharT> const& b);
244 
245 //////////////////////////////////
246 template <typename CharT>
247 chset<CharT>
248 operator^(negated_char_parser<chlit<CharT> > const& a, chset<CharT> const& b);
249 
250 ///////////////////////////////////////////////////////////////////////////////
251 //
252 //  literal primitives <--> chset free operators
253 //
254 //      Where a is a chset and b is a literal primitive,
255 //      and vice-versa, implements:
256 //
257 //          a | b, a & b, a - b, a ^ b
258 //
259 ///////////////////////////////////////////////////////////////////////////////
260 template <typename CharT>
261 chset<CharT>
262 operator|(chset<CharT> const& a, CharT b);
263 
264 //////////////////////////////////
265 template <typename CharT>
266 chset<CharT>
267 operator&(chset<CharT> const& a, CharT b);
268 
269 //////////////////////////////////
270 template <typename CharT>
271 chset<CharT>
272 operator-(chset<CharT> const& a, CharT b);
273 
274 //////////////////////////////////
275 template <typename CharT>
276 chset<CharT>
277 operator^(chset<CharT> const& a, CharT b);
278 
279 //////////////////////////////////
280 template <typename CharT>
281 chset<CharT>
282 operator|(CharT a, chset<CharT> const& b);
283 
284 //////////////////////////////////
285 template <typename CharT>
286 chset<CharT>
287 operator&(CharT a, chset<CharT> const& b);
288 
289 //////////////////////////////////
290 template <typename CharT>
291 chset<CharT>
292 operator-(CharT a, chset<CharT> const& b);
293 
294 //////////////////////////////////
295 template <typename CharT>
296 chset<CharT>
297 operator^(CharT a, chset<CharT> const& b);
298 
299 ///////////////////////////////////////////////////////////////////////////////
300 //
301 //  anychar_parser <--> chset free operators
302 //
303 //      Where a is chset and b is a anychar_parser, and vice-versa, implements:
304 //
305 //          a | b, a & b, a - b, a ^ b
306 //
307 ///////////////////////////////////////////////////////////////////////////////
308 template <typename CharT>
309 chset<CharT>
310 operator|(chset<CharT> const& a, anychar_parser b);
311 
312 //////////////////////////////////
313 template <typename CharT>
314 chset<CharT>
315 operator&(chset<CharT> const& a, anychar_parser b);
316 
317 //////////////////////////////////
318 template <typename CharT>
319 chset<CharT>
320 operator-(chset<CharT> const& a, anychar_parser b);
321 
322 //////////////////////////////////
323 template <typename CharT>
324 chset<CharT>
325 operator^(chset<CharT> const& a, anychar_parser b);
326 
327 //////////////////////////////////
328 template <typename CharT>
329 chset<CharT>
330 operator|(anychar_parser a, chset<CharT> const& b);
331 
332 //////////////////////////////////
333 template <typename CharT>
334 chset<CharT>
335 operator&(anychar_parser a, chset<CharT> const& b);
336 
337 //////////////////////////////////
338 template <typename CharT>
339 chset<CharT>
340 operator-(anychar_parser a, chset<CharT> const& b);
341 
342 //////////////////////////////////
343 template <typename CharT>
344 chset<CharT>
345 operator^(anychar_parser a, chset<CharT> const& b);
346 
347 ///////////////////////////////////////////////////////////////////////////////
348 //
349 //  nothing_parser <--> chset free operators
350 //
351 //      Where a is chset and b is nothing_parser, and vice-versa, implements:
352 //
353 //          a | b, a & b, a - b, a ^ b
354 //
355 ///////////////////////////////////////////////////////////////////////////////
356 template <typename CharT>
357 chset<CharT>
358 operator|(chset<CharT> const& a, nothing_parser b);
359 
360 //////////////////////////////////
361 template <typename CharT>
362 chset<CharT>
363 operator&(chset<CharT> const& a, nothing_parser b);
364 
365 //////////////////////////////////
366 template <typename CharT>
367 chset<CharT>
368 operator-(chset<CharT> const& a, nothing_parser b);
369 
370 //////////////////////////////////
371 template <typename CharT>
372 chset<CharT>
373 operator^(chset<CharT> const& a, nothing_parser b);
374 
375 //////////////////////////////////
376 template <typename CharT>
377 chset<CharT>
378 operator|(nothing_parser a, chset<CharT> const& b);
379 
380 //////////////////////////////////
381 template <typename CharT>
382 chset<CharT>
383 operator&(nothing_parser a, chset<CharT> const& b);
384 
385 //////////////////////////////////
386 template <typename CharT>
387 chset<CharT>
388 operator-(nothing_parser a, chset<CharT> const& b);
389 
390 //////////////////////////////////
391 template <typename CharT>
392 chset<CharT>
393 operator^(nothing_parser a, chset<CharT> const& b);
394 
395 ///////////////////////////////////////////////////////////////////////////////
396 BOOST_SPIRIT_CLASSIC_NAMESPACE_END
397 
398 }} // namespace BOOST_SPIRIT_CLASSIC_NS
399 
400 #endif
401 
402 #include <boost/spirit/home/classic/utility/impl/chset_operators.ipp>
403