• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Determine if a Type is a Character</title>
5<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../../../index.html" title="Spirit 2.5.8">
8<link rel="up" href="../string_traits.html" title="Extract a C-Style String to Generate Output from a String Type (Karma)">
9<link rel="prev" href="../string_traits.html" title="Extract a C-Style String to Generate Output from a String Type (Karma)">
10<link rel="next" href="char_type_of.html" title="Determine the Character Type of a String">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="../string_traits.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string_traits.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="char_type_of.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h5 class="title">
27<a name="spirit.advanced.customize.string_traits.is_char"></a><a class="link" href="is_char.html" title="Determine if a Type is a Character">Determine
28          if a Type is a Character</a>
29</h5></div></div></div>
30<h6>
31<a name="spirit.advanced.customize.string_traits.is_char.h0"></a>
32            <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.is_char"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.is_char">is_char</a>
33          </h6>
34<p>
35            <code class="computeroutput"><span class="identifier">is_char</span></code> is a metafunction
36            that detects if a given type is a character.
37          </p>
38<h6>
39<a name="spirit.advanced.customize.string_traits.is_char.h1"></a>
40            <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.module_headers"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.module_headers">Module
41            Headers</a>
42          </h6>
43<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">string_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
44</pre>
45<p>
46            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
47          </p>
48<div class="note"><table border="0" summary="Note">
49<tr>
50<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
51<th align="left">Note</th>
52</tr>
53<tr><td align="left" valign="top"><p>
54              This header file does not need to be included directly by any user
55              program as it is normally included by other Spirit header files relying
56              on its content.
57            </p></td></tr>
58</table></div>
59<h6>
60<a name="spirit.advanced.customize.string_traits.is_char.h2"></a>
61            <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.namespace"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.namespace">Namespace</a>
62          </h6>
63<div class="informaltable"><table class="table">
64<colgroup><col></colgroup>
65<thead><tr><th>
66                    <p>
67                      Name
68                    </p>
69                  </th></tr></thead>
70<tbody><tr><td>
71                    <p>
72                      <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></code>
73                    </p>
74                  </td></tr></tbody>
75</table></div>
76<h6>
77<a name="spirit.advanced.customize.string_traits.is_char.h3"></a>
78            <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.synopsis"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.synopsis">Synopsis</a>
79          </h6>
80<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
81<span class="keyword">struct</span> <span class="identifier">is_char</span>
82<span class="special">{</span>
83    <span class="special">&lt;</span><span class="identifier">unspecified</span><span class="special">&gt;;</span>
84<span class="special">};</span>
85</pre>
86<h6>
87<a name="spirit.advanced.customize.string_traits.is_char.h4"></a>
88            <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.template_parameters"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.template_parameters">Template
89            parameters</a>
90          </h6>
91<div class="informaltable"><table class="table">
92<colgroup>
93<col>
94<col>
95<col>
96</colgroup>
97<thead><tr>
98<th>
99                    <p>
100                      Parameter
101                    </p>
102                  </th>
103<th>
104                    <p>
105                      Description
106                    </p>
107                  </th>
108<th>
109                    <p>
110                      Default
111                    </p>
112                  </th>
113</tr></thead>
114<tbody><tr>
115<td>
116                    <p>
117                      <code class="computeroutput"><span class="identifier">T</span></code>
118                    </p>
119                  </td>
120<td>
121                    <p>
122                      The type to detect.
123                    </p>
124                  </td>
125<td>
126                    <p>
127                      none
128                    </p>
129                  </td>
130</tr></tbody>
131</table></div>
132<div class="variablelist">
133<p class="title"><b>Notation</b></p>
134<dl class="variablelist">
135<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span></code></span></dt>
136<dd><p>
137                  An arbitrary type
138                </p></dd>
139</dl>
140</div>
141<h6>
142<a name="spirit.advanced.customize.string_traits.is_char.h5"></a>
143            <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.expression_semantics"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.expression_semantics">Expression
144            Semantics</a>
145          </h6>
146<div class="informaltable"><table class="table">
147<colgroup>
148<col>
149<col>
150</colgroup>
151<thead><tr>
152<th>
153                    <p>
154                      Expression
155                    </p>
156                  </th>
157<th>
158                    <p>
159                      Semantics
160                    </p>
161                  </th>
162</tr></thead>
163<tbody><tr>
164<td>
165                    <p>
166                      <code class="computeroutput"><span class="identifier">is_char</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
167                    </p>
168                  </td>
169<td>
170                    <p>
171                      <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> if T should be treated
172                      as a character type, and <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
173                      otherwise. Generally, any implementation of <code class="computeroutput"><span class="identifier">is_char</span></code>
174                      needs to behave as if if was a <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
175                      Boolean Constant</a>.
176                    </p>
177                  </td>
178</tr></tbody>
179</table></div>
180<h6>
181<a name="spirit.advanced.customize.string_traits.is_char.h6"></a>
182            <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.predefined_specializations"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.predefined_specializations">Predefined
183            Specializations</a>
184          </h6>
185<div class="informaltable"><table class="table">
186<colgroup>
187<col>
188<col>
189</colgroup>
190<thead><tr>
191<th>
192                    <p>
193                      Type
194                    </p>
195                  </th>
196<th>
197                    <p>
198                      Semantics
199                    </p>
200                  </th>
201</tr></thead>
202<tbody>
203<tr>
204<td>
205                    <p>
206                      <code class="computeroutput"><span class="identifier">T</span></code>
207                    </p>
208                  </td>
209<td>
210                    <p>
211                      <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
212                    </p>
213                  </td>
214</tr>
215<tr>
216<td>
217                    <p>
218                      <code class="computeroutput"><span class="identifier">T</span> <span class="keyword">const</span></code>
219                    </p>
220                  </td>
221<td>
222                    <p>
223                      <code class="computeroutput"><span class="identifier">is_char</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
224                    </p>
225                  </td>
226</tr>
227<tr>
228<td>
229                    <p>
230                      <code class="computeroutput"><span class="keyword">char</span></code>
231                    </p>
232                  </td>
233<td>
234                    <p>
235                      <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
236                    </p>
237                  </td>
238</tr>
239<tr>
240<td>
241                    <p>
242                      <code class="computeroutput"><span class="keyword">wchar_t</span></code>
243                    </p>
244                  </td>
245<td>
246                    <p>
247                      <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
248                    </p>
249                  </td>
250</tr>
251</tbody>
252</table></div>
253<h6>
254<a name="spirit.advanced.customize.string_traits.is_char.h7"></a>
255            <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.when_to_implement"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.when_to_implement">When
256            to implement</a>
257          </h6>
258<p>
259            This customization point needs to be implemented for any strings that
260            use a type other than <code class="computeroutput"><span class="keyword">char</span></code>
261            or `wchar_t to store character data.
262          </p>
263<h6>
264<a name="spirit.advanced.customize.string_traits.is_char.h8"></a>
265            <span class="phrase"><a name="spirit.advanced.customize.string_traits.is_char.related_attribute_customization_points"></a></span><a class="link" href="is_char.html#spirit.advanced.customize.string_traits.is_char.related_attribute_customization_points">Related
266            Attribute Customization Points</a>
267          </h6>
268<p>
269            If this customization point is implemented, the following other customization
270            points need to be implemented as well.
271          </p>
272<div class="informaltable"><table class="table">
273<colgroup>
274<col>
275<col>
276</colgroup>
277<thead><tr>
278<th>
279                    <p>
280                      Name
281                    </p>
282                  </th>
283<th>
284                    <p>
285                      When to implement
286                    </p>
287                  </th>
288</tr></thead>
289<tbody>
290<tr>
291<td>
292                    <p>
293                      <a class="link" href="../is_string.html" title="Determine if a Type Should be Treated as a String (Qi and Karma)"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_string</span></code></a>
294                    </p>
295                  </td>
296<td>
297                    <p>
298                      Whenever <code class="computeroutput"><span class="identifier">is_char</span></code>
299                      is implemented.
300                    </p>
301                  </td>
302</tr>
303<tr>
304<td>
305                    <p>
306                      <a class="link" href="char_type_of.html" title="Determine the Character Type of a String"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">char_type_of</span></code></a>
307                    </p>
308                  </td>
309<td>
310                    <p>
311                      Whenever <code class="computeroutput"><span class="identifier">is_char</span></code>
312                      is implemented.
313                    </p>
314                  </td>
315</tr>
316</tbody>
317</table></div>
318</div>
319<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
320<td align="left"></td>
321<td align="right"><div class="copyright-footer">Copyright © 2001-2011 Joel de Guzman, Hartmut Kaiser<p>
322        Distributed under the Boost Software License, Version 1.0. (See accompanying
323        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
324      </p>
325</div></td>
326</tr></table>
327<hr>
328<div class="spirit-nav">
329<a accesskey="p" href="../string_traits.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string_traits.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="char_type_of.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
330</div>
331</body>
332</html>
333