]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/phoenix/doc/html/phoenix/organization.html
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / phoenix / doc / html / phoenix / organization.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Organization</title>
5 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
7 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Phoenix 3.2.0">
8 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Phoenix 3.2.0">
9 <link rel="prev" href="basics.html" title="Basics">
10 <link rel="next" href="actor.html" title="Actor">
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="basics.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="actor.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
27 <a name="phoenix.organization"></a><a class="link" href="organization.html" title="Organization">Organization</a>
28 </h2></div></div></div>
29 <p>
30 Care and attention to detail was given, painstakingly, to the design and implementation
31 of Phoenix.
32 </p>
33 <p>
34 The library is organized in four layers:
35 </p>
36 <div class="orderedlist"><ol class="orderedlist" type="1">
37 <li class="listitem">
38 Actor
39 </li>
40 <li class="listitem">
41 Value, Reference, Arguments
42 </li>
43 <li class="listitem">
44 Function, Operator, Object, Statement, Scope
45 </li>
46 <li class="listitem">
47 STL, Fusion, Bind
48 </li>
49 </ol></div>
50 <p>
51 The modules are orthogonal, with no cyclic dependencies. Lower layers do not
52 depend on higher layers. Modules in a layer do not depend on other modules
53 in the same layer. This means, for example, that Bind can be completely discarded
54 if it is not required; or one could perhaps take out Operator and Statement
55 and just use Function, which may be desirable in a pure FP application.
56 </p>
57 <p>
58 The library has grown from the original Phoenix but still comprises only header
59 files. There are no object files to link against.
60 </p>
61 <h3>
62 <a name="phoenix.organization.h0"></a>
63 <span><a name="phoenix.organization.core"></a></span><a class="link" href="organization.html#phoenix.organization.core">Core</a>
64 </h3>
65 <p>
66 The lowest two layers comprise the core.
67 </p>
68 <p>
69 The <a class="link" href="actor.html" title="Actor"><code class="computeroutput"><span class="identifier">Actor</span></code></a>
70 is the main concept behind the library. Lazy functions are abstracted as actors.
71 </p>
72 <p>
73 Terminals provide the basic building blocks of functionality within Phoenix.
74 Expressions are used to combine these terminals together to provide more powerful
75 functionality.
76 </p>
77 <p>
78 Expressions are composed of zero or more actors. Each actor in a composite
79 can again be another expression.
80 </p>
81 <div class="table">
82 <a name="phoenix.organization.t0"></a><p class="title"><b>Table&#160;1.2.&#160;Modules</b></p>
83 <div class="table-contents"><table class="table" summary="Modules">
84 <colgroup>
85 <col>
86 <col>
87 </colgroup>
88 <thead><tr>
89 <th>
90 <p>
91 Module
92 </p>
93 </th>
94 <th>
95 <p>
96 Description
97 </p>
98 </th>
99 </tr></thead>
100 <tbody>
101 <tr>
102 <td>
103 <p>
104 Function
105 </p>
106 </td>
107 <td>
108 <p>
109 Lazy functions support (e.g. <code class="computeroutput"><span class="identifier">add</span></code>)
110 </p>
111 </td>
112 </tr>
113 <tr>
114 <td>
115 <p>
116 Operator
117 </p>
118 </td>
119 <td>
120 <p>
121 Lazy operators support (e.g. <code class="computeroutput"><span class="special">+</span></code>)
122 </p>
123 </td>
124 </tr>
125 <tr>
126 <td>
127 <p>
128 Statement
129 </p>
130 </td>
131 <td>
132 <p>
133 Lazy statements (e.g. <code class="computeroutput"><span class="identifier">if_</span></code>,
134 <code class="computeroutput"><span class="identifier">while_</span></code>)
135 </p>
136 </td>
137 </tr>
138 <tr>
139 <td>
140 <p>
141 Object
142 </p>
143 </td>
144 <td>
145 <p>
146 Lazy casts (e.g. <code class="computeroutput"><span class="identifier">static_cast_</span></code>),
147 object creation destruction (e.g. <code class="computeroutput"><span class="identifier">new_</span></code>,
148 <code class="computeroutput"><span class="identifier">delete_</span></code>)
149 </p>
150 </td>
151 </tr>
152 <tr>
153 <td>
154 <p>
155 Scope
156 </p>
157 </td>
158 <td>
159 <p>
160 Support for scopes, local variables and lambda-lambda
161 </p>
162 </td>
163 </tr>
164 <tr>
165 <td>
166 <p>
167 Bind
168 </p>
169 </td>
170 <td>
171 <p>
172 Lazy functions from free functions, member functions or member variables.
173 </p>
174 </td>
175 </tr>
176 <tr>
177 <td>
178 <p>
179 STL Container
180 </p>
181 </td>
182 <td>
183 <p>
184 Set of predefined "lazy" functions that work on STL containers
185 and sequences (e.g. <code class="computeroutput"><span class="identifier">push_back</span></code>).
186 </p>
187 </td>
188 </tr>
189 <tr>
190 <td>
191 <p>
192 STL Algorithm
193 </p>
194 </td>
195 <td>
196 <p>
197 Set of predefined "lazy" versions of the STL algorithms
198 (e.g. <code class="computeroutput"><span class="identifier">find_if</span></code>).
199 </p>
200 </td>
201 </tr>
202 </tbody>
203 </table></div>
204 </div>
205 <br class="table-break"><p>
206 Each module is defined in a header file with the same name. For example, the
207 core module is defined in <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
208 </p>
209 <div class="table">
210 <a name="phoenix.organization.t1"></a><p class="title"><b>Table&#160;1.3.&#160;Includes</b></p>
211 <div class="table-contents"><table class="table" summary="Includes">
212 <colgroup>
213 <col>
214 <col>
215 </colgroup>
216 <thead><tr>
217 <th>
218 <p>
219 Module
220 </p>
221 </th>
222 <th>
223 <p>
224 File
225 </p>
226 </th>
227 </tr></thead>
228 <tbody>
229 <tr>
230 <td>
231 <p>
232 Core
233 </p>
234 </td>
235 <td>
236 <p>
237 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
238 </p>
239 </td>
240 </tr>
241 <tr>
242 <td>
243 <p>
244 Function
245 </p>
246 </td>
247 <td>
248 <p>
249 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
250 </p>
251 </td>
252 </tr>
253 <tr>
254 <td>
255 <p>
256 Operator
257 </p>
258 </td>
259 <td>
260 <p>
261 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
262 </p>
263 </td>
264 </tr>
265 <tr>
266 <td>
267 <p>
268 Statement
269 </p>
270 </td>
271 <td>
272 <p>
273 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
274 </p>
275 </td>
276 </tr>
277 <tr>
278 <td>
279 <p>
280 Object
281 </p>
282 </td>
283 <td>
284 <p>
285 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
286 </p>
287 </td>
288 </tr>
289 <tr>
290 <td>
291 <p>
292 Scope
293 </p>
294 </td>
295 <td>
296 <p>
297 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">scope</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
298 </p>
299 </td>
300 </tr>
301 <tr>
302 <td>
303 <p>
304 Bind
305 </p>
306 </td>
307 <td>
308 <p>
309 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">bind</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
310 </p>
311 </td>
312 </tr>
313 <tr>
314 <td>
315 <p>
316 Container
317 </p>
318 </td>
319 <td>
320 <p>
321 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">stl</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
322 </p>
323 </td>
324 </tr>
325 <tr>
326 <td>
327 <p>
328 Algorithm
329 </p>
330 </td>
331 <td>
332 <p>
333 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">stl</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
334 </p>
335 </td>
336 </tr>
337 </tbody>
338 </table></div>
339 </div>
340 <br class="table-break"><div class="sidebar">
341 <p class="title"><b></b></p>
342 <p>
343 <span class="inlinemediaobject"><img src="../images/tip.png"></span>
344 Finer grained include files are available per feature; see the succeeding sections.
345 </p>
346 </div>
347 </div>
348 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
349 <td align="left"></td>
350 <td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010, 2014, 2015 Joel de Guzman, Dan Marsden, Thomas
351 Heller, John Fletcher<p>
352 Distributed under the Boost Software License, Version 1.0. (See accompanying
353 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>)
354 </p>
355 </div></td>
356 </tr></table>
357 <hr>
358 <div class="spirit-nav">
359 <a accesskey="p" href="basics.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="actor.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
360 </div>
361 </body>
362 </html>