• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8"?>
2<!--
3  Copyright 2012 Eric Niebler
4
5  Distributed under the Boost
6  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<header name="boost/proto/proto_fwd.hpp">
10  <para>Forward declarations of all of proto's public types and functions. </para>
11  <namespace name="boost">
12    <namespace name="proto">
13      <struct name="callable">
14        <purpose>Base class for callable <conceptname>PolymorphicFunctionObject</conceptname>s</purpose>
15        <description>
16          <para>
17            When defining a callable <conceptname>PolymorphicFunctionObject</conceptname>, inherit
18            from <computeroutput>proto::callable</computeroutput> so that it can be used to create
19            a <conceptname>CallableTransform</conceptname>.
20          </para>
21          <para>
22            <computeroutput><classname>proto::is_callable</classname>&lt;T&gt;::value</computeroutput> is
23            <computeroutput>true</computeroutput> for types that inherit from
24            <computeroutput>proto::callable</computeroutput>.
25          </para>
26        </description>
27      </struct>
28      <data-member name="N">
29        <description>
30          <para>Array size wildcard for Proto grammars that match array terminals.</para></description>
31        <type>int const</type>
32      </data-member>
33      <namespace name="functional">
34        <typedef name="make_terminal">
35          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::terminal</classname> &gt;</type>
36        </typedef>
37        <typedef name="make_unary_plus">
38          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::unary_plus</classname> &gt;</type>
39        </typedef>
40        <typedef name="make_negate">
41          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::negate</classname> &gt;</type>
42        </typedef>
43        <typedef name="make_dereference">
44          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::dereference</classname> &gt;</type>
45        </typedef>
46        <typedef name="make_complement">
47          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::complement</classname> &gt;</type>
48        </typedef>
49        <typedef name="make_address_of">
50          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::address_of</classname> &gt;</type>
51        </typedef>
52        <typedef name="make_logical_not">
53          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_not</classname> &gt;</type>
54        </typedef>
55        <typedef name="make_pre_inc">
56          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::pre_inc</classname> &gt;</type>
57        </typedef>
58        <typedef name="make_pre_dec">
59          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::pre_dec</classname> &gt;</type>
60        </typedef>
61        <typedef name="make_post_inc">
62          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::post_inc</classname> &gt;</type>
63        </typedef>
64        <typedef name="make_post_dec">
65          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::post_dec</classname> &gt;</type>
66        </typedef>
67        <typedef name="make_shift_left">
68          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_left</classname> &gt;</type>
69        </typedef>
70        <typedef name="make_shift_right">
71          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_right</classname> &gt;</type>
72        </typedef>
73        <typedef name="make_multiplies">
74          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::multiplies</classname> &gt;</type>
75        </typedef>
76        <typedef name="make_divides">
77          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::divides</classname> &gt;</type>
78        </typedef>
79        <typedef name="make_modulus">
80          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::modulus</classname> &gt;</type>
81        </typedef>
82        <typedef name="make_plus">
83          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::plus</classname> &gt;</type>
84        </typedef>
85        <typedef name="make_minus">
86          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::minus</classname> &gt;</type>
87        </typedef>
88        <typedef name="make_less">
89          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::less</classname> &gt;</type>
90        </typedef>
91        <typedef name="make_greater">
92          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::greater</classname> &gt;</type>
93        </typedef>
94        <typedef name="make_less_equal">
95          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::less_equal</classname> &gt;</type>
96        </typedef>
97        <typedef name="make_greater_equal">
98          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::greater_equal</classname> &gt;</type>
99        </typedef>
100        <typedef name="make_equal_to">
101          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::equal_to</classname> &gt;</type>
102        </typedef>
103        <typedef name="make_not_equal_to">
104          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::not_equal_to</classname> &gt;</type>
105        </typedef>
106        <typedef name="make_logical_or">
107          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_or</classname> &gt;</type>
108        </typedef>
109        <typedef name="make_logical_and">
110          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_and</classname> &gt;</type>
111        </typedef>
112        <typedef name="make_bitwise_and">
113          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_and</classname> &gt;</type>
114        </typedef>
115        <typedef name="make_bitwise_or">
116          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_or</classname> &gt;</type>
117        </typedef>
118        <typedef name="make_bitwise_xor">
119          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_xor</classname> &gt;</type>
120        </typedef>
121        <typedef name="make_comma">
122          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::comma</classname> &gt;</type>
123        </typedef>
124        <typedef name="make_mem_ptr">
125          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::mem_ptr</classname> &gt;</type>
126        </typedef>
127        <typedef name="make_assign">
128          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::assign</classname> &gt;</type>
129        </typedef>
130        <typedef name="make_shift_left_assign">
131          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_left_assign</classname> &gt;</type>
132        </typedef>
133        <typedef name="make_shift_right_assign">
134          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_right_assign</classname> &gt;</type>
135        </typedef>
136        <typedef name="make_multiplies_assign">
137          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::multiplies_assign</classname> &gt;</type>
138        </typedef>
139        <typedef name="make_divides_assign">
140          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::divides_assign</classname> &gt;</type>
141        </typedef>
142        <typedef name="make_modulus_assign">
143          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::modulus_assign</classname> &gt;</type>
144        </typedef>
145        <typedef name="make_plus_assign">
146          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::plus_assign</classname> &gt;</type>
147        </typedef>
148        <typedef name="make_minus_assign">
149          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::minus_assign</classname> &gt;</type>
150        </typedef>
151        <typedef name="make_bitwise_and_assign">
152          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_and_assign</classname> &gt;</type>
153        </typedef>
154        <typedef name="make_bitwise_or_assign">
155          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_or_assign</classname> &gt;</type>
156        </typedef>
157        <typedef name="make_bitwise_xor_assign">
158          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_xor_assign</classname> &gt;</type>
159        </typedef>
160        <typedef name="make_subscript">
161          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::subscript</classname> &gt;</type>
162        </typedef>
163        <typedef name="make_if_else">
164          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::if_else_</classname> &gt;</type>
165        </typedef>
166        <typedef name="make_function">
167          <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::function</classname> &gt;</type>
168        </typedef>
169      </namespace>
170      <typedef name="_flatten">
171        <type><classname>proto::functional::flatten</classname></type>
172      </typedef>
173      <typedef name="_make_pair">
174        <type><classname>proto::functional::make_pair</classname></type>
175      </typedef>
176      <typedef name="_first">
177        <type><classname>proto::functional::first</classname></type>
178      </typedef>
179      <typedef name="_second">
180        <type><classname>proto::functional::second</classname></type>
181      </typedef>
182      <typedef name="_pop_back">
183        <type><classname>proto::functional::pop_back</classname></type>
184      </typedef>
185      <typedef name="_pop_front">
186        <type><classname>proto::functional::pop_front</classname></type>
187      </typedef>
188      <typedef name="_push_back">
189        <type><classname>proto::functional::push_back</classname></type>
190      </typedef>
191      <typedef name="_push_front">
192        <type><classname>proto::functional::push_front</classname></type>
193      </typedef>
194      <typedef name="_reverse">
195        <type><classname>proto::functional::reverse</classname></type>
196      </typedef>
197      <typedef name="_eval">
198        <type><classname>proto::functional::eval</classname></type>
199      </typedef>
200      <typedef name="_deep_copy">
201        <type><classname>proto::functional::deep_copy</classname></type>
202      </typedef>
203      <typedef name="_make_terminal">
204        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::terminal</classname> &gt;</type>
205      </typedef>
206      <typedef name="_make_unary_plus">
207        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::unary_plus</classname> &gt;</type>
208      </typedef>
209      <typedef name="_make_negate">
210        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::negate</classname> &gt;</type>
211      </typedef>
212      <typedef name="_make_dereference">
213        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::dereference</classname> &gt;</type>
214      </typedef>
215      <typedef name="_make_complement">
216        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::complement</classname> &gt;</type>
217      </typedef>
218      <typedef name="_make_address_of">
219        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::address_of</classname> &gt;</type>
220      </typedef>
221      <typedef name="_make_logical_not">
222        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_not</classname> &gt;</type>
223      </typedef>
224      <typedef name="_make_pre_inc">
225        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::pre_inc</classname> &gt;</type>
226      </typedef>
227      <typedef name="_make_pre_dec">
228        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::pre_dec</classname> &gt;</type>
229      </typedef>
230      <typedef name="_make_post_inc">
231        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::post_inc</classname> &gt;</type>
232      </typedef>
233      <typedef name="_make_post_dec">
234        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::post_dec</classname> &gt;</type>
235      </typedef>
236      <typedef name="_make_shift_left">
237        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_left</classname> &gt;</type>
238      </typedef>
239      <typedef name="_make_shift_right">
240        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_right</classname> &gt;</type>
241      </typedef>
242      <typedef name="_make_multiplies">
243        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::multiplies</classname> &gt;</type>
244      </typedef>
245      <typedef name="_make_divides">
246        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::divides</classname> &gt;</type>
247      </typedef>
248      <typedef name="_make_modulus">
249        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::modulus</classname> &gt;</type>
250      </typedef>
251      <typedef name="_make_plus">
252        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::plus</classname> &gt;</type>
253      </typedef>
254      <typedef name="_make_minus">
255        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::minus</classname> &gt;</type>
256      </typedef>
257      <typedef name="_make_less">
258        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::less</classname> &gt;</type>
259      </typedef>
260      <typedef name="_make_greater">
261        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::greater</classname> &gt;</type>
262      </typedef>
263      <typedef name="_make_less_equal">
264        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::less_equal</classname> &gt;</type>
265      </typedef>
266      <typedef name="_make_greater_equal">
267        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::greater_equal</classname> &gt;</type>
268      </typedef>
269      <typedef name="_make_equal_to">
270        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::equal_to</classname> &gt;</type>
271      </typedef>
272      <typedef name="_make_not_equal_to">
273        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::not_equal_to</classname> &gt;</type>
274      </typedef>
275      <typedef name="_make_logical_or">
276        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_or</classname> &gt;</type>
277      </typedef>
278      <typedef name="_make_logical_and">
279        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_and</classname> &gt;</type>
280      </typedef>
281      <typedef name="_make_bitwise_and">
282        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_and</classname> &gt;</type>
283      </typedef>
284      <typedef name="_make_bitwise_or">
285        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_or</classname> &gt;</type>
286      </typedef>
287      <typedef name="_make_bitwise_xor">
288        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_xor</classname> &gt;</type>
289      </typedef>
290      <typedef name="_make_comma">
291        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::comma</classname> &gt;</type>
292      </typedef>
293      <typedef name="_make_mem_ptr">
294        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::mem_ptr</classname> &gt;</type>
295      </typedef>
296      <typedef name="_make_assign">
297        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::assign</classname> &gt;</type>
298      </typedef>
299      <typedef name="_make_shift_left_assign">
300        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_left_assign</classname> &gt;</type>
301      </typedef>
302      <typedef name="_make_shift_right_assign">
303        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_right_assign</classname> &gt;</type>
304      </typedef>
305      <typedef name="_make_multiplies_assign">
306        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::multiplies_assign</classname> &gt;</type>
307      </typedef>
308      <typedef name="_make_divides_assign">
309        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::divides_assign</classname> &gt;</type>
310      </typedef>
311      <typedef name="_make_modulus_assign">
312        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::modulus_assign</classname> &gt;</type>
313      </typedef>
314      <typedef name="_make_plus_assign">
315        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::plus_assign</classname> &gt;</type>
316      </typedef>
317      <typedef name="_make_minus_assign">
318        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::minus_assign</classname> &gt;</type>
319      </typedef>
320      <typedef name="_make_bitwise_and_assign">
321        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_and_assign</classname> &gt;</type>
322      </typedef>
323      <typedef name="_make_bitwise_or_assign">
324        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_or_assign</classname> &gt;</type>
325      </typedef>
326      <typedef name="_make_bitwise_xor_assign">
327        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_xor_assign</classname> &gt;</type>
328      </typedef>
329      <typedef name="_make_subscript">
330        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::subscript</classname> &gt;</type>
331      </typedef>
332      <typedef name="_make_if_else">
333        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::if_else_</classname> &gt;</type>
334      </typedef>
335      <typedef name="_make_function">
336        <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::function</classname> &gt;</type>
337      </typedef>
338      <typedef name="_childN">
339        <purpose>For each <replaceable>N</replaceable> in <computeroutput>[0,BOOST_PROTO_MAX_ARITY)</computeroutput></purpose>
340        <type><classname>proto::_child_c</classname>&lt; <replaceable>N</replaceable> &gt;</type>
341      </typedef>
342      <typedef name="_child">
343        <type><classname alt="proto::_childN">proto::_child0</classname></type>
344      </typedef>
345      <typedef name="_left">
346        <type><classname alt="proto::_childN">proto::_child0</classname></type>
347      </typedef>
348      <typedef name="_right">
349        <type><classname alt="proto::_childN">proto::_child1</classname></type>
350      </typedef>
351    </namespace>
352  </namespace>
353  <macro name="BOOST_PROTO_MAX_ARITY">
354    <purpose>Controls the maximum number of child nodes an expression may have.</purpose>
355    <description>
356      <para>
357        <computeroutput>BOOST_PROTO_MAX_ARITY</computeroutput> defaults to 10. It may be set higher or lower, but not
358        lower than 3. Setting it higher will have a negative effect on compile times.
359      </para>
360      <para>
361        See also <computeroutput><macroname>BOOST_PROTO_MAX_FUNCTION_CALL_ARITY</macroname></computeroutput>.
362      </para>
363    </description>
364  </macro>
365  <macro name="BOOST_PROTO_MAX_LOGICAL_ARITY">
366    <purpose>Controls the maximum number of sub-grammars that
367    <computeroutput>
368      <classname alt="boost::proto::or_">proto::or_&lt;&gt;</classname>
369    </computeroutput> and
370      <computeroutput>
371        <classname alt="boost::proto::and_">proto::and_&lt;&gt;</classname>
372      </computeroutput> accept.</purpose>
373    <description>
374      <para>
375        <computeroutput>BOOST_PROTO_MAX_LOGICAL_ARITY</computeroutput> defaults to 10. It may be set higher or lower. Setting
376        it higher will have a negative effect on compile times.
377      </para>
378    </description>
379  </macro>
380  <macro name="BOOST_PROTO_MAX_FUNCTION_CALL_ARITY">
381    <purpose>Controls the maximum number of arguments that <computeroutput>operator()</computeroutput> overloads
382      accept.</purpose>
383    <description>
384      <para>
385        When setting
386        <computeroutput>
387          <macroname>BOOST_PROTO_MAX_ARITY</macroname>
388        </computeroutput> higher than the default, compile times
389        slow down considerably. That is due in large part to the explosion in the number of
390        <computeroutput>operator()</computeroutput> overloads that must be generated for each
391        Proto expression type. By setting <computeroutput>BOOST_PROTO_MAX_FUNCTION_CALL_ARITY</computeroutput>
392        lower than <computeroutput><macroname>BOOST_PROTO_MAX_ARITY</macroname></computeroutput>,
393        compile times can be sped up considerably.
394      </para>
395    </description>
396  </macro>
397</header>
398