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 1. Phoenix 3.2.0">
8 <link rel=
"up" href=
"../index.html" title=
"Chapter 1. Phoenix 3.2.0">
9 <link rel=
"prev" href=
"basics.html" title=
"Basics">
10 <link rel=
"next" href=
"actor.html" title=
"Actor">
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>
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>
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>
30 Care and attention to detail was given, painstakingly, to the design and implementation
34 The library is organized in four layers:
36 <div class=
"orderedlist"><ol class=
"orderedlist" type=
"1">
41 Value, Reference, Arguments
44 Function, Operator, Object, Statement, Scope
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.
58 The library has grown from the original Phoenix but still comprises only header
59 files. There are no object files to link against.
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>
66 The lowest two layers comprise the core.
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.
73 Terminals provide the basic building blocks of functionality within Phoenix.
74 Expressions are used to combine these terminals together to provide more powerful
78 Expressions are composed of zero or more actors. Each actor in a composite
79 can again be another expression.
82 <a name=
"phoenix.organization.t0"></a><p class=
"title"><b>Table
 1.2.
 Modules
</b></p>
83 <div class=
"table-contents"><table class=
"table" summary=
"Modules">
109 Lazy functions support (e.g.
<code class=
"computeroutput"><span class=
"identifier">add
</span></code>)
121 Lazy operators support (e.g.
<code class=
"computeroutput"><span class=
"special">+
</span></code>)
133 Lazy statements (e.g.
<code class=
"computeroutput"><span class=
"identifier">if_
</span></code>,
134 <code class=
"computeroutput"><span class=
"identifier">while_
</span></code>)
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>)
160 Support for scopes, local variables and lambda-lambda
172 Lazy functions from free functions, member functions or member variables.
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>).
197 Set of predefined
"lazy" versions of the STL algorithms
198 (e.g.
<code class=
"computeroutput"><span class=
"identifier">find_if
</span></code>).
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"><</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">></span></code>.
210 <a name=
"phoenix.organization.t1"></a><p class=
"title"><b>Table
 1.3.
 Includes
</b></p>
211 <div class=
"table-contents"><table class=
"table" summary=
"Includes">
237 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</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">></span></code>
249 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</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">></span></code>
261 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</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">></span></code>
273 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</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">></span></code>
285 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</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">></span></code>
297 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</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">></span></code>
309 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</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">></span></code>
321 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</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">></span></code>
333 <code class=
"computeroutput"><span class=
"preprocessor">#include
</span> <span class=
"special"><</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">></span></code>
340 <br class=
"table-break"><div class=
"sidebar">
341 <p class=
"title"><b></b></p>
343 <span class=
"inlinemediaobject"><img src=
"../images/tip.png"></span>
344 Finer grained include files are available per feature; see the succeeding sections.
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
© 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>)
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>