|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r64806 - in sandbox/SOC/2010/phoenix3/libs/phoenix: doc doc/advanced doc/html doc/html/phoenix doc/html/phoenix/advanced doc/html/phoenix/advanced_topics doc/html/phoenix/reference doc/html/phoenix/reference/concepts doc/html/phoenix/reference/modules doc/html/phoenix/reference/modules/bind doc/html/phoenix/reference/modules/core doc/html/phoenix/reference/modules/object doc/html/phoenix/reference/modules/scope doc/html/phoenix/reference/modules/statement doc/html/phoenix/reference/modules/stl doc/html/phoenix/starter_kit doc/notes doc/reference doc/reference/concepts doc/starter_kit example test/core
From: thom.heller_at_[hidden]
Date: 2010-08-14 18:07:49
Author: theller
Date: 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
New Revision: 64806
URL: http://svn.boost.org/trac/boost/changeset/64806
Log:
added advanced section to docs
Added:
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgment.qbk
- copied, changed from r64792, /sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgement.qbk
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced/
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced/extending_actors.qbk (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced/porting.qbk (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/acknowledgments.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics/
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics/extending_actors.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics/porting_from_phoenix_2_0.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/expression.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/primitive.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/actor.qbk (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/environment.qbk (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/evaluation_policy.qbk (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/evaluator.qbk (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/expression.qbk (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/example/
sandbox/SOC/2010/phoenix3/libs/phoenix/example/container_actor.cpp (contents, props changed)
Removed:
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgement.qbk
Text files modified:
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgment.qbk | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actors.qbk | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced.qbk | 30 -----
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/index.html | 64 +++++-------
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced.html | 26 +----
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced/transformations.html | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference.html | 10 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/basics.html | 18 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts.html | 10 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/actor.html | 36 ++++---
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/environment.html | 28 +++--
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/evaluationpolicy.html | 24 ++--
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/evaluator.html | 52 ++++++----
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules.html | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/bind.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/bind/compatibility_with_other_bind_libraries.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/arguments.html | 16 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/references.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/values.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/function.html | 17 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/object/construction.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/object/new.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/operator.html | 89 +++++++++--------
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/scope/lambda.html | 8
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/statement/throw_.html | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/stl/algorithm.html | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/stl/container.html | 124 ++++++++++++------------
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/organization.html | 18 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/references.html | 96 +++++++++---------
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_functions.html | 26 ++--
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_operators.html | 15 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/more.html | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/references.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/values.html | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/wrap_up.html | 32 ++---
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/quickbook_HTML.manifest | 9 +
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/notes.qbk | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/notes/performance.qbk | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/phoenix3.qbk | 3
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/bind.qbk | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/composite.qbk | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts.qbk | 196 +--------------------------------------
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/core.qbk | 8
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/function.qbk | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/object.qbk | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/operator.qbk | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/organisation.qbk | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/statement.qbk | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/starter_kit/references.qbk | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/wrap_up.qbk | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/test/core/function_composition.cpp | 3
52 files changed, 424 insertions(+), 630 deletions(-)
Deleted: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgement.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgement.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
+++ (empty file)
@@ -1,32 +0,0 @@
-[/==============================================================================
- Copyright (C) 2001-2010 Joel de Guzman
- Copyright (C) 2001-2005 Dan Marsden
- Copyright (C) 2001-2010 Thomas Heller
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-===============================================================================/]
-
-[section Acknowledgement]
-
-# Hartmut Kaiser implemented the original lazy casts and constructors based on
- his original work on Spirit SE "semantic expressions" (the precursor to
- Phoenix).
-# Angus Leeming implemented the container functions on Phoenix-1 which I then
- ported to Phoenix-2.
-# Daniel Wallin helped with the scope module, local variables, let and lambda
- and the algorithms. I frequently discuss design issues with Daniel on Yahoo Messenger.
-# Jaakko Jarvi. DA Lambda MAN!
-# Dave Abrahams, for his constant presence, wherever, whenever.
-# Aleksey Gurtovoy, DA MPL MAN!
-# Doug Gregor, always a source of inpiration.
-# Dan Marsden, did almost all the work in bringing Phoenix-2 out the door.
-# Eric Niebler did a 2.0 pre-release review and wrote some range related code
- that Phoenix stole and used in the algorithms.
-# Thorsten Ottosen; Eric's range_ex code began life as "container_algo" in the
- old boost sandbox, by Thorsten in 2002-2003.
-# Jeremy Siek, even prior to Thorsten, in 2001, started the "container_algo".
-# Vladimir Prus wrote the mutating algorithms code from the Boost Wiki.
-# Daryle Walker did a 2.0 pre-release review.
-
-[endsect]
Copied: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgment.qbk (from r64792, /sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgement.qbk)
==============================================================================
--- /sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgement.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/acknowledgment.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -7,7 +7,7 @@
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
===============================================================================/]
-[section Acknowledgement]
+[section Acknowledgments]
# Hartmut Kaiser implemented the original lazy casts and constructors based on
his original work on Spirit SE "semantic expressions" (the precursor to
@@ -19,7 +19,7 @@
# Jaakko Jarvi. DA Lambda MAN!
# Dave Abrahams, for his constant presence, wherever, whenever.
# Aleksey Gurtovoy, DA MPL MAN!
-# Doug Gregor, always a source of inpiration.
+# Doug Gregor, always a source of inspiration.
# Dan Marsden, did almost all the work in bringing Phoenix-2 out the door.
# Eric Niebler did a 2.0 pre-release review and wrote some range related code
that Phoenix stole and used in the algorithms.
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actors.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actors.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actors.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -61,7 +61,7 @@
For any Actor the following expressions must be valid:
[table
- [[Expression] [Return type] [Type Requirements] [Runtime Complexity]]
+ [[Expression] [Return type] [Type Requirements] [Run time Complexity]]
[[`eval(a)`] [Any type] [] []]
[[`eval(a, env)`] [Any type] [][]]
[[`a(expr0, expr1..., exprN)`] [Boost.Proto expression] [][]]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -7,33 +7,9 @@
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
===============================================================================/]
-[section Advanced]
-
-[section Phoenix in Detail]
-
-Section explaining how phoenix expression look like, the structure of the AST, and so on
-
-[section Actors]
-[endsect]
-
-[section AST structure]
-[endsect]
-
-[endsect]
-
-[section Extending]
-
-Section about how to extend phoenix
-
-[section Extending Actors]
-
-[endsect]
-
-[endsect]
-
-[section Transformations]
-
-[endsect]
+[section Advanced Topics]
+[include advanced/porting.qbk]
+[include advanced/extending_actors.qbk]
[endsect]
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced/extending_actors.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced/extending_actors.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,180 @@
+[/==============================================================================
+ Copyright (C) 2001-2010 Joel de Guzman
+ Copyright (C) 2001-2005 Dan Marsden
+ Copyright (C) 2001-2010 Thomas Heller
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
+
+[section Extending Actors]
+
+[link phoenix.reference.concept.actor Actors] are one of the main parts of the
+library, and one of the many customization points. The default actor implementation
+provides several perator() overloads which deal with the evaluation of expressions.
+
+For some uses cases this might not be enough. For convenience it is thinkable to
+provide custom member functions which generate new expressions. An example is
+the [link phoenix.reference.modules.statement.if__statement if_ Statement] which
+provides an additional else member. With this the actual phoenix expression
+becomes more expressive.
+
+Another szenario is to give actors the semantics of a certain well known interface
+or concept. This tutorial like section will provide information on how to implement
+a custom actor which is usable as if it where a [@http://www.sgi.com/tech/stl/Container.html STL Container].
+
+[heading Requirements]
+
+Let's repeat what we want to have:
+
+[table
+ [[Expression] [Semantics]]
+ [[`a.begin()`] [Returns an iterator pointing to the first element in the container.]]
+ [[`a.end()`] [Returns an iterator pointing one past the last element in the container.]]
+ [[`a.size()`] [Returns the size of the container, that is, its number of elements.]]
+ [[`a.max_size()`] [Returns the largest size that this container can ever have.]]
+ [[`a.empty()`] [Equivalent to a.size() == 0. (But possibly faster.)]]
+ [[`a.swap(b)`] [Equivalent to swap(a,b)]]
+]
+
+Additionally, we want all the operator() overloads of the regular actor.
+
+[heading The `container_actor`]
+
+The first version of our `container_actor` interface to show the general
+principle. This will be continually be extended. For the sake of simplicity,
+every member function generator will return [link phoenix.reference.modules.core.nothing `nothing`]
+at first.
+
+ template <typename Expr>
+ struct container_actor
+ : actor<Expr>
+ {
+ typedef actor<Expr> base_type;
+ typedef container_actor<Expr> that_type;
+
+ container_actor( base_type const& base )
+ : base_type( base ) {}
+
+ compose<null_actor>::result_type const begin() { return nothing; }
+ compose<null_actor>::result_type const end() { return nothing; }
+ compose<null_actor>::result_type const size() { return nothing; }
+ compose<null_actor>::result_type const max_size() { return nothing; }
+ compose<null_actor>::result_type const empty() { return nothing; }
+
+ // note that swap is the only function needing another container.
+ template <typename OtherExpr>
+ compose<null_actor>::result_type const swap( actor<OtherExpr> const& ) { return nothing; }
+ };
+
+[heading Using the new actor]
+
+Although the member function do nothing right now, we want to test if we can use
+our new actor.
+
+First, lets create a generator which wraps the `container_actor` around any other
+expression:
+
+ template <typename Expr>
+ container_actor<Expr> const
+ container( actor<Expr> const& expr )
+ {
+ return expr;
+ }
+
+Now lets test this:
+
+ std::vector<int> v;
+ v.push_back(0);
+ v.push_back(1);
+ v.push_back(2);
+ v.push_back(3);
+
+ (container(arg1).begin())(v);
+
+Granted, this is not really elegant and not really practical (we coud have just
+used phoenix::begin(v) from the [link phoenix.reference.modules.stl.algorithm Phoenix Algorithm Module],
+but we can do better.
+
+Let's have a [link phoenix.reference.modules.core.arguments Argument placeholder]
+which is usable as if it was a STL container:
+
+ template <typename N>
+ struct make_container_argument : compose_ex<argument, container_actor, N> {};
+
+ typedef make_container_argument<boost::mpl::int_<0> > make_con1;
+ make_con1::type const con1 = make_con1()(boost::mpl::int_<0>());
+ // and so on ...
+
+The above code now changes to:
+
+ std::vector<int> v;
+ v.push_back(0);
+ v.push_back(1);
+ v.push_back(2);
+ v.push_back(3);
+
+ (con1.size())(v);
+
+Wow, that was easy!
+
+[heading Adding live to our actor]
+
+This one will be actually even easier.
+
+First, we define a [link pheonix.reference.modules.function Lazy function] which
+evaluates the expression we want to implement.
+Following is the implementation of the size function:
+
+ struct size_impl
+ {
+ // result_of protocol:
+ template <typename Sig>
+ struct result;
+
+ template <typename This, typename Container>
+ struct result<This(Container)>
+ {
+ // Note, remove reference here, because Container can be anything
+ typedef typename boost::remove_reference<Container>::type container_type;
+
+ // The result will be size_type
+ typedef typename container_type::size_type type;
+ };
+
+ template <typename Container>
+ typename result<size_impl(Container const&)>::type
+ operator()(Container const& container) const
+ {
+ return container.size();
+ }
+ };
+
+Good, this was the first part. The second part will be, to implement the size member
+function of `container_actor`:
+
+ template <typename Expr>
+ struct container_actor
+ : actor<Expr>
+ {
+ typedef actor<Expr> base_type;
+ typedef container_actor<Expr> that_type;
+
+ container_actor( base_type const& base )
+ : base_type( base ) {}
+
+ typename result_of::function<size_impl, that_type>::type const
+ size()
+ {
+ function<size_impl> const f = size_impl();
+ return f(*this);
+ }
+
+ // the rest ...
+ };
+
+It is left as exercise to the user to implement the missing parts by resuing
+functions from the [link phoenix.reference.modules.stl.algorithm Phoenix Algorithm Module]
+(The impatient take a look here: [@../example/container_actor.cpp container_actor.cpp]).
+
+[endsect]
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced/porting.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/advanced/porting.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,115 @@
+[/==============================================================================
+ Copyright (C) 2001-2010 Joel de Guzman
+ Copyright (C) 2001-2005 Dan Marsden
+ Copyright (C) 2001-2010 Thomas Heller
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
+
+[section Porting from Phoenix 2.0]
+
+While reading the current documentation you might have noticed that the
+[link phoenix.starter_kit Starter Kit] didn't change very much. This is because
+a lot of effort was put into being compatible with Phoenix 2.0, at least on the
+outside.
+
+That being said, the only major difference is the result type deduction protocol.
+The everyday Phoenix-User will encounter this change only when writing
+[link phoenix.reference.modules.function Functions].
+
+To make your function implementations Phoenix compliant again change from
+the old Phoenix result type deduction protocol to the new (standard compliant)
+result type deduction protocol:
+
+[table
+ [[Phoenix 2.0] [Phoenix 3.0] [Notes]]
+ [
+ [``
+ struct is_odd_impl
+ {
+ template <typename Arg>
+ struct result
+ {
+ typedef bool type;
+ };
+
+ template <typename Arg>
+ bool operator()(Arg arg) const
+ {
+ return arg % 2 == 1;
+ }
+ };
+
+ boost::phoenix::function<is_odd_impl> is_odd = is_odd_impl();
+ ``]
+ [``
+ struct is_odd_impl
+ {
+ typedef bool result_type;
+
+ template <typename Arg>
+ bool operator()(Arg arg) const
+ {
+ return arg % 2 == 1;
+ }
+ };
+
+ boost::phoenix::function<is_odd_impl> is_odd = is_odd_impl();
+ ``]
+ [ __note__
+ The result_of protocol is particulary easy when you implement a monomorphic
+ function (return type not dependant on the arguments). You then just need a
+ single nested return_type typedef.
+ ]
+ ]
+ [
+ [``
+ struct add_impl
+ {
+ template <typename Arg1, typename Arg2>
+ struct result
+ {
+ typedef Arg1;
+ };
+
+ template <typename Arg1, typename Arg2>
+ Arg1 operator()(Arg1 arg1, Arg2 arg2) const
+ {
+ return arg1 + arg2;
+ }
+ };
+
+ boost::phoenix::function<add_impl> add = add_impl();
+ ``]
+ [``
+ struct add_impl
+ {
+ template <typename Sig>
+ struct result;
+
+ template <typename This, typename Arg1, typename Arg2>
+ struct result<This(Arg1, Arg2)>
+ : boost::remove_reference<Arg1> {};
+
+ template <typename Arg1, typename Arg2>
+ typename boost::remove_reference<Arg1>::type
+ operator()(Arg1 arg1, Arg2 arg2) const
+ {
+ return arg1 + arg2;
+ }
+ };
+
+ boost::phoenix::function<add_impl> add = add_impl();
+ ``]
+ [__alert__ When dealing with polymorphic functions the template arguments can
+ be any type including cv-qualifiers and references. For that reason, the calculated
+ result type need to remove the reference whenever appropriate!]
+ ]
+]
+
+[blurb __tip__ There is no general guideline for porting code which relies on the
+internals of Phoenix 2.0. If you plan on porting your Phoenix 2.0 extensions
+please refer to the next sections.]
+
+[endsect]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/index.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/index.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/index.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -26,7 +26,7 @@
</h3></div></div>
<div><p class="copyright">Copyright © 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller</p></div>
<div><div class="legalnotice">
-<a name="id672967"></a><p>
+<a name="id789362"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
</p>
@@ -49,16 +49,22 @@
<dt><span class="section">Lazy Functions</span></dt>
<dt><span class="section">More</span></dt>
</dl></dd>
+<dt><span class="section">Advanced Topics</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="phoenix/advanced_topics/porting_from_phoenix_2_0.html">Porting
+ from Phoenix 2.0</a></span></dt>
+<dt><span class="section">Extending Actors</span></dt>
+</dl></dd>
<dt><span class="section">Reference</span></dt>
<dd><dl>
<dt><span class="section">Basics</span></dt>
<dt><span class="section">Organization</span></dt>
<dt><span class="section">Concepts</span></dt>
<dd><dl>
-<dt><span class="section">Environment</span></dt>
<dt><span class="section">Actor</span></dt>
-<dt><span class="section">EvaluationPolicy</span></dt>
<dt><span class="section">Evaluator</span></dt>
+<dt><span class="section">EvaluationPolicy</span></dt>
+<dt><span class="section">Environment</span></dt>
</dl></dd>
<dt><span class="section">Modules</span></dt>
<dd><dl>
@@ -127,43 +133,31 @@
<dd><dl><dt><span class="section"><a href="phoenix/notes/porting_from_phoenix_2_0.html">Porting from
Phoenix 2.0</a></span></dt></dl></dd>
<dt><span class="section">Wrap Up</span></dt>
-<dt><span class="section">Acknowledgement</span></dt>
+<dt><span class="section">Acknowledgments</span></dt>
<dt><span class="section">References</span></dt>
</dl>
</div>
<a name="phoenix.preface"></a><h2>
-<a name="id703696"></a>
+<a name="id820091"></a>
<a class="link" href="index.html#phoenix.preface">Preface</a>
</h2>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <span class="emphasis"><em>Functional programming is so called because a program consists
- entirely of functions. The main program itself is written as a function which
- receives the program's input as its argument and delivers the program's output
- as its result. Typically the main function is defined in terms of other functions,
- which in turn are defined in terms of still more functions until at the bottom
- level the functions are language primitives.</em></span>
- </p>
-<p>
- </p>
-</blockquote></div>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <span class="bold"><strong>John Hughes</strong></span>-- <span class="emphasis"><em>Why Functional Programming
- Matters</em></span>
- </p>
-<p>
- </p>
-</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>Functional programming is so called because a program consists entirely
+ of functions. The main program itself is written as a function which receives
+ the program's input as its argument and delivers the program's output as its
+ result. Typically the main function is defined in terms of other functions,
+ which in turn are defined in terms of still more functions until at the bottom
+ level the functions are language primitives.</em></span>
+ </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="bold"><strong>John Hughes</strong></span>-- <span class="emphasis"><em>Why Functional Programming
+ Matters</em></span>
+ </p></blockquote></div>
<p>
<span class="inlinemediaobject"><img src="images/lambda_cpp.png" alt="lambda_cpp"></span>
</p>
<a name="phoenix.description"></a><h3>
-<a name="id671755"></a>
+<a name="id788143"></a>
<a class="link" href="index.html#phoenix.description">Description</a>
</h3>
<p>
@@ -181,7 +175,7 @@
library is organized in highly independent modules and layers.
</p>
<a name="phoenix.how_to_use_this_manual"></a><h3>
-<a name="id671802"></a>
+<a name="id788190"></a>
<a class="link" href="index.html#phoenix.how_to_use_this_manual">How to use this manual</a>
</h3>
<p>
@@ -203,7 +197,7 @@
icons precede some text to indicate:
</p>
<div class="table">
-<a name="id671833"></a><p class="title"><b>Table 1.1. Icons</b></p>
+<a name="id788225"></a><p class="title"><b>Table 1.1. Icons</b></p>
<div class="table-contents"><table class="table" summary="Icons">
<colgroup>
<col>
@@ -292,14 +286,12 @@
</p>
</div>
<a name="phoenix._emphasis_role__bold___emphasis____to_my_dear_daughter__phoenix__emphasis___emphasis_"></a><h3>
-<a name="id712654"></a>
+<a name="id829046"></a>
<a class="link" href="index.html#phoenix._emphasis_role__bold___emphasis____to_my_dear_daughter__phoenix__emphasis___emphasis_"><span class="bold"><strong><span class="emphasis"><em>...To my dear daughter, Phoenix</em></span></strong></span></a>
</h3>
-<p>
- </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: August 13, 2010 at 22:32:23 GMT</small></p></td>
+<td align="left"><p><small>Last revised: August 14, 2010 at 21:32:59 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/acknowledgments.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/acknowledgments.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,84 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgments</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="prev" href="wrap_up.html" title="Wrap Up">
+<link rel="next" href="references.html" title="References">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap_up.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="phoenix.acknowledgments"></a><a class="link" href="acknowledgments.html" title="Acknowledgments">Acknowledgments</a>
+</h2></div></div></div>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Hartmut Kaiser implemented the original lazy casts and constructors based
+ on his original work on Spirit SE "semantic expressions" (the
+ precursor to Phoenix).
+ </li>
+<li class="listitem">
+ Angus Leeming implemented the container functions on Phoenix-1 which I
+ then ported to Phoenix-2.
+ </li>
+<li class="listitem">
+ Daniel Wallin helped with the scope module, local variables, let and lambda
+ and the algorithms. I frequently discuss design issues with Daniel on Yahoo
+ Messenger.
+ </li>
+<li class="listitem">
+ Jaakko Jarvi. DA Lambda MAN!
+ </li>
+<li class="listitem">
+ Dave Abrahams, for his constant presence, wherever, whenever.
+ </li>
+<li class="listitem">
+ Aleksey Gurtovoy, DA MPL MAN!
+ </li>
+<li class="listitem">
+ Doug Gregor, always a source of inspiration.
+ </li>
+<li class="listitem">
+ Dan Marsden, did almost all the work in bringing Phoenix-2 out the door.
+ </li>
+<li class="listitem">
+ Eric Niebler did a 2.0 pre-release review and wrote some range related
+ code that Phoenix stole and used in the algorithms.
+ </li>
+<li class="listitem">
+ Thorsten Ottosen; Eric's range_ex code began life as "container_algo"
+ in the old boost sandbox, by Thorsten in 2002-2003.
+ </li>
+<li class="listitem">
+ Jeremy Siek, even prior to Thorsten, in 2001, started the "container_algo".
+ </li>
+<li class="listitem">
+ Vladimir Prus wrote the mutating algorithms code from the Boost Wiki.
+ </li>
+<li class="listitem">
+ Daryle Walker did a 2.0 pre-release review.
+ </li>
+</ol></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wrap_up.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -6,32 +6,18 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../index.html" title="Chapter 1. Phoenix 3.0">
-<link rel="prev" href="reference/modules/stl/algorithm.html" title="Algorithm">
-<link rel="next" href="advanced/phoenix_in_detail.html" title="Phoenix in Detail">
+<link rel="prev" href="starter_kit/more.html" title="More">
+<link rel="next" href="reference.html" title="Reference">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="reference/modules/stl/algorithm.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="advanced/phoenix_in_detail.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="starter_kit/more.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../images/next.png" alt="Next"></a>
</div>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="phoenix.advanced"></a><a class="link" href="advanced.html" title="Advanced">Advanced</a>
-</h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section">Phoenix in Detail</span></dt>
-<dd><dl>
-<dt><span class="section">Actors</span></dt>
-<dt><span class="section"><a href="advanced/phoenix_in_detail/ast_structure.html">AST
- structure</a></span></dt>
-</dl></dd>
-<dt><span class="section">Extending</span></dt>
-<dd><dl><dt><span class="section"><a href="advanced/extending/extending_actors.html">Extending
- Actors</a></span></dt></dl></dd>
-<dt><span class="section">Transformations</span></dt>
-</dl></div>
-</div>
+</h2></div></div></div></div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
@@ -42,7 +28,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="reference/modules/stl/algorithm.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="advanced/phoenix_in_detail.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="starter_kit/more.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced/transformations.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced/transformations.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced/transformations.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -7,13 +7,13 @@
<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../advanced.html" title="Advanced">
<link rel="prev" href="extending/extending_actors.html" title="Extending Actors">
-<link rel="next" href="../notes.html" title="Notes">
+<link rel="next" href="../reference.html" title="Reference">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="extending/extending_actors.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../notes.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="extending/extending_actors.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title">
<a name="phoenix.advanced.transformations"></a><a class="link" href="transformations.html" title="Transformations">Transformations</a>
@@ -28,7 +28,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="extending/extending_actors.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../notes.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="extending/extending_actors.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,41 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Advanced Topics</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="prev" href="starter_kit/more.html" title="More">
+<link rel="next" href="advanced_topics/porting_from_phoenix_2_0.html" title="Porting from Phoenix 2.0">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="starter_kit/more.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="advanced_topics/porting_from_phoenix_2_0.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="phoenix.advanced_topics"></a><a class="link" href="advanced_topics.html" title="Advanced Topics">Advanced Topics</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="advanced_topics/porting_from_phoenix_2_0.html">Porting
+ from Phoenix 2.0</a></span></dt>
+<dt><span class="section">Extending Actors</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="starter_kit/more.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="advanced_topics/porting_from_phoenix_2_0.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics/extending_actors.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics/extending_actors.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,305 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Extending Actors</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../advanced_topics.html" title="Advanced Topics">
+<link rel="prev" href="porting_from_phoenix_2_0.html" title="Porting from Phoenix 2.0">
+<link rel="next" href="../reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="porting_from_phoenix_2_0.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced_topics.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="phoenix.advanced_topics.extending_actors"></a><a class="link" href="extending_actors.html" title="Extending Actors">Extending Actors</a>
+</h3></div></div></div>
+<p>
+ <a class="link" href="../../">Actors</a> are one of
+ the main parts of the library, and one of the many customization points.
+ The default actor implementation provides several perator() overloads which
+ deal with the evaluation of expressions.
+ </p>
+<p>
+ For some uses cases this might not be enough. For convenience it is thinkable
+ to provide custom member functions which generate new expressions. An example
+ is the <a class="link" href="../reference/modules/statement/if__statement.html" title="if_ Statement">if_
+ Statement</a> which provides an additional else member. With this the
+ actual phoenix expression becomes more expressive.
+ </p>
+<p>
+ Another szenario is to give actors the semantics of a certain well known
+ interface or concept. This tutorial like section will provide information
+ on how to implement a custom actor which is usable as if it where a STL Container.
+ </p>
+<a name="phoenix.advanced_topics.extending_actors.requirements"></a><h5>
+<a name="id833448"></a>
+ <a class="link" href="extending_actors.html#phoenix.advanced_topics.extending_actors.requirements">Requirements</a>
+ </h5>
+<p>
+ Let's repeat what we want to have:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing to the first element in the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing one past the last element in the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the size of the container, that is, its number of elements.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">max_size</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the largest size that this container can ever have.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">empty</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to a.size() == 0. (But possibly faster.)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span><span class="special">.</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to swap(a,b)
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Additionally, we want all the operator() overloads of the regular actor.
+ </p>
+<a name="phoenix.advanced_topics.extending_actors.the__code__phrase_role__identifier__container_actor__phrase___code_"></a><h5>
+<a name="id833737"></a>
+ <a class="link" href="extending_actors.html#phoenix.advanced_topics.extending_actors.the__code__phrase_role__identifier__container_actor__phrase___code_">The
+ <code class="computeroutput"><span class="identifier">container_actor</span></code></a>
+ </h5>
+<p>
+ The first version of our <code class="computeroutput"><span class="identifier">container_actor</span></code>
+ interface to show the general principle. This will be continually be extended.
+ For the sake of simplicity, every member function generator will return
+ <a class="link" href="../reference/modules/core/nothing.html" title="Nothing"><code class="computeroutput"><span class="identifier">nothing</span></code></a>
+ at first.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Expr</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">container_actor</span>
+ <span class="special">:</span> <span class="identifier">actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></span>
+<span class="special">{</span>
+ <span class="identifier">compose</span><span class="special"><</span><span class="identifier">null_actor</span><span class="special">>::</span><span class="identifier">result_type</span> <span class="keyword">const</span> <span class="identifier">begin</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">nothing</span><span class="special">;</span> <span class="special">}</span>
+ <span class="identifier">compose</span><span class="special"><</span><span class="identifier">null_actor</span><span class="special">>::</span><span class="identifier">result_type</span> <span class="keyword">const</span> <span class="identifier">end</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">nothing</span><span class="special">;</span> <span class="special">}</span>
+ <span class="identifier">compose</span><span class="special"><</span><span class="identifier">null_actor</span><span class="special">>::</span><span class="identifier">result_type</span> <span class="keyword">const</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">nothing</span><span class="special">;</span> <span class="special">}</span>
+ <span class="identifier">compose</span><span class="special"><</span><span class="identifier">null_actor</span><span class="special">>::</span><span class="identifier">result_type</span> <span class="keyword">const</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">nothing</span><span class="special">;</span> <span class="special">}</span>
+ <span class="identifier">compose</span><span class="special"><</span><span class="identifier">null_actor</span><span class="special">>::</span><span class="identifier">result_type</span> <span class="keyword">const</span> <span class="identifier">empty</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">nothing</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="comment">// note that swap is the only function needing another container.
+</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">OtherExpr</span><span class="special">></span>
+ <span class="identifier">compose</span><span class="special"><</span><span class="identifier">null_actor</span><span class="special">>::</span><span class="identifier">result_type</span> <span class="keyword">const</span> <span class="identifier">swap</span><span class="special">(</span> <span class="identifier">actor</span><span class="special"><</span><span class="identifier">OtherExpr</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">nothing</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<a name="phoenix.advanced_topics.extending_actors.using_the_new_actor"></a><h5>
+<a name="id834287"></a>
+ <a class="link" href="extending_actors.html#phoenix.advanced_topics.extending_actors.using_the_new_actor">Using
+ the new actor</a>
+ </h5>
+<p>
+ Although the member function do nothing right now, we want to test if we
+ can use our new actor.
+ </p>
+<p>
+ First, lets create a generator which wraps the <code class="computeroutput"><span class="identifier">container_actor</span></code>
+ around any other expression:
+ </p>
+<pre class="programlisting"> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Expr</span><span class="special">></span>
+<span class="identifier">container_actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></span> <span class="keyword">const</span>
+<span class="identifier">container</span><span class="special">(</span> <span class="identifier">Expr</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">expr</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">container_actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></span> <span class="keyword">const</span> <span class="identifier">e</span> <span class="special">=</span> <span class="special">{{</span><span class="identifier">expr</span><span class="special">}};</span>
+
+ <span class="keyword">return</span> <span class="identifier">e</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Now lets test this:
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+
+<span class="special">(</span><span class="identifier">container</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">).</span><span class="identifier">begin</span><span class="special">())(</span><span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+ Granted, this is not really elegant and not really practical (we coud have
+ just used phoenix::begin(v) from the <a class="link" href="../reference/modules/stl/algorithm.html" title="Algorithm">Phoenix
+ Algorithm Module</a>, but we can do better.
+ </p>
+<p>
+ Let's have a <a class="link" href="../reference/modules/core/arguments.html" title="Arguments">Argument
+ placeholder</a> which is usable as if it was a STL container:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">make_container_argument</span> <span class="special">:</span> <span class="identifier">compose_ex</span><span class="special"><</span><span class="identifier">argument</span><span class="special">,</span> <span class="identifier">container_actor</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span> <span class="special">{};</span>
+
+<span class="identifier">make_container_argument</span><span class="special"><</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special"><</span><span class="number">0</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span> <span class="keyword">const</span> <span class="identifier">con1</span> <span class="special">=</span> <span class="special">{};</span>
+<span class="comment">// and so on ...
+</span></pre>
+<p>
+ The above code now changes to:
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+
+<span class="special">(</span><span class="identifier">con1</span><span class="special">.</span><span class="identifier">size</span><span class="special">())(</span><span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+ Wow, that was easy!
+ </p>
+<a name="phoenix.advanced_topics.extending_actors.adding_live_to_our_actor"></a><h5>
+<a name="id835012"></a>
+ <a class="link" href="extending_actors.html#phoenix.advanced_topics.extending_actors.adding_live_to_our_actor">Adding
+ live to our actor</a>
+ </h5>
+<p>
+ This one will be actually even easier.
+ </p>
+<p>
+ First, we define a <a class="link" href="../../">Lazy
+ function</a> which evaluates the expression we want to implement. Following
+ is the implementation of the size function:
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">size_impl</span>
+<span class="special">{</span>
+ <span class="comment">// result_of protocol:
+</span> <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sig</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">result</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">This</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">result</span><span class="special"><</span><span class="identifier">This</span><span class="special">(</span><span class="identifier">Container</span><span class="special">)></span>
+ <span class="special">{</span>
+ <span class="comment">// Note, remove reference here, because Container can be anything
+</span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">remove_reference</span><span class="special"><</span><span class="identifier">Container</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">container_type</span><span class="special">;</span>
+
+ <span class="comment">// The result will be size_type
+</span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">container_type</span><span class="special">::</span><span class="identifier">size_type</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result</span><span class="special"><</span><span class="identifier">size_impl</span><span class="special">(</span><span class="identifier">Container</span> <span class="keyword">const</span><span class="special">&)>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Container</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">container</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">container</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Good, this was the first part. The second part will be, to implement the
+ size member function of <code class="computeroutput"><span class="identifier">container_actor</span></code>:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Expr</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">container_actor</span>
+ <span class="special">:</span> <span class="identifier">actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></span>
+<span class="special">{</span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">function</span><span class="special"><</span><span class="identifier">size_impl</span><span class="special">,</span> <span class="identifier">container_actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span> <span class="keyword">const</span>
+ <span class="identifier">size</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="identifier">function</span><span class="special"><</span><span class="identifier">size_impl</span><span class="special">></span> <span class="keyword">const</span> <span class="identifier">f</span> <span class="special">=</span> <span class="identifier">size_impl</span><span class="special">();</span>
+ <span class="keyword">return</span> <span class="identifier">f</span><span class="special">(*</span><span class="keyword">this</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="comment">// the rest ...
+</span><span class="special">};</span>
+</pre>
+<p>
+ It is left as exercise to the user to implement the missing parts by resuing
+ functions from the <a class="link" href="../reference/modules/stl/algorithm.html" title="Algorithm">Phoenix
+ Algorithm Module</a> (The impatient take a look here: container_actor.cpp).
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="porting_from_phoenix_2_0.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced_topics.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics/porting_from_phoenix_2_0.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/advanced_topics/porting_from_phoenix_2_0.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,200 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Porting from Phoenix 2.0</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../advanced_topics.html" title="Advanced Topics">
+<link rel="prev" href="../advanced_topics.html" title="Advanced Topics">
+<link rel="next" href="extending_actors.html" title="Extending Actors">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../advanced_topics.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced_topics.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="extending_actors.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="phoenix.advanced_topics.porting_from_phoenix_2_0"></a><a class="link" href="porting_from_phoenix_2_0.html" title="Porting from Phoenix 2.0">Porting
+ from Phoenix 2.0</a>
+</h3></div></div></div>
+<p>
+ While reading the current documentation you might have noticed that the
+ <a class="link" href="../starter_kit.html" title="Starter Kit">Starter Kit</a> didn't change very
+ much. This is because a lot of effort was put into being compatible with
+ Phoenix 2.0, at least on the outside.
+ </p>
+<p>
+ That being said, the only major difference is the result type deduction protocol.
+ The everyday Phoenix-User will encounter this change only when writing <a class="link" href="../reference/modules/function.html" title="Function">Functions</a>.
+ </p>
+<p>
+ To make your function implementations Phoenix compliant again change from
+ the old Phoenix result type deduction protocol to the new (standard compliant)
+ result type deduction protocol:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Phoenix 2.0
+ </p>
+ </th>
+<th>
+ <p>
+ Phoenix 3.0
+ </p>
+ </th>
+<th>
+ <p>
+ Notes
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">is_odd_impl</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Arg</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">result</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Arg</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Arg</span> <span class="identifier">arg</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">arg</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</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">is_odd_impl</span><span class="special">></span> <span class="identifier">is_odd</span> <span class="special">=</span> <span class="identifier">is_odd_impl</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">is_odd_impl</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Arg</span><span class="special">></span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Arg</span> <span class="identifier">arg</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">arg</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">}</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">is_odd_impl</span><span class="special">></span> <span class="identifier">is_odd</span> <span class="special">=</span> <span class="identifier">is_odd_impl</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../images/note.png" alt="note"></span> The result_of protocol is particulary easy
+ when you implement a monomorphic function (return type not dependant
+ on the arguments). You then just need a single nested return_type
+ typedef.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">add_impl</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Arg1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Arg2</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">result</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Arg1</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Arg1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Arg2</span><span class="special">></span>
+ <span class="identifier">Arg1</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Arg1</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">Arg2</span> <span class="identifier">arg2</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">arg1</span> <span class="special">+</span> <span class="identifier">arg2</span><span class="special">;</span>
+ <span class="special">}</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">add_impl</span><span class="special">></span> <span class="identifier">add</span> <span class="special">=</span> <span class="identifier">add_impl</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">add_impl</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Sig</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">result</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">This</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Arg1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Arg2</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">result</span><span class="special"><</span><span class="identifier">This</span><span class="special">(</span><span class="identifier">Arg1</span><span class="special">,</span> <span class="identifier">Arg2</span><span class="special">)></span>
+ <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">remove_reference</span><span class="special"><</span><span class="identifier">Arg1</span><span class="special">></span> <span class="special">{};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Arg1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Arg2</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">remove_reference</span><span class="special"><</span><span class="identifier">Arg1</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Arg1</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">Arg2</span> <span class="identifier">arg2</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">arg1</span> <span class="special">+</span> <span class="identifier">arg2</span><span class="special">;</span>
+ <span class="special">}</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">add_impl</span><span class="special">></span> <span class="identifier">add</span> <span class="special">=</span> <span class="identifier">add_impl</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../images/alert.png" alt="alert"></span> When dealing with polymorphic functions the
+ template arguments can be any type including cv-qualifiers and
+ references. For that reason, the calculated result type need to
+ remove the reference whenever appropriate!
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<div class="sidebar">
+<p class="title"><b></b></p>
+<p>
+ <span class="inlinemediaobject"><img src="../../images/tip.png" alt="tip"></span> There is no general guideline for porting code which
+ relies on the internals of Phoenix 2.0. If you plan on porting your Phoenix
+ 2.0 extensions please refer to the next sections.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../advanced_topics.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced_topics.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="extending_actors.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -6,14 +6,14 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../index.html" title="Chapter 1. Phoenix 3.0">
-<link rel="prev" href="starter_kit/more.html" title="More">
+<link rel="prev" href="advanced_topics/extending_actors.html" title="Extending Actors">
<link rel="next" href="reference/basics.html" title="Basics">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="starter_kit/more.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/basics.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="advanced_topics/extending_actors.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/basics.html"><img src="../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -24,10 +24,10 @@
<dt><span class="section">Organization</span></dt>
<dt><span class="section">Concepts</span></dt>
<dd><dl>
-<dt><span class="section">Environment</span></dt>
<dt><span class="section">Actor</span></dt>
-<dt><span class="section">EvaluationPolicy</span></dt>
<dt><span class="section">Evaluator</span></dt>
+<dt><span class="section">EvaluationPolicy</span></dt>
+<dt><span class="section">Environment</span></dt>
</dl></dd>
<dt><span class="section">Modules</span></dt>
<dd><dl>
@@ -103,7 +103,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="starter_kit/more.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/basics.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="advanced_topics/extending_actors.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/basics.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/basics.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/basics.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/basics.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -42,7 +42,7 @@
</p></td></tr>
</table></div>
<a name="phoenix.reference.basics.partial_function_application"></a><h3>
-<a name="id715913"></a>
+<a name="id835896"></a>
<a class="link" href="basics.html#phoenix.reference.basics.partial_function_application">Partial
Function Application</a>
</h3>
@@ -98,7 +98,7 @@
be black boxes anymore.
</p>
<a name="phoenix.reference.basics.stl_and_higher_order_functions"></a><h3>
-<a name="id716129"></a>
+<a name="id836112"></a>
<a class="link" href="basics.html#phoenix.reference.basics.stl_and_higher_order_functions">STL
and higher order functions</a>
</h3>
@@ -129,7 +129,7 @@
</p></td></tr>
</table></div>
<a name="phoenix.reference.basics.lazy_evaluation"></a><h3>
-<a name="id716333"></a>
+<a name="id836316"></a>
<a class="link" href="basics.html#phoenix.reference.basics.lazy_evaluation">Lazy Evaluation</a>
</h3>
<p>
@@ -137,11 +137,11 @@
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
- Partial application
- </li>
+ Partial application
+ </li>
<li class="listitem">
- Final evaluation
- </li>
+ Final evaluation
+ </li>
</ol></div>
<p>
The first stage is handled by a set of generator functions. These are your
@@ -184,7 +184,7 @@
</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="special">(</span><span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">)(</span><span class="identifier">y</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// prints 0 or false
</span></pre>
<a name="phoenix.reference.basics.forwarding_function_problem"></a><h3>
-<a name="id716910"></a>
+<a name="id836826"></a>
<a class="link" href="basics.html#phoenix.reference.basics.forwarding_function_problem">Forwarding
Function Problem</a>
</h3>
@@ -225,7 +225,7 @@
</p></td></tr>
</table></div>
<a name="phoenix.reference.basics.polymorphic_functions"></a><h3>
-<a name="id717048"></a>
+<a name="id836964"></a>
<a class="link" href="basics.html#phoenix.reference.basics.polymorphic_functions">Polymorphic
Functions</a>
</h3>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -7,23 +7,23 @@
<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="organization.html" title="Organization">
-<link rel="next" href="concepts/environment.html" title="Environment">
+<link rel="next" href="concepts/actor.html" title="Actor">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="organization.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/environment.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="organization.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/actor.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="phoenix.reference.concepts"></a><a class="link" href="concepts.html" title="Concepts">Concepts</a>
</h3></div></div></div>
<div class="toc"><dl>
-<dt><span class="section">Environment</span></dt>
<dt><span class="section">Actor</span></dt>
-<dt><span class="section">EvaluationPolicy</span></dt>
<dt><span class="section">Evaluator</span></dt>
+<dt><span class="section">EvaluationPolicy</span></dt>
+<dt><span class="section">Environment</span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -36,7 +36,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="organization.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/environment.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="organization.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/actor.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/actor.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/actor.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/actor.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -6,21 +6,21 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../concepts.html" title="Concepts">
-<link rel="prev" href="environment.html" title="Environment">
-<link rel="next" href="evaluationpolicy.html" title="EvaluationPolicy">
+<link rel="prev" href="../concepts.html" title="Concepts">
+<link rel="next" href="evaluator.html" title="Evaluator">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="environment.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="evaluationpolicy.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../concepts.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="evaluator.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="phoenix.reference.concepts.actor"></a><a class="link" href="actor.html" title="Actor">Actor</a>
</h4></div></div></div>
<a name="phoenix.reference.concepts.actor.description"></a><h6>
-<a name="id719126"></a>
+<a name="id838333"></a>
<a class="link" href="actor.html#phoenix.reference.concepts.actor.description">Description</a>
</h6>
<p>
@@ -74,7 +74,7 @@
</dl>
</div>
<a name="phoenix.reference.concepts.actor.valid_expressions"></a><h6>
-<a name="id719337"></a>
+<a name="id838544"></a>
<a class="link" href="actor.html#phoenix.reference.concepts.actor.valid_expressions">Valid
Expressions</a>
</h6>
@@ -97,7 +97,7 @@
</th>
<th>
<p>
- Runtime Complexity
+ Run time Complexity
</p>
</th>
</tr></thead>
@@ -156,7 +156,7 @@
</tbody>
</table></div>
<a name="phoenix.reference.concepts.actor.result_type_expressions"></a><h6>
-<a name="id719462"></a>
+<a name="id838675"></a>
<a class="link" href="actor.html#phoenix.reference.concepts.actor.result_type_expressions">Result
Type Expressions</a>
</h6>
@@ -179,7 +179,7 @@
</th>
<th>
<p>
- Compiletime Complexity
+ Compile time Complexity
</p>
</th>
</tr></thead>
@@ -238,7 +238,7 @@
</tbody>
</table></div>
<a name="phoenix.reference.concepts.actor.expression_semantics"></a><h6>
-<a name="id719586"></a>
+<a name="id838808"></a>
<a class="link" href="actor.html#phoenix.reference.concepts.actor.expression_semantics">Expression
Semantics</a>
</h6>
@@ -281,7 +281,7 @@
<td>
<p>
Returns the <code class="computeroutput"><span class="identifier">N</span><span class="special">::</span><span class="identifier">value</span></code>-th
- element of an compounf expression
+ element of an compound expression
</p>
</td>
</tr>
@@ -301,13 +301,19 @@
</tbody>
</table></div>
<a name="phoenix.reference.concepts.actor.models"></a><h6>
-<a name="id719715"></a>
+<a name="id838950"></a>
<a class="link" href="actor.html#phoenix.reference.concepts.actor.models">Models</a>
</h6>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem"><a class="link" href="../../../"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">actor</span></code></a></li>
-<li class="listitem"><a class="link" href="../../../"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">if_</span></code></a></li>
-<li class="listitem"><a class="link" href="../../../"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">try_</span></code></a></li>
+<li class="listitem">
+ <a class="link" href="../../../"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">actor</span></code></a>
+ </li>
+<li class="listitem">
+ <a class="link" href="../modules/statement/if__statement.html" title="if_ Statement"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">if_</span></code></a>
+ </li>
+<li class="listitem">
+ <a class="link" href="../modules/statement/try__catch__statement.html" title="try_ catch_ Statement"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">try_</span></code></a>
+ </li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -320,7 +326,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="environment.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="evaluationpolicy.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../concepts.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="evaluator.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/environment.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/environment.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/environment.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -6,25 +6,25 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../concepts.html" title="Concepts">
-<link rel="prev" href="../concepts.html" title="Concepts">
-<link rel="next" href="actor.html" title="Actor">
+<link rel="prev" href="evaluationpolicy.html" title="EvaluationPolicy">
+<link rel="next" href="../modules.html" title="Modules">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../concepts.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="actor.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="evaluationpolicy.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../modules.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="phoenix.reference.concepts.environment"></a><a class="link" href="environment.html" title="Environment">Environment</a>
</h4></div></div></div>
<a name="phoenix.reference.concepts.environment.description"></a><h6>
-<a name="id718414"></a>
+<a name="id840267"></a>
<a class="link" href="environment.html#phoenix.reference.concepts.environment.description">Description</a>
</h6>
<p>
- On an actor function call, bafore evaluating the actors expression, the
+ On an actor function call, before evaluating the actors expression, the
actor creates an environment. Basically, the environment packages the arguments
in a tuple.
</p>
@@ -51,7 +51,7 @@
</dl>
</div>
<a name="phoenix.reference.concepts.environment.valid_expressions"></a><h6>
-<a name="id718524"></a>
+<a name="id840388"></a>
<a class="link" href="environment.html#phoenix.reference.concepts.environment.valid_expressions">Valid
Expressions</a>
</h6>
@@ -116,7 +116,7 @@
</tbody>
</table></div>
<a name="phoenix.reference.concepts.environment.result_type_expressions"></a><h6>
-<a name="id718683"></a>
+<a name="id840561"></a>
<a class="link" href="environment.html#phoenix.reference.concepts.environment.result_type_expressions">Result
Type Expressions</a>
</h6>
@@ -182,7 +182,7 @@
</tbody>
</table></div>
<a name="phoenix.reference.concepts.environment.expression_semantics"></a><h6>
-<a name="id718870"></a>
+<a name="id840765"></a>
<a class="link" href="environment.html#phoenix.reference.concepts.environment.expression_semantics">Expression
Semantics</a>
</h6>
@@ -233,12 +233,16 @@
</tbody>
</table></div>
<a name="phoenix.reference.concepts.environment.models"></a><h6>
-<a name="id719035"></a>
+<a name="id840950"></a>
<a class="link" href="environment.html#phoenix.reference.concepts.environment.models">Models</a>
</h6>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem"><a class="link" href="../../../"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">basic_environment</span></code></a></li>
-<li class="listitem"><a class="link" href="../../../"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">scoped_environment</span></code></a></li>
+<li class="listitem">
+ <a class="link" href="../../../"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">basic_environment</span></code></a>
+ </li>
+<li class="listitem">
+ <a class="link" href="../../../"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">scoped_environment</span></code></a>
+ </li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -251,7 +255,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../concepts.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="actor.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="evaluationpolicy.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../modules.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/evaluationpolicy.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/evaluationpolicy.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/evaluationpolicy.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -6,21 +6,21 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../concepts.html" title="Concepts">
-<link rel="prev" href="actor.html" title="Actor">
-<link rel="next" href="evaluator.html" title="Evaluator">
+<link rel="prev" href="evaluator.html" title="Evaluator">
+<link rel="next" href="environment.html" title="Environment">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="actor.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="evaluator.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="evaluator.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="environment.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="phoenix.reference.concepts.evaluationpolicy"></a><a class="link" href="evaluationpolicy.html" title="EvaluationPolicy">EvaluationPolicy</a>
</h4></div></div></div>
<a name="phoenix.reference.concepts.evaluationpolicy.description"></a><h6>
-<a name="id719838"></a>
+<a name="id839654"></a>
<a class="link" href="evaluationpolicy.html#phoenix.reference.concepts.evaluationpolicy.description">Description</a>
</h6>
<p>
@@ -57,7 +57,7 @@
</dl>
</div>
<a name="phoenix.reference.concepts.evaluationpolicy.valid_expressions"></a><h6>
-<a name="id720002"></a>
+<a name="id839835"></a>
<a class="link" href="evaluationpolicy.html#phoenix.reference.concepts.evaluationpolicy.valid_expressions">Valid
Expressions</a>
</h6>
@@ -80,7 +80,7 @@
</th>
<th>
<p>
- Runtime Complexity
+ Run time Complexity
</p>
</th>
</tr></thead>
@@ -104,7 +104,7 @@
</tr></tbody>
</table></div>
<a name="phoenix.reference.concepts.evaluationpolicy.result_type_expressions"></a><h6>
-<a name="id720120"></a>
+<a name="id839962"></a>
<a class="link" href="evaluationpolicy.html#phoenix.reference.concepts.evaluationpolicy.result_type_expressions">Result
Type Expressions</a>
</h6>
@@ -127,7 +127,7 @@
</th>
<th>
<p>
- Compiletime Complexity
+ Compile time Complexity
</p>
</th>
</tr></thead>
@@ -151,7 +151,7 @@
</tr></tbody>
</table></div>
<a name="phoenix.reference.concepts.evaluationpolicy.expression_semantics"></a><h6>
-<a name="id720263"></a>
+<a name="id840116"></a>
<a class="link" href="evaluationpolicy.html#phoenix.reference.concepts.evaluationpolicy.expression_semantics">Expression
Semantics</a>
</h6>
@@ -181,13 +181,13 @@
</td>
<td>
<p>
- Evalutes the Composite with the given attached data
+ Evaluates the Composite with the given attached data
</p>
</td>
</tr></tbody>
</table></div>
<a name="phoenix.reference.concepts.evaluationpolicy.models"></a><h6>
-<a name="id720367"></a>
+<a name="id840229"></a>
<a class="link" href="evaluationpolicy.html#phoenix.reference.concepts.evaluationpolicy.models">Models</a>
</h6>
<p>
@@ -204,7 +204,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="actor.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="evaluator.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="evaluator.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="environment.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/evaluator.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/evaluator.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/evaluator.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -6,21 +6,21 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../concepts.html" title="Concepts">
-<link rel="prev" href="evaluationpolicy.html" title="EvaluationPolicy">
-<link rel="next" href="../modules.html" title="Modules">
+<link rel="prev" href="actor.html" title="Actor">
+<link rel="next" href="evaluationpolicy.html" title="EvaluationPolicy">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="evaluationpolicy.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../modules.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="actor.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="evaluationpolicy.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="phoenix.reference.concepts.evaluator"></a><a class="link" href="evaluator.html" title="Evaluator">Evaluator</a>
</h4></div></div></div>
<a name="phoenix.reference.concepts.evaluator.description"></a><h6>
-<a name="id720396"></a>
+<a name="id839109"></a>
<a class="link" href="evaluator.html#phoenix.reference.concepts.evaluator.description">Description</a>
</h6>
<p>
@@ -28,14 +28,14 @@
are responsible of evaluating the composed expressions.
</p>
<p>
- Various evaluators are thinkable, the main evaluator will be refered to
+ Various evaluators are thinkable, the main evaluator will be referred to
as the default evaluator. It is implemented in terms of the Boost.Proto
- default context and the various __phoenix_concpets_evaluation<span class="underline">policies</span>_.
+ default context and the various __phoenix_concepts_evaluation<span class="underline">policies</span>_.
</p>
<div class="variablelist">
<p class="title"><b>Notation</b></p>
<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Actor</span></code></span></dt>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Eval</span></code></span></dt>
<dd><p>
Type fulfilling this concept
</p></dd>
@@ -51,10 +51,18 @@
<dd><p>
Object of type Expr
</p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Env</span></code></span></dt>
+<dd><p>
+ Type fulfilling the Environment concept
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">env</span></code></span></dt>
+<dd><p>
+ Object of type Env
+ </p></dd>
</dl>
</div>
<a name="phoenix.reference.concepts.evaluator.valid_expressions"></a><h6>
-<a name="id720509"></a>
+<a name="id839279"></a>
<a class="link" href="evaluator.html#phoenix.reference.concepts.evaluator.valid_expressions">Valid
Expressions</a>
</h6>
@@ -77,7 +85,7 @@
</th>
<th>
<p>
- Runtime Complexity
+ Run time Complexity
</p>
</th>
</tr></thead>
@@ -101,7 +109,7 @@
</tr></tbody>
</table></div>
<a name="phoenix.reference.concepts.evaluator.result_type_expressions"></a><h6>
-<a name="id720618"></a>
+<a name="id839396"></a>
<a class="link" href="evaluator.html#phoenix.reference.concepts.evaluator.result_type_expressions">Result
Type Expressions</a>
</h6>
@@ -124,7 +132,7 @@
</th>
<th>
<p>
- Compiletime Complexity
+ Compile time Complexity
</p>
</th>
</tr></thead>
@@ -147,7 +155,7 @@
</tr></tbody>
</table></div>
<a name="phoenix.reference.concepts.evaluator.expression_semantics"></a><h6>
-<a name="id720699"></a>
+<a name="id839482"></a>
<a class="link" href="evaluator.html#phoenix.reference.concepts.evaluator.expression_semantics">Expression
Semantics</a>
</h6>
@@ -183,22 +191,22 @@
</tr></tbody>
</table></div>
<a name="phoenix.reference.concepts.evaluator.models"></a><h6>
-<a name="id720796"></a>
+<a name="id839588"></a>
<a class="link" href="evaluator.html#phoenix.reference.concepts.evaluator.models">Models</a>
</h6>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
- eval_grammar
- </li>
+ eval_grammar
+ </li>
<li class="listitem">
- arity
- </li>
+ arity
+ </li>
<li class="listitem">
- no_nullary
- </li>
+ no_nullary
+ </li>
<li class="listitem">
- switch_grammar
- </li>
+ switch_grammar
+ </li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -211,7 +219,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="evaluationpolicy.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../modules.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="actor.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="evaluationpolicy.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/expression.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/expression.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,135 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Expression</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="../concepts.html" title="Concepts">
+<link rel="next" href="actor.html" title="Actor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../concepts.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="actor.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="phoenix.reference.concepts.expression"></a><a class="link" href="expression.html" title="Expression">Expression</a>
+</h4></div></div></div>
+<a name="phoenix.reference.concepts.expression.description"></a><h6>
+<a name="id767532"></a>
+ <a class="link" href="expression.html#phoenix.reference.concepts.expression.description">Description</a>
+ </h6>
+<p>
+ An expression is considered the most general concept behind phoenix.
+ </p>
+<p>
+ All in all, everything can be an expression
+ </p>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl></dl>
+</div>
+<a name="phoenix.reference.concepts.expression.valid_expressions"></a><h6>
+<a name="id767561"></a>
+ <a class="link" href="expression.html#phoenix.reference.concepts.expression.valid_expressions">Valid
+ Expressions</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td>
+ <p>
+ Expression
+ </p>
+ </td>
+<td>
+ <p>
+ Return Type
+ </p>
+ </td>
+<td>
+ <p>
+ Run time Complexity
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="phoenix.reference.concepts.expression.result_type_expressions"></a><h6>
+<a name="id767612"></a>
+ <a class="link" href="expression.html#phoenix.reference.concepts.expression.result_type_expressions">Result
+ Type Expressions</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td>
+ <p>
+ Expression
+ </p>
+ </td>
+<td>
+ <p>
+ Result Type
+ </p>
+ </td>
+<td>
+ <p>
+ Compile time Complexity
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="phoenix.reference.concepts.expression.expression_semantics"></a><h6>
+<a name="id767667"></a>
+ <a class="link" href="expression.html#phoenix.reference.concepts.expression.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td>
+ <p>
+ Expression
+ </p>
+ </td>
+<td>
+ <p>
+ Semantics
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<a name="phoenix.reference.concepts.expression.models"></a><h6>
+<a name="id767712"></a>
+ <a class="link" href="expression.html#phoenix.reference.concepts.expression.models">Models</a>
+ </h6>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../concepts.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="actor.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/primitive.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/concepts/primitive.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Primitive</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="actor.html" title="Actor">
+<link rel="next" href="composite.html" title="Composite">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="actor.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="composite.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section"><div class="titlepage"><div><div><h4 class="title">
+<a name="phoenix.reference.concepts.primitive"></a><a class="link" href="primitive.html" title="Primitive">Primitive</a>
+</h4></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="actor.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="composite.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -6,14 +6,14 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="concepts/evaluator.html" title="Evaluator">
+<link rel="prev" href="concepts/environment.html" title="Environment">
<link rel="next" href="modules/core.html" title="Core">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="concepts/evaluator.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="modules/core.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="concepts/environment.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="modules/core.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@@ -91,7 +91,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="concepts/evaluator.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="modules/core.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="concepts/environment.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="modules/core.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/bind.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/bind.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/bind.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -46,7 +46,7 @@
<tr><td align="left" valign="top"><p>
Take note that binders are monomorphic. Rather than binding functions,
the preferred way is to write true generic and polymorphic <a class="link" href="function.html" title="Function">lazy-functions</a>.
- However, since most of the time we are dealing with adaptation of exisiting
+ However, since most of the time we are dealing with adaptation of existing
code, binders get the job done faster.
</p></td></tr>
</table></div>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/bind/compatibility_with_other_bind_libraries.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/bind/compatibility_with_other_bind_libraries.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/bind/compatibility_with_other_bind_libraries.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -22,7 +22,7 @@
</h5></div></div></div>
<p>
<code class="computeroutput"><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">bind</span></code> passes all testcases of the Boost.Bind
- library. It is therefore completely compatible and interchangable.
+ library. It is therefore completely compatible and interchangeable.
</p>
<p>
Note that at the current state of the library, you can not mix phoenix
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/arguments.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/arguments.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/arguments.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -31,7 +31,7 @@
as an imaginary data-bin where a function argument will be placed.
</p>
<a name="phoenix.reference.modules.core.arguments.predefined_arguments"></a><h3>
-<a name="id722131"></a>
+<a name="id842482"></a>
<a class="link" href="arguments.html#phoenix.reference.modules.core.arguments.predefined_arguments">Predefined
Arguments</a>
</h3>
@@ -71,7 +71,7 @@
<code class="computeroutput"><span class="identifier">compose</span></code> class:
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
-<span class="keyword">struct</span> <span class="identifier">make_arguemnt</span> <span class="special">:</span> <span class="identifier">compose</span><span class="special"><</span><span class="identifier">argument</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span> <span class="special">{};</span>
+<span class="keyword">struct</span> <span class="identifier">make_argument</span> <span class="special">:</span> <span class="identifier">compose</span><span class="special"><</span><span class="identifier">argument</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span> <span class="special">{};</span>
</pre>
<p>
This scheme of actor creation is used throughout the library and follows
@@ -79,7 +79,7 @@
for more details.
</p>
<a name="phoenix.reference.modules.core.arguments.user_defined_arguments"></a><h3>
-<a name="id722908"></a>
+<a name="id843259"></a>
<a class="link" href="arguments.html#phoenix.reference.modules.core.arguments.user_defined_arguments">User
Defined Arguments</a>
</h3>
@@ -107,19 +107,19 @@
</tr>
<tr><td align="left" valign="top">
<p>
- When dealing with argument placeholders the question arises wether
+ When dealing with argument placeholders the question arises whether
you can call member functions on an <code class="computeroutput"><span class="identifier">argument</span></code>
actor.
</p>
<p>
- This is possible by supplying a costum <code class="computeroutput"><span class="identifier">actor</span></code>
+ This is possible by supplying a custom <code class="computeroutput"><span class="identifier">actor</span></code>
which has a member generator function. See <a class="link" href="../../../../">Extending
Actors</a> for more details.
</p>
</td></tr>
</table></div>
<a name="phoenix.reference.modules.core.arguments.evaluating_an_argument"></a><h3>
-<a name="id723134"></a>
+<a name="id843485"></a>
<a class="link" href="arguments.html#phoenix.reference.modules.core.arguments.evaluating_an_argument">Evaluating
an Argument</a>
</h3>
@@ -146,7 +146,7 @@
<span class="identifier">Hello</span> <span class="identifier">World</span>
</pre>
<a name="phoenix.reference.modules.core.arguments.extra_arguments"></a><h3>
-<a name="id723463"></a>
+<a name="id843814"></a>
<a class="link" href="arguments.html#phoenix.reference.modules.core.arguments.extra_arguments">Extra
Arguments</a>
</h3>
@@ -187,7 +187,7 @@
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
- There are a few reasons why enforcing strict arity is not desireable.
+ There are a few reasons why enforcing strict arity is not desirable.
A case in point is the callback function. Typical callback functions
provide more information than is actually needed. Lambda functions
are often used as callbacks.
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/references.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/references.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/references.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -55,7 +55,7 @@
<pre class="programlisting"><span class="identifier">add_assign</span><span class="special">(</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">i</span><span class="special">),</span> <span class="number">2</span><span class="special">)</span>
</pre>
<a name="phoenix.reference.modules.core.references.evaluating_a_reference"></a><h3>
-<a name="id721619"></a>
+<a name="id841954"></a>
<a class="link" href="references.html#phoenix.reference.modules.core.references.evaluating_a_reference">Evaluating
a Reference</a>
</h3>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/values.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/values.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/core/values.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -48,7 +48,7 @@
but, as we'll see later on, there are situations where this is unavoidable.
</p>
<a name="phoenix.reference.modules.core.values.evaluating_a_value"></a><h3>
-<a name="id721160"></a>
+<a name="id841434"></a>
<a class="link" href="values.html#phoenix.reference.modules.core.values.evaluating_a_value">Evaluating
a Value</a>
</h3>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/function.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/function.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/function.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -40,15 +40,14 @@
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
- An <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>
- that takes <code class="computeroutput"><span class="identifier">N</span></code> arguments,
- and implements the function logic.
- </li>
+ An <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>
+ that takes <code class="computeroutput"><span class="identifier">N</span></code> arguments,
+ and implements the function logic.
+ </li>
<li class="listitem">
- A nested metafunction <code class="computeroutput"><span class="identifier">result</span><span class="special"><</span><span class="identifier">Signature</span><span class="special">></span></code> or nested typedef <code class="computeroutput"><span class="identifier">result_type</span></code>,
- following <a href="http://www.boost.org/doc/libs/1_43_0/libs/utility/utility.htm#result_of" target="_top">Boost.Result
- Of</a>
-</li>
+ A nested metafunction <code class="computeroutput"><span class="identifier">result</span><span class="special"><</span><span class="identifier">Signature</span><span class="special">></span></code> or nested typedef <code class="computeroutput"><span class="identifier">result_type</span></code>, following <a href="http://www.boost.org/doc/libs/1_43_0/libs/utility/utility.htm#result_of" target="_top">Boost.Result
+ Of</a>
+ </li>
</ul></div>
<p>
For example, the following type implements the FunctionEval concept, in
@@ -81,7 +80,7 @@
</tr>
<tr><td align="left" valign="top"><p>
The type of Arg is either a const-reference or non-const-reference (depending
- on wether your argument to the actor evaluation is a const-ref or non-const-ref).
+ on whether your argument to the actor evaluation is a const-ref or non-const-ref).
</p></td></tr>
</table></div>
<p>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/object/construction.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/object/construction.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/object/construction.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -30,7 +30,7 @@
<pre class="programlisting"><span class="identifier">construct</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">ctor_arg1</span><span class="special">,</span> <span class="identifier">ctor_arg2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">ctor_argN</span><span class="special">);</span>
</pre>
<p>
- where the given parameters are the parameters to the contructor of the
+ where the given parameters are the parameters to the constructor of the
object of type T (This implies, that type T is expected to have a constructor
with a corresponding set of parameter types.).
</p>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/object/new.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/object/new.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/object/new.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -30,7 +30,7 @@
<pre class="programlisting"><span class="identifier">new_</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">ctor_arg1</span><span class="special">,</span> <span class="identifier">ctor_arg2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">ctor_argN</span><span class="special">);</span>
</pre>
<p>
- where the given parameters are the parameters to the contructor of the
+ where the given parameters are the parameters to the contractor of the
object of type T (This implies, that type T is expected to have a constructor
with a corresponding set of parameter types.).
</p>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/operator.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/operator.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/operator.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -71,21 +71,22 @@
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
- A binary operator, except <code class="computeroutput"><span class="special">->*</span></code>
- will be lazily evaluated when <span class="emphasis"><em>at least</em></span> one of its
- operands is an actor object (see <a class="link" href="../../../">actors</a>).
- </li>
-<li class="listitem">
- Unary operators are lazily evaluted if their argument is an actor object.
- </li>
-<li class="listitem">
- Operator <code class="computeroutput"><span class="special">->*</span></code> is lazily
- evaluted if the left hand argument is an actor object.
- </li>
-<li class="listitem">
- The result of a lazy operator is an actor object that can in turn allow
- the applications of rules 1, 2 and 3.
- </li>
+ A binary operator, except <code class="computeroutput"><span class="special">->*</span></code>
+ will be lazily evaluated when <span class="emphasis"><em>at least</em></span> one of
+ its operands is an actor object (see <a class="link" href="../../../">actors</a>).
+ </li>
+<li class="listitem">
+ Unary operators are lazily evaluated if their argument is an actor
+ object.
+ </li>
+<li class="listitem">
+ Operator <code class="computeroutput"><span class="special">->*</span></code> is lazily
+ evaluated if the left hand argument is an actor object.
+ </li>
+<li class="listitem">
+ The result of a lazy operator is an actor object that can in turn allow
+ the applications of rules 1, 2 and 3.
+ </li>
</ol></div>
<p>
For example, to check the following expression is lazily evaluated:
@@ -94,27 +95,33 @@
</pre>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
- Following rule 1, <code class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span></code> is
- lazily evaluated since <code class="computeroutput"><span class="identifier">arg1</span></code>
- is an actor (see <a class="link" href="core/arguments.html" title="Arguments">Arguments</a>).
- </li>
-<li class="listitem">
- The result of this <code class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span></code> expression
- is an actor object, following rule 4.
- </li>
-<li class="listitem">
- Continuing, <code class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span>
- <span class="number">3</span> <span class="special">+</span> <span class="number">6</span></code> is again lazily evaluated. Rule 2.
- </li>
-<li class="listitem">
- By rule 4 again, the result of <code class="computeroutput"><span class="identifier">arg1</span>
- <span class="special">+</span> <span class="number">3</span> <span class="special">+</span> <span class="number">6</span></code> is
- an actor object.
- </li>
-<li class="listitem">
- As <code class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span>
- <span class="number">3</span> <span class="special">+</span> <span class="number">6</span></code> is an actor, <code class="computeroutput"><span class="special">-(</span><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span> <span class="special">+</span> <span class="number">6</span><span class="special">)</span></code> is lazily evaluated. Rule 2.
- </li>
+ Following rule 1, <code class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span></code> is
+ lazily evaluated since <code class="computeroutput"><span class="identifier">arg1</span></code>
+ is an actor (see <a class="link" href="core/arguments.html" title="Arguments">Arguments</a>).
+ </li>
+<li class="listitem">
+ The result of this <code class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span></code> expression
+ is an actor object, following rule 4.
+ </li>
+<li class="listitem">
+ Continuing, <code class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span>
+ <span class="number">3</span> <span class="special">+</span>
+ <span class="number">6</span></code> is again lazily evaluated.
+ Rule 2.
+ </li>
+<li class="listitem">
+ By rule 4 again, the result of <code class="computeroutput"><span class="identifier">arg1</span>
+ <span class="special">+</span> <span class="number">3</span>
+ <span class="special">+</span> <span class="number">6</span></code>
+ is an actor object.
+ </li>
+<li class="listitem">
+ As <code class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span>
+ <span class="number">3</span> <span class="special">+</span>
+ <span class="number">6</span></code> is an actor, <code class="computeroutput"><span class="special">-(</span><span class="identifier">arg1</span>
+ <span class="special">+</span> <span class="number">3</span>
+ <span class="special">+</span> <span class="number">6</span><span class="special">)</span></code> is lazily evaluated. Rule 2.
+ </li>
</ol></div>
<p>
Lazy-operator application is highly contagious. In most cases, a single
@@ -134,12 +141,12 @@
</span><span class="identifier">val</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> <span class="special"><<</span> <span class="number">3</span><span class="special">;</span> <span class="comment">// Lazily evaluated
</span></pre>
<a name="phoenix.reference.modules.operator.supported_operators"></a><h3>
-<a name="id725779"></a>
+<a name="id846162"></a>
<a class="link" href="operator.html#phoenix.reference.modules.operator.supported_operators">Supported
operators</a>
</h3>
<a name="phoenix.reference.modules.operator.unary_operators"></a><h4>
-<a name="id725798"></a>
+<a name="id846182"></a>
<a class="link" href="operator.html#phoenix.reference.modules.operator.unary_operators">Unary
operators</a>
</h4>
@@ -147,7 +154,7 @@
<span class="identifier">postfix</span><span class="special">:</span> <span class="special">++,</span> <span class="special">--</span>
</pre>
<a name="phoenix.reference.modules.operator.binary_operators"></a><h4>
-<a name="id725929"></a>
+<a name="id846313"></a>
<a class="link" href="operator.html#phoenix.reference.modules.operator.binary_operators">Binary
operators</a>
</h4>
@@ -157,7 +164,7 @@
<span class="special">&&,</span> <span class="special">||,</span> <span class="special">->*</span>
</pre>
<a name="phoenix.reference.modules.operator.ternary_operator"></a><h4>
-<a name="id726130"></a>
+<a name="id846515"></a>
<a class="link" href="operator.html#phoenix.reference.modules.operator.ternary_operator">Ternary
operator</a>
</h4>
@@ -172,7 +179,7 @@
is identical, albeit in a lazy manner.
</p>
<a name="phoenix.reference.modules.operator.member_pointer_operator"></a><h4>
-<a name="id726231"></a>
+<a name="id846617"></a>
<a class="link" href="operator.html#phoenix.reference.modules.operator.member_pointer_operator">Member
pointer operator</a>
</h4>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/scope/lambda.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/scope/lambda.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/scope/lambda.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -143,11 +143,11 @@
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
- a 2-dimensional container (e.g. <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="special">></span></code>)
- </li>
+ a 2-dimensional container (e.g. <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="special">></span></code>)
+ </li>
<li class="listitem">
- a container element (e.g. <code class="computeroutput"><span class="keyword">int</span></code>)
- </li>
+ a container element (e.g. <code class="computeroutput"><span class="keyword">int</span></code>)
+ </li>
</ol></div>
<p>
and pushes-back the element to each of the <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span></code>.
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/statement/throw_.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/statement/throw_.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/statement/throw_.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -23,7 +23,7 @@
</pre>
<p>
As a natural companion to the try/catch support, the statement module
- provides lazy throwing and rethrowing of exceptions.
+ provides lazy throwing and re-throwing of exceptions.
</p>
<p>
The syntax to throw an exception is:
@@ -31,12 +31,12 @@
<pre class="programlisting"><span class="identifier">throw_</span><span class="special">(</span><span class="identifier">exception_expression</span><span class="special">)</span>
</pre>
<p>
- The syntax to rethrow an exception is:
+ The syntax to re-throw an exception is:
</p>
<pre class="programlisting"><span class="identifier">throw_</span><span class="special">()</span>
</pre>
<p>
- Example: This code extends the try/catch example, rethrowing exceptions
+ Example: This code extends the try/catch example, re-throwing exceptions
derived from runtime_error or exception, and translating other exception
types to runtime_errors.
</p>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/stl/algorithm.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/stl/algorithm.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/stl/algorithm.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -73,7 +73,7 @@
</p>
</div>
<div class="table">
-<a name="id739274"></a><p class="title"><b>Table 1.6. Iteration Algorithms</b></p>
+<a name="id859761"></a><p class="title"><b>Table 1.6. Iteration Algorithms</b></p>
<div class="table-contents"><table class="table" summary="Iteration Algorithms">
<colgroup>
<col>
@@ -123,7 +123,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="id739552"></a><p class="title"><b>Table 1.7. Querying Algorithms</b></p>
+<a name="id860041"></a><p class="title"><b>Table 1.7. Querying Algorithms</b></p>
<div class="table-contents"><table class="table" summary="Querying Algorithms">
<colgroup>
<col>
@@ -415,7 +415,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="id742024"></a><p class="title"><b>Table 1.8. Transformation Algorithms</b></p>
+<a name="id862512"></a><p class="title"><b>Table 1.8. Transformation Algorithms</b></p>
<div class="table-contents"><table class="table" summary="Transformation Algorithms">
<colgroup>
<col>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/stl/container.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/stl/container.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/modules/stl/container.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -34,20 +34,20 @@
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
- deque
- </li>
+ deque
+ </li>
<li class="listitem">
- list
- </li>
+ list
+ </li>
<li class="listitem">
- map
- </li>
+ map
+ </li>
<li class="listitem">
- multimap
- </li>
+ multimap
+ </li>
<li class="listitem">
- vector
- </li>
+ vector
+ </li>
</ul></div>
<p>
Indeed, should your class have member functions with the same names and
@@ -56,80 +56,80 @@
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
- assign
- </li>
+ assign
+ </li>
<li class="listitem">
- at
- </li>
+ at
+ </li>
<li class="listitem">
- back
- </li>
+ back
+ </li>
<li class="listitem">
- begin
- </li>
+ begin
+ </li>
<li class="listitem">
- capacity
- </li>
+ capacity
+ </li>
<li class="listitem">
- clear
- </li>
+ clear
+ </li>
<li class="listitem">
- empty
- </li>
+ empty
+ </li>
<li class="listitem">
- end
- </li>
+ end
+ </li>
<li class="listitem">
- erase
- </li>
+ erase
+ </li>
<li class="listitem">
- front
- </li>
+ front
+ </li>
<li class="listitem">
- get_allocator
- </li>
+ get_allocator
+ </li>
<li class="listitem">
- insert
- </li>
+ insert
+ </li>
<li class="listitem">
- key_comp
- </li>
+ key_comp
+ </li>
<li class="listitem">
- max_size
- </li>
+ max_size
+ </li>
<li class="listitem">
- pop_back
- </li>
+ pop_back
+ </li>
<li class="listitem">
- pop_front
- </li>
+ pop_front
+ </li>
<li class="listitem">
- push_back
- </li>
+ push_back
+ </li>
<li class="listitem">
- push_front
- </li>
+ push_front
+ </li>
<li class="listitem">
- rbegin
- </li>
+ rbegin
+ </li>
<li class="listitem">
- rend
- </li>
+ rend
+ </li>
<li class="listitem">
- reserve
- </li>
+ reserve
+ </li>
<li class="listitem">
- resize
- </li>
+ resize
+ </li>
<li class="listitem">
- size
- </li>
+ size
+ </li>
<li class="listitem">
- splice
- </li>
+ splice
+ </li>
<li class="listitem">
- value_comp
- </li>
+ value_comp
+ </li>
</ul></div>
<p>
The lazy functions' names are the same as the corresponding member function.
@@ -137,7 +137,7 @@
does not use the member "dot" syntax.
</p>
<div class="table">
-<a name="id736222"></a><p class="title"><b>Table 1.4. Sample usage</b></p>
+<a name="id856711"></a><p class="title"><b>Table 1.4. Sample usage</b></p>
<div class="table-contents"><table class="table" summary="Sample usage">
<colgroup>
<col>
@@ -215,7 +215,7 @@
</p>
</div>
<div class="table">
-<a name="id736562"></a><p class="title"><b>Table 1.5. Lazy STL Container Functions</b></p>
+<a name="id857051"></a><p class="title"><b>Table 1.5. Lazy STL Container Functions</b></p>
<div class="table-contents"><table class="table" summary="Lazy STL Container Functions">
<colgroup>
<col>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/organization.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/organization.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/reference/organization.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -34,14 +34,14 @@
not depend on higher layers. Modules in a layer do not depend on other modules
in the same layer. This means, for example, that Bind can be completely discarded
if it is not required; or one could perhaps take out Operator and Statement
- and just use Function, which may be desireable in a pure FP application.
+ and just use Function, which may be desirable in a pure FP application.
</p>
<p>
The library has grown from the original Phoenix but still comprises only
header files. There are no object files to link against.
</p>
<a name="phoenix.reference.organization.core"></a><h3>
-<a name="id717425"></a>
+<a name="id837340"></a>
<a class="link" href="organization.html#phoenix.reference.organization.core">Core</a>
</h3>
<p>
@@ -54,11 +54,11 @@
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
- Primitives
- </li>
+ Primitives
+ </li>
<li class="listitem">
- Composites
- </li>
+ Composites
+ </li>
</ol></div>
<p>
Primitives provide the basic building blocks of functionality within Phoenix.
@@ -70,7 +70,7 @@
can again be another composite.
</p>
<div class="table">
-<a name="id717475"></a><p class="title"><b>Table 1.2. Modules</b></p>
+<a name="id837397"></a><p class="title"><b>Table 1.2. Modules</b></p>
<div class="table-contents"><table class="table" summary="Modules">
<colgroup>
<col>
@@ -121,7 +121,7 @@
</td>
<td>
<p>
- Lazy statments (e.g. <code class="computeroutput"><span class="identifier">if_</span></code>,
+ Lazy statements (e.g. <code class="computeroutput"><span class="identifier">if_</span></code>,
<code class="computeroutput"><span class="identifier">while_</span></code>)
</p>
</td>
@@ -199,7 +199,7 @@
the 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>.
</p>
<div class="table">
-<a name="id717766"></a><p class="title"><b>Table 1.3. Includes</b></p>
+<a name="id837685"></a><p class="title"><b>Table 1.3. Includes</b></p>
<div class="table-contents"><table class="table" summary="Includes">
<colgroup>
<col>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/references.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/references.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/references.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -6,13 +6,13 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../index.html" title="Chapter 1. Phoenix 3.0">
-<link rel="prev" href="acknowledgement.html" title="Acknowledgement">
+<link rel="prev" href="acknowledgments.html" title="Acknowledgments">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="acknowledgement.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
+<a accesskey="p" href="acknowledgments.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -20,51 +20,51 @@
</h2></div></div></div>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
- Why Functional Programming Matters, John Hughes, 1989. Available online at
- http://www.math.chalmers.se/~rjmh/Papers/whyfp.html.
- </li>
-<li class="listitem">
- Boost.Lambda library, Jaakko Jarvi, 1999-2004 Jaakko Jarvi, Gary Powell.
- Available online at http://www.boost.org/libs/lambda/.
- </li>
-<li class="listitem">
- Functional Programming in C++ using the FC++ Library: a short article introducing
- FC++, Brian McNamara and Yannis Smaragdakis, August 2003. Available online
- at http://www.cc.gatech.edu/~yannis/fc++/.
- </li>
-<li class="listitem">
- Side-effects and partial function application in C++, Jaakko Jarvi and Gary
- Powell, 2001. Available online at http://osl.iu.edu/~jajarvi/publications/papers/mpool01.pdf.
- </li>
-<li class="listitem">
- Spirit Version 1.8.1, Joel de Guzman, Nov 2004. Available online at http://www.boost.org/libs/spirit/.
- </li>
-<li class="listitem">
- The Boost MPL Library, Aleksey Gurtovoy and David Abrahams, 2002-2004. Available
- online at http://www.boost.org/libs/mpl/.
- </li>
-<li class="listitem">
- Generic Programming Redesign of Patterns, Proceedings of the 5th European
- Conference on Pattern Languages of Programs, (EuroPLoP'2000) Irsee, Germany,
- July 2000. Available online at http://www.coldewey.com/europlop2000/papers/geraud%2Bduret.zip.
- </li>
-<li class="listitem">
- A Gentle Introduction to Haskell, Paul Hudak, John Peterson and Joseph Fasel,
- 1999. Available online at http://www.haskell.org/tutorial/.
- </li>
-<li class="listitem">
- Large scale software design, John Lackos, ISBN 0201633620, Addison-Wesley,
- July 1996.
- </li>
-<li class="listitem">
- Design Patterns, Elements of Reusable Object-Oriented Software, Erich Gamma,
- Richard Helm, Ralph Jhonson, and John Vlissides, Addison-Wesley, 1995.
- </li>
-<li class="listitem">
- The Forwarding Problem: Arguments Peter Dimov, Howard E. Hinnant, Dave Abrahams,
- September 09, 2002. Available online: <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm" target="_top">Forwarding
- Function Problem</a>.
- </li>
+ Why Functional Programming Matters, John Hughes, 1989. Available online
+ at http://www.math.chalmers.se/~rjmh/Papers/whyfp.html.
+ </li>
+<li class="listitem">
+ Boost.Lambda library, Jaakko Jarvi, 1999-2004 Jaakko Jarvi, Gary Powell.
+ Available online at http://www.boost.org/libs/lambda/.
+ </li>
+<li class="listitem">
+ Functional Programming in C++ using the FC++ Library: a short article introducing
+ FC++, Brian McNamara and Yannis Smaragdakis, August 2003. Available online
+ at http://www.cc.gatech.edu/~yannis/fc++/.
+ </li>
+<li class="listitem">
+ Side-effects and partial function application in C++, Jaakko Jarvi and
+ Gary Powell, 2001. Available online at http://osl.iu.edu/~jajarvi/publications/papers/mpool01.pdf.
+ </li>
+<li class="listitem">
+ Spirit Version 1.8.1, Joel de Guzman, Nov 2004. Available online at http://www.boost.org/libs/spirit/.
+ </li>
+<li class="listitem">
+ The Boost MPL Library, Aleksey Gurtovoy and David Abrahams, 2002-2004.
+ Available online at http://www.boost.org/libs/mpl/.
+ </li>
+<li class="listitem">
+ Generic Programming Redesign of Patterns, Proceedings of the 5th European
+ Conference on Pattern Languages of Programs, (EuroPLoP'2000) Irsee, Germany,
+ July 2000. Available online at http://www.coldewey.com/europlop2000/papers/geraud%2Bduret.zip.
+ </li>
+<li class="listitem">
+ A Gentle Introduction to Haskell, Paul Hudak, John Peterson and Joseph
+ Fasel, 1999. Available online at http://www.haskell.org/tutorial/.
+ </li>
+<li class="listitem">
+ Large scale software design, John Lackos, ISBN 0201633620, Addison-Wesley,
+ July 1996.
+ </li>
+<li class="listitem">
+ Design Patterns, Elements of Reusable Object-Oriented Software, Erich Gamma,
+ Richard Helm, Ralph Jhonson, and John Vlissides, Addison-Wesley, 1995.
+ </li>
+<li class="listitem">
+ The Forwarding Problem: Arguments Peter Dimov, Howard E. Hinnant, Dave
+ Abrahams, September 09, 2002. Available online: <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm" target="_top">Forwarding
+ Function Problem</a>.
+ </li>
</ol></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -77,7 +77,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="acknowledgement.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
+<a accesskey="p" href="acknowledgments.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -53,7 +53,7 @@
into high gear quickly.
</p>
<a name="phoenix.starter_kit.functors_everywhere"></a><h3>
-<a name="id712762"></a>
+<a name="id829150"></a>
<a class="link" href="starter_kit.html#phoenix.starter_kit.functors_everywhere">Functors everywhere</a>
</h3>
<p>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_functions.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_functions.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_functions.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -45,25 +45,25 @@
<span class="identifier">function</span><span class="special"><</span><span class="identifier">is_odd_impl</span><span class="special">></span> <span class="identifier">is_odd</span><span class="special">;</span>
</pre>
<a name="phoenix.starter_kit.lazy_functions.things_to_note_"></a><h3>
-<a name="id715460"></a>
+<a name="id831855"></a>
<a class="link" href="lazy_functions.html#phoenix.starter_kit.lazy_functions.things_to_note_">Things
to note:</a>
</h3>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
- Result type deduction is implemented with the help of the result_of protocol.
- For more information see <a href="http://www.boost.org/doc/libs/1_43_0/libs/utility/utility.htm#result_of" target="_top">Boost.Result
- Of</a>
-</li>
+ Result type deduction is implemented with the help of the result_of protocol.
+ For more information see <a href="http://www.boost.org/doc/libs/1_43_0/libs/utility/utility.htm#result_of" target="_top">Boost.Result
+ Of</a>
+ </li>
<li class="listitem">
-<code class="computeroutput"><span class="identifier">is_odd_impl</span></code> implements
- the function.
- </li>
+ <code class="computeroutput"><span class="identifier">is_odd_impl</span></code> implements
+ the function.
+ </li>
<li class="listitem">
-<code class="computeroutput"><span class="identifier">is_odd</span></code>, an instance of
- <code class="computeroutput"><span class="identifier">function</span><span class="special"><</span><span class="identifier">is_odd_impl</span><span class="special">></span></code>,
- is the lazy function.
- </li>
+ <code class="computeroutput"><span class="identifier">is_odd</span></code>, an instance of
+ <code class="computeroutput"><span class="identifier">function</span><span class="special"><</span><span class="identifier">is_odd_impl</span><span class="special">></span></code>,
+ is the lazy function.
+ </li>
</ul></div>
<p>
Now, <code class="computeroutput"><span class="identifier">is_odd</span></code> is a truly lazy
@@ -75,7 +75,7 @@
(See function.cpp)
</p>
<a name="phoenix.starter_kit.lazy_functions.predefined_lazy_functions"></a><h3>
-<a name="id715620"></a>
+<a name="id832025"></a>
<a class="link" href="lazy_functions.html#phoenix.starter_kit.lazy_functions.predefined_lazy_functions">Predefined
Lazy Functions</a>
</h3>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_operators.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_operators.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_operators.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -38,13 +38,14 @@
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
- In a binary expression (e.g. <code class="computeroutput"><span class="number">3</span> <span class="special">*</span> <span class="identifier">arg3</span></code>),
- at least one of the operands must be a phoenix primitive or composite.
- </li>
+ In a binary expression (e.g. <code class="computeroutput"><span class="number">3</span>
+ <span class="special">*</span> <span class="identifier">arg3</span></code>),
+ at least one of the operands must be a phoenix primitive or composite.
+ </li>
<li class="listitem">
- In a unary expression (e.g. <code class="computeroutput"><span class="identifier">arg1</span><span class="special">++</span></code>), the single operand must be a phoenix
- primitive or composite.
- </li>
+ In a unary expression (e.g. <code class="computeroutput"><span class="identifier">arg1</span><span class="special">++</span></code>), the single operand must be a phoenix
+ primitive or composite.
+ </li>
</ul></div>
<p>
If these basic rules are not followed, the result is either an error, or
@@ -68,7 +69,7 @@
</p>
</div>
<a name="phoenix.starter_kit.lazy_operators.first_practical_example"></a><h3>
-<a name="id714422"></a>
+<a name="id830817"></a>
<a class="link" href="lazy_operators.html#phoenix.starter_kit.lazy_operators.first_practical_example">First
Practical Example</a>
</h3>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/more.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/more.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/more.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -7,13 +7,13 @@
<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../starter_kit.html" title="Starter Kit">
<link rel="prev" href="lazy_functions.html" title="Lazy Functions">
-<link rel="next" href="../reference.html" title="Reference">
+<link rel="next" href="../advanced_topics.html" title="Advanced Topics">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="lazy_functions.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../starter_kit.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="lazy_functions.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../starter_kit.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../advanced_topics.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@@ -44,7 +44,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="lazy_functions.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../starter_kit.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="lazy_functions.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../starter_kit.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../advanced_topics.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/references.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/references.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/references.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -20,7 +20,7 @@
<a name="phoenix.starter_kit.references"></a><a class="link" href="references.html" title="References">References</a>
</h3></div></div></div>
<p>
- References are functions. They hold a reference to a value stored somehere.
+ References are functions. They hold a reference to a value stored somewhere.
For example, given:
</p>
<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">3</span><span class="special">;</span>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/values.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/values.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/values.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -32,7 +32,7 @@
World"</span></code>.
</p>
<a name="phoenix.starter_kit.values.lazy_evaluation"></a><h3>
-<a name="id712904"></a>
+<a name="id829292"></a>
<a class="link" href="values.html#phoenix.starter_kit.values.lazy_evaluation">Lazy Evaluation</a>
</h3>
<p>
@@ -64,7 +64,7 @@
anything and defers the evaluation for later.
</p>
<a name="phoenix.starter_kit.values.callbacks"></a><h3>
-<a name="id713107"></a>
+<a name="id829496"></a>
<a class="link" href="values.html#phoenix.starter_kit.values.callbacks">Callbacks</a>
</h3>
<p>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/wrap_up.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/wrap_up.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/wrap_up.html 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -7,13 +7,13 @@
<link rel="home" href="../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="prev" href="notes/porting_from_phoenix_2_0.html" title="Porting from Phoenix 2.0">
-<link rel="next" href="acknowledgement.html" title="Acknowledgement">
+<link rel="next" href="acknowledgments.html" title="Acknowledgments">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="notes/porting_from_phoenix_2_0.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgement.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="notes/porting_from_phoenix_2_0.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgments.html"><img src="../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -26,26 +26,20 @@
oriented programming in the 80s and generic programming in the 90s shaped our
thoughts towards a more robust sense of software engineering, FP will certainly
be a paradigm that will catapult us towards more powerful software design and
- engineering onward into the new millenium.
+ engineering onward into the new millennium.
</p>
<p>
Let me quote Doug Gregor of Boost.org. About functional style programming libraries:
</p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <span class="emphasis"><em>They're gaining acceptance, but are somewhat stunted by the ubiquitousness
- of broken compilers. The C++ community is moving deeper into the so-called
- "STL- style" programming paradigm, which brings many aspects
- of functional programming into the fold. Look at, for instance, the Spirit
- parser to see how such function objects can be used to build Yacc-like
- grammars with semantic actions that can build abstract syntax trees on
- the fly. This type of functional composition is gaining momentum.</em></span>
- </p>
-<p>
- </p>
-</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>They're gaining acceptance, but are somewhat stunted by the ubiquitousness
+ of broken compilers. The C++ community is moving deeper into the so-called
+ "STL- style" programming paradigm, which brings many aspects of
+ functional programming into the fold. Look at, for instance, the Spirit parser
+ to see how such function objects can be used to build Yacc-like grammars
+ with semantic actions that can build abstract syntax trees on the fly. This
+ type of functional composition is gaining momentum.</em></span>
+ </p></blockquote></div>
<p>
Indeed. Phoenix is another attempt to introduce more FP techniques into the
mainstream. Not only is it a tool that will make life easier for the programmer.
@@ -69,7 +63,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="notes/porting_from_phoenix_2_0.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgement.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="notes/porting_from_phoenix_2_0.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgments.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/quickbook_HTML.manifest
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/quickbook_HTML.manifest (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/quickbook_HTML.manifest 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -10,14 +10,17 @@
phoenix/starter_kit/construct__new__delete__casts.html
phoenix/starter_kit/lazy_functions.html
phoenix/starter_kit/more.html
+phoenix/advanced_topics.html
+phoenix/advanced_topics/porting_from_phoenix_2_0.html
+phoenix/advanced_topics/extending_actors.html
phoenix/reference.html
phoenix/reference/basics.html
phoenix/reference/organization.html
phoenix/reference/concepts.html
-phoenix/reference/concepts/environment.html
phoenix/reference/concepts/actor.html
-phoenix/reference/concepts/evaluationpolicy.html
phoenix/reference/concepts/evaluator.html
+phoenix/reference/concepts/evaluationpolicy.html
+phoenix/reference/concepts/environment.html
phoenix/reference/modules.html
phoenix/reference/modules/core.html
phoenix/reference/modules/core/values.html
@@ -57,5 +60,5 @@
phoenix/notes.html
phoenix/notes/porting_from_phoenix_2_0.html
phoenix/wrap_up.html
-phoenix/acknowledgement.html
+phoenix/acknowledgments.html
phoenix/references.html
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/notes.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/notes.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/notes.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -11,11 +11,11 @@
[include notes/porting_from_2_0.qbk]
[/
-[section C++0x Lambdas - Differences, Similiarities]
+[section C++0x Lambdas - Differences, Similarities]
Notes on portability with all the other existing FP libraries
[endsect]
-[section BLL - Differences, Similiarities]
+[section BLL - Differences, Similarities]
Notes on portability with all the other existing FP libraries
[endsect]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/notes/performance.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/notes/performance.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/notes/performance.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -8,12 +8,12 @@
[section Performance]
-This section will contain some obversations and notes about performance of the current implementation
+This section will contain some observations and notes about performance of the current implementation
-[section Compiletime]
+[section Compile time]
[endsect]
-[section Runtime]
+[section Run time]
[endsect]
[endsect]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/phoenix3.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/phoenix3.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/phoenix3.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -42,12 +42,13 @@
[include preface.qbk]
[include introduction.qbk]
[include starter_kit.qbk]
+[include advanced.qbk]
[include reference.qbk]
[/include actors.qbk]
[/include advanced.qbk]
[include notes.qbk]
[include wrap_up.qbk]
-[include acknowledgement.qbk]
+[include acknowledgment.qbk]
[include references.qbk]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/bind.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/bind.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/bind.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -19,7 +19,7 @@
[note Take note that binders are monomorphic. Rather than binding
functions, the preferred way is to write true generic and polymorphic [link
phoenix.reference.modules.function lazy-functions]. However, since most of the time we
-are dealing with adaptation of exisiting code, binders get the job done faster.]
+are dealing with adaptation of existing code, binders get the job done faster.]
There is a set of overloaded `bind` template functions. Each `bind(x)`
function generates a suitable binder object, a [link phoenix.reference.composite
@@ -109,7 +109,7 @@
[section Compatibility with other bind libraries]
`phoenix::bind` passes all testcases of the Boost.Bind library. It is therefore
-completely compatible and interchangable.
+completely compatible and interchangeable.
Note that at the current state of the library, you can not mix phoenix and lambda
expressions just like that.
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/composite.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/composite.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/composite.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -38,7 +38,7 @@
]
As mentioned each of the `A0...AN` can be another actor or composite, this makes
-an actor a recursive structure. The actual evluation is handle by the evaluator `F`.
+an actor a recursive structure. The actual evaluation is handle by the evaluator `F`.
To ease the creation of actors, there exist helper class responsible for
creating the correct types.
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -15,110 +15,12 @@
[section Concepts]
-[section Environment]
+[/include concepts/expression.qbk]
+[include concepts/actor.qbk]
+[include concepts/evaluator.qbk]
+[include concepts/evaluation_policy.qbk]
+[include concepts/environment.qbk]
-[heading Description]
-
-On an actor function call, bafore evaluating the actors expression, the actor
-creates an environment. Basically, the environment packages the arguments in a
-tuple.
-
-[variablelist Notation
- [[`Env`] [A type fulfilling this concept]]
- [[`env`] [Object of type Env]]
- [[`N`] [A __boost_mpl_int__]]
- [[`M`] [A positive Integer index]]
-]
-
-[heading Valid Expressions]
-
-[table
- [[Expression] [Return Type] [Runtime Complexity]]
- [[`get_environment_argument<N>(env)`] [Any Type] [Constant]]
- [[`get_environment_argument_c<M>(env)`] [Any Type] [Constant]]
-]
-
-[heading Result Type Expressions]
-
-[table
- [[Expression] [Result Type] [Compiletime Complexity]]
- [[`result_of::get_environment_argument<N, Env>::type`] [Any Type] [Constant]]
- [[`result_of::get_environment_argument_c<M, Env>::type`] [Any Type] [Constant]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[`get_environment_argument<N>(env)`] [Returns the `N::value`-th argument passed to the enclosed evaluation context]]
- [[`get_environment_argument_c<M>(env)`] [Returns the `M`th argument passed to the enclosed evaluation context]]
-]
-
-[heading Models]
-
-* [link phoenix.reference.modules.core.basic_environment `boost::phoenix::basic_environment`]
-* [link phoenix.reference.modules.scope.scope_environment `boost::phoenix::scoped_environment`]
-
-[endsect]
-
-[section Actor]
-
-[heading Description]
-
-The Actor is the main concept behind the library.
-
-Actors are TR1 function objects and can accept 0 to `PHOENIX_LIMIT` arguments.
-An Actor is responsible for setting up the __phoenix_concept_environment__ which
-is then passed to the __phoenix_concept_evaluator__.
-Every Actor needs to somehow embed the expression it is supposed to evaluate.
-An Actor itself is required to be a valid Expression.
-
-[note You can set `PHOENIX_LIMIT`, the predefined maximum arity an
-actor can take. By default, `PHOENIX_LIMIT` is set to 10.]
-
-
-[variablelist Notation
- [[`Actor`] [A type fulfilling this concept]]
- [[`actor`] [Object of type Actor]]
- [[`A0...AN`] [Argument Types]]
- [[`a0...aN`] [Objects of type A0, ...AN]]
- [[`N`] [A __boost_mpl_int__]]
- [[`M`] [A positive Integer index]]
-]
-
-[heading Valid Expressions]
-
-[table
- [[Expression] [Return Type] [Runtime Complexity]]
- [[actor(a0...aN)] [Any Type] [unspecified]]
- [[element_at<N>(actor)] [Actor] [Constant]]
- [[element_at_c<M>(actor)] [Actor] [Constant]]
-]
-
-[heading Result Type Expressions]
-[table
- [[Expression] [Result Type] [Compiletime Complexity]]
- [[result_of::actor<Expr, A0...AN>::type] [Any Type] [unspecified]]
- [[result_of::element_at_c<Actor, N>::type] [Any Type] [Constant]]
- [[result_of::element_at_c<Actor, M>::type] [Any Type] [Constant]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[actor(a0...aN)] [Evaluates the expression with the default __phoenix_concept_evaluator__]]
- [[element_at<N>(actor)] [Returns the `N::value`-th element of an compounf expression]]
- [[element_at_c<M>(actor)] [Returns the `M`th element of an compound expression]]
-]
-
-[heading Models]
-
-* [link phoenix.reference.modules.core.actor `boost::phoenix::actor`]
-* [link phoenix.reference.modules.statement.if_ `boost::phoenix::if_`]
-* [link phoenix.reference.modules.statement.try_ `boost::phoenix::try_`]
-
-[endsect]
[/
[section Primitive]
@@ -133,92 +35,4 @@
[endsect]
]
-[section EvaluationPolicy]
-
-[heading Description]
-
-Evaluation Policies are the classes which decide how the composite is to be evaluated with respect to the default evaluator.
-
-[variablelist Notation
- [[`F`] [Type fulfilling this concept]]
- [[`f`] [Object of type F]]
- [[`Env`] [A type of __phoenix_concept_environment__]]
- [[`env`] [Object of type Env]]
- [[`A0...AN`] [Argument Types]]
- [[`a0...aN`] [Objects of type A0, ...AN]]
-]
-
-[heading Valid Expressions]
-
-[table
- [[Expression] [Return Type] [Runtime Complexity]]
- [[`f(env, a0...aN)`] [Any Type] [unspecified]]
-]
-
-[heading Result Type Expressions]
-[table
- [[Expression] [Result Type] [Compiletime Complexity]]
- [[`boost::result_of<F(Env, A0...AN)>::type|`] [Result of evaluation] [unspecified]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[`f(env, a0...aN)`] [Evalutes the Composite with the given attached data]]
-]
-
-[heading Models]
-
-TODO (almost everything)
-
-[endsect]
-
-[section Evaluator]
-
-[heading Description]
-
-The concepts of evaluators are the working horses behind phoenix.
-They are responsible of evaluating the composed expressions.
-
-Various evaluators are thinkable, the main evaluator will be refered to as the
-default evaluator. It is implemented in terms of the Boost.Proto default context
-and the various __phoenix_concpets_evaluation_policies__.
-
-[variablelist Notation
- [[`Actor`] [Type fulfilling this concept]]
- [[`eval`] [An object of type Eval]]
- [[`Expr`] [Type of the Actor Concept]]
- [[`expr`] [Object of type Expr]]
-]
-
-[heading Valid Expressions]
-
-[table
- [[Expression] [Return Type] [Runtime Complexity]]
- [[`eval(expr, env)`] [Any Type] [unspecified]]
-]
-
-[heading Result Type Expressions]
-[table
- [[Expression] [Result Type] [Compiletime Complexity]]
- [[boost::result_of<Eval(Expr const&, Env&)>::type] [Result of evaluation] [unspecified]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[`eval(expr, env)`] [Evaluate the expression with the given environment]]
-]
-
-[heading Models]
-
-* eval_grammar
-* arity
-* no_nullary
-* switch_grammar
-
-[endsect]
-
[endsect]
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/actor.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/actor.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,68 @@
+[/==============================================================================
+ Copyright (C) 2001-2010 Joel de Guzman
+ Copyright (C) 2001-2005 Dan Marsden
+ Copyright (C) 2001-2010 Thomas Heller
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
+
+[section Actor]
+
+[heading Description]
+
+The Actor is the main concept behind the library.
+
+Actors are TR1 function objects and can accept 0 to `PHOENIX_LIMIT` arguments.
+An Actor is responsible for setting up the __phoenix_concept_environment__ which
+is then passed to the __phoenix_concept_evaluator__.
+Every Actor needs to somehow embed the expression it is supposed to evaluate.
+An Actor itself is required to be a valid Expression.
+
+[note You can set `PHOENIX_LIMIT`, the predefined maximum arity an
+actor can take. By default, `PHOENIX_LIMIT` is set to 10.]
+
+
+[variablelist Notation
+ [[`Actor`] [A type fulfilling this concept]]
+ [[`actor`] [Object of type Actor]]
+ [[`A0...AN`] [Argument Types]]
+ [[`a0...aN`] [Objects of type A0, ...AN]]
+ [[`N`] [A __boost_mpl_int__]]
+ [[`M`] [A positive Integer index]]
+]
+
+[heading Valid Expressions]
+
+[table
+ [[Expression] [Return Type] [Run time Complexity]]
+ [[actor(a0...aN)] [Any Type] [unspecified]]
+ [[element_at<N>(actor)] [Actor] [Constant]]
+ [[element_at_c<M>(actor)] [Actor] [Constant]]
+]
+
+[heading Result Type Expressions]
+[table
+ [[Expression] [Result Type] [Compile time Complexity]]
+ [[result_of::actor<Expr, A0...AN>::type] [Any Type] [unspecified]]
+ [[result_of::element_at_c<Actor, N>::type] [Any Type] [Constant]]
+ [[result_of::element_at_c<Actor, M>::type] [Any Type] [Constant]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[actor(a0...aN)] [Evaluates the expression with the default __phoenix_concept_evaluator__]]
+ [[element_at<N>(actor)] [Returns the `N::value`-th element of an compound expression]]
+ [[element_at_c<M>(actor)] [Returns the `M`th element of an compound expression]]
+]
+
+[heading Models]
+
+* [link phoenix.reference.modules.core.actor `boost::phoenix::actor`]
+* [link phoenix.reference.modules.statement.if__statement `boost::phoenix::if_`]
+* [link phoenix.reference.modules.statement.try__catch__statement `boost::phoenix::try_`]
+
+[endsect]
+
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/environment.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/environment.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,55 @@
+[/==============================================================================
+ Copyright (C) 2001-2010 Joel de Guzman
+ Copyright (C) 2001-2005 Dan Marsden
+ Copyright (C) 2001-2010 Thomas Heller
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
+
+[section Environment]
+
+[heading Description]
+
+On an actor function call, before evaluating the actors expression, the actor
+creates an environment. Basically, the environment packages the arguments in a
+tuple.
+
+[variablelist Notation
+ [[`Env`] [A type fulfilling this concept]]
+ [[`env`] [Object of type Env]]
+ [[`N`] [A __boost_mpl_int__]]
+ [[`M`] [A positive Integer index]]
+]
+
+[heading Valid Expressions]
+
+[table
+ [[Expression] [Return Type] [Runtime Complexity]]
+ [[`get_environment_argument<N>(env)`] [Any Type] [Constant]]
+ [[`get_environment_argument_c<M>(env)`] [Any Type] [Constant]]
+]
+
+[heading Result Type Expressions]
+
+[table
+ [[Expression] [Result Type] [Compiletime Complexity]]
+ [[`result_of::get_environment_argument<N, Env>::type`] [Any Type] [Constant]]
+ [[`result_of::get_environment_argument_c<M, Env>::type`] [Any Type] [Constant]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[`get_environment_argument<N>(env)`] [Returns the `N::value`-th argument passed to the enclosed evaluation context]]
+ [[`get_environment_argument_c<M>(env)`] [Returns the `M`th argument passed to the enclosed evaluation context]]
+]
+
+[heading Models]
+
+* [link phoenix.reference.modules.core.basic_environment `boost::phoenix::basic_environment`]
+* [link phoenix.reference.modules.scope.scope_environment `boost::phoenix::scoped_environment`]
+
+[endsect]
+
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/evaluation_policy.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/evaluation_policy.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,49 @@
+[/==============================================================================
+ Copyright (C) 2001-2010 Joel de Guzman
+ Copyright (C) 2001-2005 Dan Marsden
+ Copyright (C) 2001-2010 Thomas Heller
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
+
+[section EvaluationPolicy]
+
+[heading Description]
+
+Evaluation Policies are the classes which decide how the composite is to be evaluated with respect to the default evaluator.
+
+[variablelist Notation
+ [[`F`] [Type fulfilling this concept]]
+ [[`f`] [Object of type F]]
+ [[`Env`] [A type of __phoenix_concept_environment__]]
+ [[`env`] [Object of type Env]]
+ [[`A0...AN`] [Argument Types]]
+ [[`a0...aN`] [Objects of type A0, ...AN]]
+]
+
+[heading Valid Expressions]
+
+[table
+ [[Expression] [Return Type] [Run time Complexity]]
+ [[`f(env, a0...aN)`] [Any Type] [unspecified]]
+]
+
+[heading Result Type Expressions]
+[table
+ [[Expression] [Result Type] [Compile time Complexity]]
+ [[`boost::result_of<F(Env, A0...AN)>::type|`] [Result of evaluation] [unspecified]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[`f(env, a0...aN)`] [Evaluates the Composite with the given attached data]]
+]
+
+[heading Models]
+
+TODO (almost everything)
+
+[endsect]
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/evaluator.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/evaluator.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,58 @@
+[/==============================================================================
+ Copyright (C) 2001-2010 Joel de Guzman
+ Copyright (C) 2001-2005 Dan Marsden
+ Copyright (C) 2001-2010 Thomas Heller
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
+
+[section Evaluator]
+
+[heading Description]
+
+The concepts of evaluators are the working horses behind phoenix.
+They are responsible of evaluating the composed expressions.
+
+Various evaluators are thinkable, the main evaluator will be referred to as the
+default evaluator. It is implemented in terms of the Boost.Proto default context
+and the various __phoenix_concepts_evaluation_policies__.
+
+[variablelist Notation
+ [[`Eval`] [Type fulfilling this concept]]
+ [[`eval`] [An object of type Eval]]
+ [[`Expr`] [Type of the Actor Concept]]
+ [[`expr`] [Object of type Expr]]
+ [[`Env`] [Type fulfilling the Environment concept]]
+ [[`env`] [Object of type Env]]
+]
+
+[heading Valid Expressions]
+
+[table
+ [[Expression] [Return Type] [Run time Complexity]]
+ [[`eval(expr, env)`] [Any Type] [unspecified]]
+]
+
+[heading Result Type Expressions]
+[table
+ [[Expression] [Result Type] [Compile time Complexity]]
+ [[boost::result_of<Eval(Expr const&, Env&)>::type] [Result of evaluation] [unspecified]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[`eval(expr, env)`] [Evaluate the expression with the given environment]]
+]
+
+[heading Models]
+
+* eval_grammar
+* arity
+* no_nullary
+* switch_grammar
+
+[endsect]
+
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/expression.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/expression.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,41 @@
+[/==============================================================================
+ Copyright (C) 2001-2010 Joel de Guzman
+ Copyright (C) 2001-2005 Dan Marsden
+ Copyright (C) 2001-2010 Thomas Heller
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
+
+[section Expression]
+
+[heading Description]
+
+An expression is considered the most general concept behind phoenix.
+
+All in all, everything can be an expression
+
+[variablelist Notation
+]
+
+[heading Valid Expressions]
+
+[table
+ [[Expression] [Return Type] [Run time Complexity]]
+]
+
+[heading Result Type Expressions]
+[table
+ [[Expression] [Result Type] [Compile time Complexity]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+]
+
+[heading Models]
+
+[endsect]
+
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/core.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/core.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/core.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -141,7 +141,7 @@
You see the use make_argument this is a convenience class wrapping the `compose` class:
template <typename N>
- struct make_arguemnt : compose<argument, N> {};
+ struct make_argument : compose<argument, N> {};
This scheme of actor creation is used throughout the library and follows the DRY principle.
See [link phoenix.reference.composite Composites] for more details.
@@ -161,10 +161,10 @@
add(arg1, 6)
[note
-When dealing with argument placeholders the question arises wether you can call
+When dealing with argument placeholders the question arises whether you can call
member functions on an `argument` actor.
-This is possible by supplying a costum `actor` which has a member
+This is possible by supplying a custom `actor` which has a member
generator function. See [link phoenix.advanced.extending.extending_actors Extending Actors]
for more details.
]
@@ -216,7 +216,7 @@
argument (`arg1`) and the fifth argument (`arg5`).
[note There are a few reasons why enforcing strict arity is not
-desireable. A case in point is the callback function. Typical callback functions
+desirable. A case in point is the callback function. Typical callback functions
provide more information than is actually needed. Lambda functions are often
used as callbacks.]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/function.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/function.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/function.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -57,7 +57,7 @@
(See [@../../example/users_manual/factorial.cpp factorial.cpp])
[note The type of Arg is either a const-reference or non-const-reference
-(depending on wether your argument to the actor evaluation is a const-ref or
+(depending on whether your argument to the actor evaluation is a const-ref or
non-const-ref).]
Having implemented the `factorial_impl` type, we can declare and instantiate a lazy
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/object.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/object.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/object.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -30,7 +30,7 @@
construct<T>(ctor_arg1, ctor_arg2, ..., ctor_argN);
-where the given parameters are the parameters to the contructor of the object of
+where the given parameters are the parameters to the constructor of the object of
type T (This implies, that type T is expected to have a constructor with a
corresponding set of parameter types.).
@@ -53,7 +53,7 @@
new_<T>(ctor_arg1, ctor_arg2, ..., ctor_argN);
-where the given parameters are the parameters to the contructor of the object of
+where the given parameters are the parameters to the contractor of the object of
type T (This implies, that type T is expected to have a constructor with a
corresponding set of parameter types.).
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/operator.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/operator.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/operator.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -53,8 +53,8 @@
# A binary operator, except `->*` will be lazily evaluated when
/at least/ one of its operands is an actor object
(see [link phoenix.reference.actor actors]).
-# Unary operators are lazily evaluted if their argument is an actor object.
-# Operator `->*` is lazily evaluted if the left hand argument is an actor object.
+# Unary operators are lazily evaluated if their argument is an actor object.
+# Operator `->*` is lazily evaluated if the left hand argument is an actor object.
# The result of a lazy operator is an actor object that can in turn allow the
applications of rules 1, 2 and 3.
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/organisation.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/organisation.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/organisation.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -20,7 +20,7 @@
Lower layers do not depend on higher layers. Modules in a layer do not depend on other modules in the same layer.
This means, for example, that Bind can be completely discarded if it is
not required; or one could perhaps take out Operator and Statement and just use Function,
-which may be desireable in a pure FP application.
+which may be desirable in a pure FP application.
The library has grown from the original Phoenix but still comprises only
header files. There are no object files to link against.
@@ -47,7 +47,7 @@
[[Module] [Description]]
[[Function] [Lazy functions support (e.g. `add`)]]
[[Operator] [Lazy operators support (e.g. `+`)]]
- [[Statement] [Lazy statments (e.g. `if_`, `while_`)]]
+ [[Statement] [Lazy statements (e.g. `if_`, `while_`)]]
[[Object] [Lazy casts (e.g. `static_cast_`),
object creation destruction (e.g.
`new_`, `delete_`)]]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/statement.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/statement.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/statement.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -327,17 +327,17 @@
#include <boost/phoenix/statement/throw.hpp>
As a natural companion to the try/catch support, the statement module provides
-lazy throwing and rethrowing of exceptions.
+lazy throwing and re-throwing of exceptions.
The syntax to throw an exception is:
throw_(exception_expression)
-The syntax to rethrow an exception is:
+The syntax to re-throw an exception is:
throw_()
-Example: This code extends the try/catch example, rethrowing exceptions derived from
+Example: This code extends the try/catch example, re-throwing exceptions derived from
runtime_error or exception, and translating other exception types to runtime_errors.
try_
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/starter_kit/references.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/starter_kit/references.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/starter_kit/references.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -9,7 +9,7 @@
[section References]
-References are functions. They hold a reference to a value stored somehere.
+References are functions. They hold a reference to a value stored somewhere.
For example, given:
int i = 3;
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/wrap_up.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/wrap_up.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/wrap_up.qbk 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -15,7 +15,7 @@
programming in the 80s and generic programming in the 90s shaped our thoughts
towards a more robust sense of software engineering, FP will certainly be a
paradigm that will catapult us towards more powerful software design and
-engineering onward into the new millenium.
+engineering onward into the new millennium.
Let me quote Doug Gregor of Boost.org. About functional style programming
libraries:
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/example/container_actor.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/example/container_actor.cpp 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -0,0 +1,91 @@
+/*==============================================================================
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2010 Thomas Heller
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#include <boost/phoenix/core.hpp>
+#include <boost/phoenix/function.hpp>
+
+#include <vector>
+
+namespace phoenix = boost::phoenix;
+
+using phoenix::actor;
+using phoenix::function;
+using phoenix::arg_names::arg1;
+
+struct size_impl
+{
+ // result_of protocol:
+ template <typename Sig>
+ struct result;
+
+ template <typename This, typename Container>
+ struct result<This(Container)>
+ {
+ // Note, remove reference here, because Container can be anything
+ typedef typename boost::remove_reference<Container>::type container_type;
+
+ // The result will be size_type
+ typedef typename container_type::size_type type;
+ };
+
+ template <typename Container>
+ typename result<size_impl(Container const&)>::type
+ operator()(Container const& container) const
+ {
+ return container.size();
+ }
+};
+
+template <typename Expr>
+struct container_actor
+ : actor<Expr>
+{
+ typedef actor<Expr> base_type;
+ typedef container_actor<Expr> that_type;
+
+ container_actor( base_type const& base )
+ : base_type( base ) {}
+
+ typename phoenix::result_of::function<size_impl, that_type>::type const
+ size() const
+ {
+ function<size_impl> const f = size_impl();
+ return f(*this);
+ }
+
+ // the rest ...
+};
+
+
+template <typename Expr>
+container_actor<Expr> const
+container( actor<Expr> const& expr )
+{
+ return expr;
+}
+
+
+template <typename N>
+struct make_container_argument : phoenix::compose_ex<phoenix::argument, container_actor, N> {};
+
+typedef make_container_argument<boost::mpl::int_<0> > make_con1;
+make_con1::type const con1 = make_con1()(boost::mpl::int_<0>());
+
+int main()
+{
+ std::vector<int> v;
+ v.push_back(0);
+ v.push_back(1);
+ v.push_back(2);
+ v.push_back(3);
+
+ std::cout << (container(arg1).size())(v) << " == " << v.size() << "\n";
+
+
+ std::cout << (con1.size())(v) << " == " << v.size() << "\n";
+}
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/test/core/function_composition.cpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/test/core/function_composition.cpp (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/test/core/function_composition.cpp 2010-08-14 18:07:34 EDT (Sat, 14 Aug 2010)
@@ -34,5 +34,8 @@
BOOST_TEST((arg1 + arg2)(arg1, arg1)(8) == 16);
+ double mean = 8.0;
+ (arg1 + arg2 * (arg1 * arg1)( boost::phoenix::val(1.0) - mean ))(1.0, 2.0);
+
return boost::report_errors();
}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk