]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/wave/include/boost/wave/util/pattern_parser.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / wave / include / boost / wave / util / pattern_parser.hpp
1 /*=============================================================================
2 Boost.Wave: A Standard compliant C++ preprocessor library
3
4 Global application configuration
5
6 http://www.boost.org/
7
8 Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
9 Software License, Version 1.0. (See accompanying file
10 LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
11 =============================================================================*/
12
13 #if !defined(BOOST_SPIRIT_PATTERN_PARSER_HPP)
14 #define BOOST_SPIRIT_PATTERN_PARSER_HPP
15
16 #include <boost/spirit/include/classic_primitives.hpp>
17 #include <boost/wave/wave_config.hpp>
18
19 // this must occur after all of the includes and before any code appears
20 #ifdef BOOST_HAS_ABI_HEADERS
21 #include BOOST_ABI_PREFIX
22 #endif
23
24 ///////////////////////////////////////////////////////////////////////////////
25 namespace boost {
26 namespace wave {
27 namespace util {
28
29 ///////////////////////////////////////////////////////////////////////////
30 //
31 // pattern_and class
32 //
33 ///////////////////////////////////////////////////////////////////////////
34 template <typename CharT = char>
35 struct pattern_and
36 : public boost::spirit::classic::char_parser<pattern_and<CharT> >
37 {
38 pattern_and(CharT pattern_, unsigned long pattern_mask_ = 0UL)
39 : pattern(pattern_),
40 pattern_mask((0UL != pattern_mask_) ?
41 pattern_mask_ : (unsigned long)pattern_)
42 {}
43
44 template <typename T>
45 bool test(T pattern_) const
46 { return ((unsigned long)pattern_ & pattern_mask) == (unsigned long)pattern; }
47
48 CharT pattern;
49 unsigned long pattern_mask;
50 };
51
52 template <typename CharT>
53 inline pattern_and<CharT>
54 pattern_p(CharT pattern, unsigned long pattern_mask = 0UL)
55 { return pattern_and<CharT>(pattern, pattern_mask); }
56
57 ///////////////////////////////////////////////////////////////////////////////
58 } // namespace util
59 } // namespace wave
60 } // namespace boost
61
62 // the suffix header occurs after all of the code
63 #ifdef BOOST_HAS_ABI_HEADERS
64 #include BOOST_ABI_SUFFIX
65 #endif
66
67 #endif // defined(BOOST_SPIRIT_PATTERN_PARSER_HPP)