Ticket #4336: encoding_specific_impl.hpp

File encoding_specific_impl.hpp, 11.5 KB (added by Andrey Semashev, 12 years ago)

The implementation file to be placed in boost/spirit/home/support/detail

Line 
1/*=============================================================================
2 Copyright (c) 2001-2010 Andrey Semashev
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#ifndef BOOST_SPIRIT_HOME_SUPPORT_DETAIL_ENCODING_SPECIFIC_IMPL_HPP_INCLUDED_
9#define BOOST_SPIRIT_HOME_SUPPORT_DETAIL_ENCODING_SPECIFIC_IMPL_HPP_INCLUDED_
10
11#if defined(_MSC_VER)
12#pragma once
13#endif
14
15namespace boost {
16
17namespace spirit {
18
19namespace detail {
20
21 template<
22 typename CharT,
23 typename StringT,
24 typename AlnumT,
25 typename AlphaT,
26 typename BlankT,
27 typename CntrlT,
28 typename DigitT,
29 typename GraphT,
30 typename PrintT,
31 typename PunctT,
32 typename SpaceT,
33 typename XdigitT,
34 typename NoCaseT,
35 typename LowerT,
36 typename UpperT,
37 typename LowerNumT,
38 typename UpperNumT
39 >
40 struct encoding_specific_impl
41 {
42 static const CharT char_;
43 static const StringT string;
44 static const AlnumT alnum;
45 static const AlphaT alpha;
46 static const BlankT blank;
47 static const CntrlT cntrl;
48 static const DigitT digit;
49 static const GraphT graph;
50 static const PrintT print;
51 static const PunctT punct;
52 static const SpaceT space;
53 static const XdigitT xdigit;
54 static const NoCaseT no_case;
55 static const LowerT lower;
56 static const UpperT upper;
57 static const LowerNumT lowernum;
58 static const UpperNumT uppernum;
59 };
60
61 template<
62 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
63 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
64 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
65 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
66 typename UpperNumT
67 >
68 const CharT encoding_specific_impl<
69 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
70 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
71 >::char_ = CharT();
72
73 template<
74 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
75 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
76 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
77 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
78 typename UpperNumT
79 >
80 const StringT encoding_specific_impl<
81 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
82 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
83 >::string = StringT();
84
85 template<
86 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
87 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
88 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
89 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
90 typename UpperNumT
91 >
92 const AlnumT encoding_specific_impl<
93 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
94 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
95 >::alnum = AlnumT();
96
97 template<
98 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
99 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
100 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
101 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
102 typename UpperNumT
103 >
104 const AlphaT encoding_specific_impl<
105 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
106 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
107 >::alpha = AlphaT();
108
109 template<
110 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
111 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
112 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
113 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
114 typename UpperNumT
115 >
116 const BlankT encoding_specific_impl<
117 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
118 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
119 >::blank = BlankT();
120
121 template<
122 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
123 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
124 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
125 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
126 typename UpperNumT
127 >
128 const CntrlT encoding_specific_impl<
129 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
130 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
131 >::cntrl = CntrlT();
132
133 template<
134 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
135 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
136 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
137 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
138 typename UpperNumT
139 >
140 const DigitT encoding_specific_impl<
141 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
142 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
143 >::digit = DigitT();
144
145 template<
146 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
147 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
148 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
149 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
150 typename UpperNumT
151 >
152 const GraphT encoding_specific_impl<
153 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
154 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
155 >::graph = GraphT();
156
157 template<
158 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
159 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
160 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
161 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
162 typename UpperNumT
163 >
164 const PrintT encoding_specific_impl<
165 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
166 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
167 >::print = PrintT();
168
169 template<
170 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
171 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
172 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
173 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
174 typename UpperNumT
175 >
176 const PunctT encoding_specific_impl<
177 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
178 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
179 >::punct = PunctT();
180
181 template<
182 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
183 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
184 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
185 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
186 typename UpperNumT
187 >
188 const SpaceT encoding_specific_impl<
189 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
190 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
191 >::space = SpaceT();
192
193 template<
194 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
195 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
196 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
197 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
198 typename UpperNumT
199 >
200 const XdigitT encoding_specific_impl<
201 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
202 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
203 >::xdigit = XdigitT();
204
205 template<
206 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
207 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
208 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
209 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
210 typename UpperNumT
211 >
212 const NoCaseT encoding_specific_impl<
213 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
214 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
215 >::no_case = NoCaseT();
216
217 template<
218 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
219 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
220 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
221 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
222 typename UpperNumT
223 >
224 const LowerT encoding_specific_impl<
225 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
226 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
227 >::lower = LowerT();
228
229 template<
230 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
231 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
232 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
233 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
234 typename UpperNumT
235 >
236 const UpperT encoding_specific_impl<
237 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
238 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
239 >::upper = UpperT();
240
241 template<
242 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
243 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
244 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
245 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
246 typename UpperNumT
247 >
248 const LowerNumT encoding_specific_impl<
249 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
250 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
251 >::lowernum = LowerNumT();
252
253 template<
254 typename CharT, typename StringT, typename AlnumT, typename AlphaT,
255 typename BlankT, typename CntrlT, typename DigitT, typename GraphT,
256 typename PrintT, typename PunctT, typename SpaceT, typename XdigitT,
257 typename NoCaseT, typename LowerT, typename UpperT, typename LowerNumT,
258 typename UpperNumT
259 >
260 const UpperNumT encoding_specific_impl<
261 CharT, StringT, AlnumT, AlphaT, BlankT, CntrlT, DigitT, GraphT, PrintT,
262 PunctT, SpaceT, XdigitT, NoCaseT, LowerT, UpperT, LowerNumT, UpperNumT
263 >::uppernum = UpperNumT();
264
265} // namespace detail
266
267} // namespace spirit
268
269} // namespace boost
270
271#endif // BOOST_SPIRIT_HOME_SUPPORT_DETAIL_ENCODING_SPECIFIC_IMPL_HPP_INCLUDED_