/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>