Chris@16
|
1 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
2 // placeholders.hpp
|
Chris@16
|
3 //
|
Chris@16
|
4 // Copyright 2008 Eric Niebler. Distributed under the Boost
|
Chris@16
|
5 // Software License, Version 1.0. (See accompanying file
|
Chris@16
|
6 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
7
|
Chris@16
|
8 #ifndef BOOST_XPRESSIVE_DETAIL_STATIC_PLACEHOLDERS_HPP_EAN_10_04_2005
|
Chris@16
|
9 #define BOOST_XPRESSIVE_DETAIL_STATIC_PLACEHOLDERS_HPP_EAN_10_04_2005
|
Chris@16
|
10
|
Chris@16
|
11 // MS compatible compilers support #pragma once
|
Chris@101
|
12 #if defined(_MSC_VER)
|
Chris@16
|
13 # pragma once
|
Chris@16
|
14 # pragma warning(push)
|
Chris@16
|
15 # pragma warning(disable:4510) // default constructor could not be generated
|
Chris@16
|
16 # pragma warning(disable:4610) // can never be instantiated - user defined constructor required
|
Chris@16
|
17 #endif
|
Chris@16
|
18
|
Chris@16
|
19 #include <string>
|
Chris@16
|
20 #include <boost/shared_ptr.hpp>
|
Chris@16
|
21 #include <boost/xpressive/detail/core/quant_style.hpp>
|
Chris@16
|
22 #include <boost/xpressive/detail/core/regex_impl.hpp>
|
Chris@16
|
23
|
Chris@16
|
24 namespace boost { namespace xpressive { namespace detail
|
Chris@16
|
25 {
|
Chris@16
|
26
|
Chris@16
|
27 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
28 // mark_placeholder
|
Chris@16
|
29 //
|
Chris@16
|
30 struct mark_placeholder
|
Chris@16
|
31 {
|
Chris@16
|
32 BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, true)
|
Chris@16
|
33
|
Chris@16
|
34 int mark_number_;
|
Chris@16
|
35 };
|
Chris@16
|
36
|
Chris@16
|
37 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
38 // posix_charset_placeholder
|
Chris@16
|
39 //
|
Chris@16
|
40 struct posix_charset_placeholder
|
Chris@16
|
41 {
|
Chris@16
|
42 BOOST_XPR_QUANT_STYLE(quant_fixed_width, 1, true)
|
Chris@16
|
43
|
Chris@16
|
44 char const *name_;
|
Chris@16
|
45 bool not_;
|
Chris@16
|
46 };
|
Chris@16
|
47
|
Chris@16
|
48 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
49 // assert_word_placeholder
|
Chris@16
|
50 //
|
Chris@16
|
51 template<typename Cond>
|
Chris@16
|
52 struct assert_word_placeholder
|
Chris@16
|
53 {
|
Chris@16
|
54 BOOST_XPR_QUANT_STYLE(quant_none, 0, true)
|
Chris@16
|
55 };
|
Chris@16
|
56
|
Chris@16
|
57 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
58 // range_placeholder
|
Chris@16
|
59 //
|
Chris@16
|
60 template<typename Char>
|
Chris@16
|
61 struct range_placeholder
|
Chris@16
|
62 {
|
Chris@16
|
63 BOOST_XPR_QUANT_STYLE(quant_fixed_width, 1, true)
|
Chris@16
|
64
|
Chris@16
|
65 Char ch_min_;
|
Chris@16
|
66 Char ch_max_;
|
Chris@16
|
67 bool not_;
|
Chris@16
|
68 };
|
Chris@16
|
69
|
Chris@16
|
70 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
71 // assert_bol_placeholder
|
Chris@16
|
72 //
|
Chris@16
|
73 struct assert_bol_placeholder
|
Chris@16
|
74 {
|
Chris@16
|
75 BOOST_XPR_QUANT_STYLE(quant_none, 0, true)
|
Chris@16
|
76 };
|
Chris@16
|
77
|
Chris@16
|
78 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
79 // assert_eol_placeholder
|
Chris@16
|
80 //
|
Chris@16
|
81 struct assert_eol_placeholder
|
Chris@16
|
82 {
|
Chris@16
|
83 BOOST_XPR_QUANT_STYLE(quant_none, 0, true)
|
Chris@16
|
84 };
|
Chris@16
|
85
|
Chris@16
|
86 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
87 // logical_newline_placeholder
|
Chris@16
|
88 //
|
Chris@16
|
89 struct logical_newline_placeholder
|
Chris@16
|
90 {
|
Chris@16
|
91 BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, true)
|
Chris@16
|
92 };
|
Chris@16
|
93
|
Chris@16
|
94 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
95 // self_placeholder
|
Chris@16
|
96 //
|
Chris@16
|
97 struct self_placeholder
|
Chris@16
|
98 {
|
Chris@16
|
99 BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, false)
|
Chris@16
|
100 };
|
Chris@16
|
101
|
Chris@16
|
102 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
103 // attribute_placeholder
|
Chris@16
|
104 //
|
Chris@16
|
105 template<typename Nbr>
|
Chris@16
|
106 struct attribute_placeholder
|
Chris@16
|
107 {
|
Chris@16
|
108 BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, false)
|
Chris@16
|
109
|
Chris@16
|
110 typedef Nbr nbr_type;
|
Chris@16
|
111 static Nbr nbr() { return Nbr(); }
|
Chris@16
|
112 };
|
Chris@16
|
113
|
Chris@16
|
114 }}} // namespace boost::xpressive::detail
|
Chris@16
|
115
|
Chris@101
|
116 #if defined(_MSC_VER)
|
Chris@16
|
117 # pragma warning(pop)
|
Chris@16
|
118 #endif
|
Chris@16
|
119
|
Chris@16
|
120 #endif
|