PageRenderTime 36ms CodeModel.GetById 13ms app.highlight 16ms RepoModel.GetById 1ms app.codeStats 1ms

/Src/Dependencies/Boost/libs/phoenix/doc/html/phoenix/organization.html

http://hadesmem.googlecode.com/
HTML | 361 lines | 361 code | 0 blank | 0 comment | 0 complexity | 8c0004a0c947aeed24d0b47b5d00e18d MD5 | raw file
  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.76.1">
  7<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
  8<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Phoenix 3.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<a name="phoenix.organization.core"></a><h3>
 62<a name="id805938"></a>
 63      <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="id805977"></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="id806264"></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<div class="titlepage"></div>
342<p>
343      <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Finer grained include files are available per feature;
344      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 Joel de Guzman, Dan Marsden, Thomas Heller<p>
351        Distributed under the Boost Software License, Version 1.0. (See accompanying
352        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>)
353      </p>
354</div></td>
355</tr></table>
356<hr>
357<div class="spirit-nav">
358<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>
359</div>
360</body>
361</html>