|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r68952 - in sandbox/SOC/2010/phoenix3/libs/phoenix/doc: . examples html html/phoenix html/phoenix/examples html/phoenix/inside html/phoenix/inside/expression html/phoenix/modules html/phoenix/modules/bind html/phoenix/modules/core html/phoenix/modules/stl html/phoenix/starter_kit inside modules
From: thom.heller_at_[hidden]
Date: 2011-02-16 12:36:57
Author: theller
Date: 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
New Revision: 68952
URL: http://svn.boost.org/trac/boost/changeset/68952
Log:
more doc work
Added:
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/examples/
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/examples.qbk (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/examples/extending_actors.qbk
- copied unchanged from r68938, /sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/extending_actors.qbk
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/adding_an_expression.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/extending_actors.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actions.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind/compatibility_with_boost_bind.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/placeholder_unification.html (contents, props changed)
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actions.qbk (contents, props changed)
Removed:
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/extending_actors.qbk
Text files modified:
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/index.html | 28 +++--
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/basics.html | 10 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside.html | 9 -
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actor.html | 21 ++--
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/adding_expressions.html | 5
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/custom_terminals.html | 8
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression.html | 8
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression.html | 31 ++++-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext.html | 75 ++++++++++++++-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext_vararg.html | 74 +++++++++++++-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_vararg.html | 75 ++++++++++++++-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/extending_actors.html | 8
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules.html | 5
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind.html | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind/binding_member_variables.html | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/arguments.html | 8
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/references.html | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/values.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/fusion.html | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/operator.html | 12 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl.html | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/algorithm.html | 12 +-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/container.html | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/organization.html | 6
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 | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_operators.html | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/values.html | 4
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/quickbook_HTML.manifest | 10 +
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside.qbk | 6
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actor.qbk | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/expression.qbk | 200 ++++++++++++++++++++++++++++++++++++++-
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules.qbk | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/bind.qbk | 2
sandbox/SOC/2010/phoenix3/libs/phoenix/doc/phoenix3.qbk | 3
35 files changed, 530 insertions(+), 134 deletions(-)
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/examples.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/examples.qbk 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,17 @@
+[/==============================================================================
+ 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:examples Advanced Examples]
+
+[include examples/extending_actors.qbk]
+
+[section Adding an expression]
+[endsect]
+
+[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 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -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="id735291"></a><p>
+<a name="id560085"></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>
@@ -97,16 +97,16 @@
Member Functions</a></span></dt>
<dt><span class="section"><a href="phoenix/modules/bind/binding_member_variables.html">Binding
Member Variables</a></span></dt>
-<dt><span class="section"><a href="phoenix/modules/bind/compatibility_with_other_boost_bind.html">Compatibility
- with other Boost.Bind</a></span></dt>
+<dt><span class="section"><a href="phoenix/modules/bind/compatibility_with_boost_bind.html">Compatibility
+ with Boost.Bind</a></span></dt>
</dl></dd>
<dt><span class="section">STL</span></dt>
<dd><dl>
<dt><span class="section">Container</span></dt>
<dt><span class="section">Algorithm</span></dt>
</dl></dd>
-<dt><span class="section">Fusion</span></dt>
</dl></dd>
+<dt><span class="section">Placeholder Unification</span></dt>
<dt><span class="section">Inside Phoenix</span></dt>
<dd><dl>
<dt><span class="section">Actors in Detail</span></dt>
@@ -117,14 +117,18 @@
<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT</span></dt>
<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></dt>
</dl></dd>
-<dt><span class="section">Extending Actors</span></dt>
+<dt><span class="section">More on Actions</span></dt>
<dt><span class="section">Custom Terminals</span></dt>
-<dt><span class="section">Adding Expressions</span></dt>
+</dl></dd>
+<dt><span class="section">Advanced Examples</span></dt>
+<dd><dl>
+<dt><span class="section">Extending Actors</span></dt>
+<dt><span class="section">Adding an expression</span></dt>
</dl></dd>
</dl>
</div>
<a name="phoenix.preface"></a><h2>
-<a name="id765988"></a>
+<a name="id590782"></a>
<a class="link" href="index.html#phoenix.preface">Preface</a>
</h2>
<div class="blockquote"><blockquote class="blockquote"><p>
@@ -143,7 +147,7 @@
<span class="inlinemediaobject"><img src="images/lambda_cpp.png" alt="lambda_cpp"></span>
</p>
<a name="phoenix.description"></a><h3>
-<a name="id734095"></a>
+<a name="id558888"></a>
<a class="link" href="index.html#phoenix.description">Description</a>
</h3>
<p>
@@ -161,7 +165,7 @@
library is organized in highly independent modules and layers.
</p>
<a name="phoenix.how_to_use_this_manual"></a><h3>
-<a name="id734142"></a>
+<a name="id558935"></a>
<a class="link" href="index.html#phoenix.how_to_use_this_manual">How to use this manual</a>
</h3>
<p>
@@ -183,7 +187,7 @@
icons precede some text to indicate:
</p>
<div class="table">
-<a name="id734176"></a><p class="title"><b>Table 1.1. Icons</b></p>
+<a name="id558970"></a><p class="title"><b>Table 1.1. Icons</b></p>
<div class="table-contents"><table class="table" summary="Icons">
<colgroup>
<col>
@@ -272,12 +276,12 @@
</p>
</div>
<a name="phoenix._emphasis_role__bold___emphasis____to_my_dear_daughter__phoenix__emphasis___emphasis_"></a><h3>
-<a name="id774945"></a>
+<a name="id599738"></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>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: February 16, 2011 at 08:03:33 GMT</small></p></td>
+<td align="left"><p><small>Last revised: February 16, 2011 at 17:32:32 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/basics.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/basics.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/basics.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -42,7 +42,7 @@
</p></td></tr>
</table></div>
<a name="phoenix.basics.partial_function_application"></a><h4>
-<a name="id778331"></a>
+<a name="id603124"></a>
<a class="link" href="basics.html#phoenix.basics.partial_function_application">Partial Function
Application</a>
</h4>
@@ -94,7 +94,7 @@
black boxes anymore.
</p>
<a name="phoenix.basics.stl_and_higher_order_functions"></a><h4>
-<a name="id778546"></a>
+<a name="id603340"></a>
<a class="link" href="basics.html#phoenix.basics.stl_and_higher_order_functions">STL and higher
order functions</a>
</h4>
@@ -126,7 +126,7 @@
</p></td></tr>
</table></div>
<a name="phoenix.basics.lazy_evaluation"></a><h4>
-<a name="id778757"></a>
+<a name="id603551"></a>
<a class="link" href="basics.html#phoenix.basics.lazy_evaluation">Lazy Evaluation</a>
</h4>
<p>
@@ -181,7 +181,7 @@
</span><span class="identifier">std</span><span class="special">::</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">std</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.basics.forwarding_function_problem"></a><h4>
-<a name="id779300"></a>
+<a name="id604093"></a>
<a class="link" href="basics.html#phoenix.basics.forwarding_function_problem">Forwarding Function
Problem</a>
</h4>
@@ -222,7 +222,7 @@
</p></td></tr>
</table></div>
<a name="phoenix.basics.polymorphic_functions"></a><h4>
-<a name="id779438"></a>
+<a name="id604232"></a>
<a class="link" href="basics.html#phoenix.basics.polymorphic_functions">Polymorphic Functions</a>
</h4>
<p>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,40 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Advanced Examples</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<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="inside/custom_terminals.html" title="Custom Terminals">
+<link rel="next" href="examples/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="inside/custom_terminals.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="examples/extending_actors.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.examples"></a><a class="link" href="examples.html" title="Advanced Examples">Advanced Examples</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Extending Actors</span></dt>
+<dt><span class="section">Adding an expression</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="inside/custom_terminals.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="examples/extending_actors.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/adding_an_expression.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/adding_an_expression.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,33 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Adding an expression</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../examples.html" title="Advanced Examples">
+<link rel="prev" 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="extending_actors.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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><h3 class="title">
+<a name="phoenix.examples.adding_an_expression"></a><a class="link" href="adding_an_expression.html" title="Adding an expression">Adding an expression</a>
+</h3></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="extending_actors.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/extending_actors.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/extending_actors.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,313 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Extending Actors</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../examples.html" title="Advanced Examples">
+<link rel="prev" href="../examples.html" title="Advanced Examples">
+<link rel="next" href="adding_an_expression.html" title="Adding an expression">
+</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="../examples.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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="adding_an_expression.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="phoenix.examples.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="../inside/actor.html" title="Actors in Detail">Actors</a> are one of the main parts
+ of the library, and one of the many customization points. The default actor
+ implementation provides several operator() 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="../modules/statement/___if_else_____statement.html" title="if_else_ Statement">if_else_
+Statement</a>
+ which provides an additional else member for generating a lazy if-else expression.
+ With this the actual Phoenix expression becomes more expressive.
+ </p>
+<p>
+ Another scenario 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 were a STL Container.
+ </p>
+<a name="phoenix.examples.extending_actors.requirements"></a><h5>
+<a name="id642213"></a>
+ <a class="link" href="extending_actors.html#phoenix.examples.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.examples.extending_actors.defining_the_actor"></a><h5>
+<a name="id642525"></a>
+ <a class="link" href="extending_actors.html#phoenix.examples.extending_actors.defining_the_actor">Defining
+ the actor</a>
+ </h5>
+<p>
+ The first version of our <code class="computeroutput"><span class="identifier">container_actor</span></code>
+ interface will show the general principle. This will be continually extended.
+ For the sake of simplicity, every member function generator will return
+ <a class="link" href="../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="keyword">typedef</span> <span class="identifier">actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></span> <span class="identifier">base_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">container_actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></span> <span class="identifier">that_type</span><span class="special">;</span>
+
+ <span class="identifier">container_actor</span><span class="special">(</span> <span class="identifier">base_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">base</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span> <span class="identifier">base</span> <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">expression</span><span class="special">::</span><span class="identifier">null</span><span class="special"><</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">void_</span><span class="special">>::</span><span class="identifier">type</span> <span class="keyword">const</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</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">expression</span><span class="special">::</span><span class="identifier">null</span><span class="special"><</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">void_</span><span class="special">>::</span><span class="identifier">type</span> <span class="keyword">const</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</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">expression</span><span class="special">::</span><span class="identifier">null</span><span class="special"><</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">void_</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="keyword">const</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">expression</span><span class="special">::</span><span class="identifier">null</span><span class="special"><</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">void_</span><span class="special">>::</span><span class="identifier">type</span> <span class="keyword">const</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="keyword">const</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">expression</span><span class="special">::</span><span class="identifier">null</span><span class="special"><</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">void_</span><span class="special">>::</span><span class="identifier">type</span> <span class="keyword">const</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</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">Container</span><span class="special">></span>
+ <span class="identifier">expression</span><span class="special">::</span><span class="identifier">null</span><span class="special"><</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">void_</span><span class="special">>::</span><span class="identifier">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">Container</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="special">)</span> <span class="keyword">const</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.examples.extending_actors.using_the_actor"></a><h5>
+<a name="id643409"></a>
+ <a class="link" href="extending_actors.html#phoenix.examples.extending_actors.using_the_actor">Using the
+ actor</a>
+ </h5>
+<p>
+ Although the member functions 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">actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></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="keyword">return</span> <span class="identifier">expr</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Now let's 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">size</span><span class="special">())(</span><span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+ Granted, this is not really elegant and not very practical (we could have
+ just used phoenix::begin(v) from the <a class="link" href="../modules/stl/algorithm.html" title="Algorithm">Phoenix
+ algorithm module</a>, but we can do better.
+ </p>
+<p>
+ Let's have an <a class="link" href="../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="identifier">container_actor</span><span class="special"><</span><span class="identifier">expression</span><span class="special">::</span><span class="identifier">argument</span><span class="special"><</span><span class="number">1</span><span class="special">>::</span><span class="identifier">type</span><span class="special">></span> <span class="keyword">const</span> <span class="identifier">con1</span><span class="special">;</span>
+<span class="comment">// and so on ...
+</span></pre>
+<p>
+ The above example can be rewritten as:
+ </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.examples.extending_actors.adding_life_to_the_actor"></a><h5>
+<a name="id644076"></a>
+ <a class="link" href="extending_actors.html#phoenix.examples.extending_actors.adding_life_to_the_actor">Adding
+ life to the actor</a>
+ </h5>
+<p>
+ This one will be even easier!
+ </p>
+<p>
+ First, we define a <a class="link" href="../modules/function.html" title="Function">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">typedef</span> <span class="identifier">actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></span> <span class="identifier">base_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">container_actor</span><span class="special"><</span><span class="identifier">Expr</span><span class="special">></span> <span class="identifier">that_type</span><span class="special">;</span>
+
+ <span class="identifier">container_actor</span><span class="special">(</span> <span class="identifier">base_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">base</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">base_type</span><span class="special">(</span> <span class="identifier">base</span> <span class="special">)</span> <span class="special">{}</span>
+
+ <span class="keyword">typename</span> <span class="identifier">expression</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">that_type</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="keyword">const</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 an exercise to the user to implement the missing parts by reusing
+ functions from the <a class="link" href="../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="../examples.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.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="adding_an_expression.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -6,14 +6,14 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<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="modules/fusion.html" title="Fusion">
+<link rel="prev" href="placeholder_unification.html" title="Placeholder Unification">
<link rel="next" href="inside/actor.html" title="Actors in Detail">
</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="modules/fusion.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="inside/actor.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="placeholder_unification.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="inside/actor.html"><img src="../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -28,9 +28,8 @@
<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT</span></dt>
<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></dt>
</dl></dd>
-<dt><span class="section">Extending Actors</span></dt>
+<dt><span class="section">More on Actions</span></dt>
<dt><span class="section">Custom Terminals</span></dt>
-<dt><span class="section">Adding Expressions</span></dt>
</dl></div>
<p>
This chapter explains in more detail how the library operates. The information
@@ -49,7 +48,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="modules/fusion.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="inside/actor.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="placeholder_unification.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="inside/actor.html"><img src="../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actions.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actions.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>More on Actions</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../inside.html" title="Inside Phoenix">
+<link rel="prev" href="expression/phoenix_define_expression_ext_vararg.html" title="PHOENIX_DEFINE_EXPRESSION_EXT_VARARG">
+<link rel="next" href="custom_terminals.html" title="Custom Terminals">
+</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="expression/phoenix_define_expression_ext_vararg.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="custom_terminals.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section"><div class="titlepage"><div><div><h3 class="title">
+<a name="phoenix.inside.actions"></a><a class="link" href="actions.html" title="More on Actions">More on Actions</a>
+</h3></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="expression/phoenix_define_expression_ext_vararg.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="custom_terminals.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actor.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actor.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actor.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -20,7 +20,7 @@
<a name="phoenix.inside.actor"></a><a class="link" href="actor.html" title="Actors in Detail">Actors in Detail</a>
</h3></div></div></div>
<a name="phoenix.inside.actor.actor"></a><h5>
-<a name="id809066"></a>
+<a name="id633856"></a>
<a class="link" href="actor.html#phoenix.inside.actor.actor">Actor</a>
</h5>
<p>
@@ -70,7 +70,7 @@
</span><span class="special">};</span>
</pre>
<div class="table">
-<a name="id809584"></a><p class="title"><b>Table 1.9. Actor Concept Requirements</b></p>
+<a name="id634373"></a><p class="title"><b>Table 1.9. Actor Concept Requirements</b></p>
<div class="table-contents"><table class="table" summary="Actor Concept Requirements">
<colgroup>
<col>
@@ -136,7 +136,7 @@
</table></div>
</div>
<br class="table-break"><a name="phoenix.inside.actor.function_call_operators"></a><h5>
-<a name="id809885"></a>
+<a name="id634675"></a>
<a class="link" href="actor.html#phoenix.inside.actor.function_call_operators">Function Call
Operators</a>
</h5>
@@ -169,7 +169,7 @@
</td></tr>
</table></div>
<a name="phoenix.inside.actor.context"></a><h5>
-<a name="id809992"></a>
+<a name="id634781"></a>
<a class="link" href="actor.html#phoenix.inside.actor.context">Context</a>
</h5>
<p>
@@ -180,7 +180,7 @@
all information necessary to evaluate the given expression.
</p>
<div class="table">
-<a name="id810036"></a><p class="title"><b>Table 1.10. Context Concept Requirements</b></p>
+<a name="id634826"></a><p class="title"><b>Table 1.10. Context Concept Requirements</b></p>
<div class="table-contents"><table class="table" summary="Context Concept Requirements">
<colgroup>
<col>
@@ -278,7 +278,7 @@
</table></div>
</div>
<br class="table-break"><a name="phoenix.inside.actor.environment"></a><h5>
-<a name="id810404"></a>
+<a name="id635194"></a>
<a class="link" href="actor.html#phoenix.inside.actor.environment">Environment</a>
</h5>
<p>
@@ -297,7 +297,7 @@
such as local variables, etc.
</p>
<a name="phoenix.inside.actor.actions"></a><h5>
-<a name="id810469"></a>
+<a name="id635260"></a>
<a class="link" href="actor.html#phoenix.inside.actor.actions">Actions</a>
</h5>
<p>
@@ -332,10 +332,11 @@
</pre>
<p>
For more Information on how to use the default_actions class and how to attach
- custom actions to the evaluation process, see the next sections.
+ custom actions to the evaluation process, see <a class="link" href="actions.html" title="More on Actions">more
+ on actions</a>.
</p>
<a name="phoenix.inside.actor.evaluation"></a><h5>
-<a name="id810745"></a>
+<a name="id635543"></a>
<a class="link" href="actor.html#phoenix.inside.actor.evaluation">Evaluation</a>
</h5>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">evaluator</span>
@@ -366,7 +367,7 @@
<span class="special">}</span>
</pre>
<a name="phoenix.inside.actor.result_of__actor"></a><h5>
-<a name="id811250"></a>
+<a name="id636048"></a>
<a class="link" href="actor.html#phoenix.inside.actor.result_of__actor">result_of::actor</a>
</h5>
<p>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/adding_expressions.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/adding_expressions.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/adding_expressions.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -7,12 +7,13 @@
<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../inside.html" title="Inside Phoenix">
<link rel="prev" href="custom_terminals.html" title="Custom Terminals">
+<link rel="next" href="../examples.html" title="Advanced Examples">
</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="custom_terminals.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="custom_terminals.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="../examples.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title">
<a name="phoenix.inside.adding_expressions"></a><a class="link" href="adding_expressions.html" title="Adding Expressions">Adding Expressions</a>
@@ -27,7 +28,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="custom_terminals.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="custom_terminals.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="../examples.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/custom_terminals.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/custom_terminals.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/custom_terminals.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -6,14 +6,14 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../inside.html" title="Inside Phoenix">
-<link rel="prev" href="extending_actors.html" title="Extending Actors">
-<link rel="next" href="adding_expressions.html" title="Adding Expressions">
+<link rel="prev" href="actions.html" title="More on Actions">
+<link rel="next" href="../examples.html" title="Advanced Examples">
</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_actors.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="adding_expressions.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="actions.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="../examples.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title">
<a name="phoenix.inside.custom_terminals"></a><a class="link" href="custom_terminals.html" title="Custom Terminals">Custom Terminals</a>
@@ -28,7 +28,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="extending_actors.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="adding_expressions.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="actions.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.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="../examples.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -150,12 +150,12 @@
used in <code class="computeroutput"><span class="identifier">expr_ext</span></code>. This
can be a user supplied custom Actor adding other member functions or objects
than the default <code class="computeroutput"><span class="identifier">actor</span></code>
- template. See <a class="link" href="extending_actors.html" title="Extending Actors">Extending
+ template. See <a class="link" href="../examples/extending_actors.html" title="Extending Actors">Extending
Actors</a> for more details.
</p></td></tr>
</table></div>
<a name="phoenix.inside.expression.meta_grammar"></a><h5>
-<a name="id812664"></a>
+<a name="id637462"></a>
<a class="link" href="expression.html#phoenix.inside.expression.meta_grammar">meta_grammar</a>
</h5>
<p>
@@ -183,7 +183,7 @@
you include this grammar gets extended by various expressions.
</p>
<a name="phoenix.inside.expression.example"></a><h5>
-<a name="id812894"></a>
+<a name="id637692"></a>
<a class="link" href="expression.html#phoenix.inside.expression.example">Example</a>
</h5>
<p>
@@ -250,7 +250,7 @@
and two children. This is because <code class="computeroutput"><span class="identifier">default_actions</span></code>
uses the <code class="computeroutput"><span class="identifier">proto</span><span class="special">::</span><span class="identifier">_default</span><span class="special"><</span><span class="identifier">meta_grammar</span><span class="special">></span></code>
transform to evaluate operators and functions. Learn more about actions
- <a class="link" href="../../">here</a>
+ <a class="link" href="actions.html" title="More on Actions">here</a>
</p></td></tr>
</table></div>
<p>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -20,7 +20,7 @@
<a name="phoenix.inside.expression.phoenix_define_expression"></a><a class="link" href="phoenix_define_expression.html" title="PHOENIX_DEFINE_EXPRESSION">PHOENIX_DEFINE_EXPRESSION</a>
</h4></div></div></div>
<a name="phoenix.inside.expression.phoenix_define_expression.description"></a><h6>
-<a name="id813716"></a>
+<a name="id638513"></a>
<a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.description">Description</a>
</h6>
<p>
@@ -29,7 +29,7 @@
create Phoenix Expressions
</p>
<a name="phoenix.inside.expression.phoenix_define_expression.synopsis"></a><h6>
-<a name="id813750"></a>
+<a name="id638547"></a>
<a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION</span><span class="special">(</span>
@@ -40,7 +40,7 @@
<span class="special">)</span>
</pre>
<a name="phoenix.inside.expression.phoenix_define_expression.semantics"></a><h6>
-<a name="id813855"></a>
+<a name="id638652"></a>
<a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.semantics">Semantics</a>
</h6>
<p>
@@ -62,17 +62,23 @@
<span class="keyword">namespace</span> <span class="identifier">expression</span>
<span class="special">{</span>
<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">></span>
- <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">name</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">expr</span><span class="special"><</span>
+ <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
+ <span class="special">,</span> <span class="identifier">A0</span>
+ <span class="special">,</span> <span class="identifier">A1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">AN</span>
+ <span class="special">></span>
<span class="special">}</span>
<span class="keyword">namespace</span> <span class="identifier">rule</span>
<span class="special">{</span>
<span class="keyword">struct</span> <span class="identifier">name</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">expr</span><span class="special"><</span>
- <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
- <span class="special">,</span> <span class="identifier">child_grammar0</span>
+ <span class="identifier">child_grammar0</span>
<span class="special">,</span> <span class="identifier">child_grammar1</span>
- <span class="special">,</span> <span class="special">...</span>
+ <span class="special">...</span>
<span class="special">,</span> <span class="identifier">child_grammarN</span>
<span class="special">></span>
<span class="special">{};</span>
@@ -82,13 +88,13 @@
This macros also adds a specialization for <code class="computeroutput"><span class="identifier">meta_grammar</span><span class="special">::</span><span class="identifier">case_</span><span class="special"><</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span><span class="special">></span></code>.
</p>
<a name="phoenix.inside.expression.phoenix_define_expression.header"></a><h6>
-<a name="id814279"></a>
+<a name="id639138"></a>
<a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.header">Header</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="phoenix.inside.expression.phoenix_define_expression.example"></a><h6>
-<a name="id814361"></a>
+<a name="id639221"></a>
<a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.example">Example</a>
</h6>
<p>
@@ -99,6 +105,13 @@
<span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Lhs
</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Rhs
</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Lhs</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Rhs</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="identifier">plus</span><span class="special"><</span><span class="identifier">Lhs</span><span class="special">,</span> <span class="identifier">Rhs</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="identifier">plus</span><span class="special">(</span><span class="identifier">Lhs</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">Rhs</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">expression</span><span class="special">::</span><span class="identifier">plus</span><span class="special"><</span><span class="identifier">Lhs</span><span class="special">,</span> <span class="identifier">Rhs</span><span class="special">>::</span><span class="identifier">make</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">}</span>
</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -20,7 +20,7 @@
<a name="phoenix.inside.expression.phoenix_define_expression_ext"></a><a class="link" href="phoenix_define_expression_ext.html" title="PHOENIX_DEFINE_EXPRESSION_EXT">PHOENIX_DEFINE_EXPRESSION_EXT</a>
</h4></div></div></div>
<a name="phoenix.inside.expression.phoenix_define_expression_ext.description"></a><h6>
-<a name="id814677"></a>
+<a name="id640449"></a>
<a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.description">Description</a>
</h6>
<p>
@@ -29,23 +29,88 @@
create Phoenix Expressions
</p>
<a name="phoenix.inside.expression.phoenix_define_expression_ext.synopsis"></a><h6>
-<a name="id814712"></a>
+<a name="id640485"></a>
<a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.synopsis">Synopsis</a>
</h6>
+<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_EXT</span><span class="special">(</span>
+ <span class="identifier">actor</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
+ <span class="special">...</span>
+ <span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">N</span>
+<span class="special">)</span>
+</pre>
<a name="phoenix.inside.expression.phoenix_define_expression_ext.semantics"></a><h6>
-<a name="id814732"></a>
+<a name="id640626"></a>
<a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.semantics">Semantics</a>
</h6>
+<p>
+ The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
+ The sequence of <code class="computeroutput"><span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span></code> declares how many children the expression
+ will have and what <code class="computeroutput"><span class="identifier">proto</span><span class="special">::</span><span class="identifier">grammar</span></code>
+ they match.
+ </p>
+<p>
+ The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
+ shall be the sequence of namespaces under which the following symbols will
+ be defined:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">expression</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">name</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">expr_ext</span><span class="special"><</span>
+ <span class="identifier">actor</span>
+ <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
+ <span class="special">,</span> <span class="identifier">A0</span>
+ <span class="special">,</span> <span class="identifier">A1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">AN</span>
+ <span class="special">></span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">rule</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</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">expr</span><span class="special"><</span>
+ <span class="identifier">child_grammar0</span>
+ <span class="special">,</span> <span class="identifier">child_grammar1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">child_grammarN</span>
+ <span class="special">></span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This macros also adds a specialization for <code class="computeroutput"><span class="identifier">meta_grammar</span><span class="special">::</span><span class="identifier">case_</span><span class="special"><</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span><span class="special">></span></code>.
+ </p>
<a name="phoenix.inside.expression.phoenix_define_expression_ext.header"></a><h6>
-<a name="id814752"></a>
+<a name="id641124"></a>
<a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.header">Header</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="phoenix.inside.expression.phoenix_define_expression_ext.example"></a><h6>
-<a name="id814834"></a>
+<a name="id641206"></a>
<a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.example">Example</a>
</h6>
+<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_EXT</span><span class="special">(</span>
+ <span class="identifier">if_actor</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">if_</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Cond
+</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Then
+</span><span class="special">)</span>
+</pre>
+<p>
+ This defines the if_ expression. The custom actor defines the <code class="computeroutput"><span class="identifier">else_</span></code>.
+ </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext_vararg.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext_vararg.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext_vararg.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -7,20 +7,20 @@
<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../expression.html" title="Phoenix Expressions">
<link rel="prev" href="phoenix_define_expression_ext.html" title="PHOENIX_DEFINE_EXPRESSION_EXT">
-<link rel="next" href="../extending_actors.html" title="Extending Actors">
+<link rel="next" href="../actions.html" title="More on Actions">
</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="phoenix_define_expression_ext.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.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>
+<a accesskey="p" href="phoenix_define_expression_ext.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.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="../actions.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg"></a><a class="link" href="phoenix_define_expression_ext_vararg.html" title="PHOENIX_DEFINE_EXPRESSION_EXT_VARARG">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</a>
</h4></div></div></div>
<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.description"></a><h6>
-<a name="id814870"></a>
+<a name="id641368"></a>
<a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.description">Description</a>
</h6>
<p>
@@ -29,23 +29,81 @@
create Phoenix Expressions
</p>
<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.synopsis"></a><h6>
-<a name="id814906"></a>
+<a name="id641404"></a>
<a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.synopsis">Synopsis</a>
</h6>
+<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span><span class="special">(</span>
+ <span class="identifier">actor</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
+ <span class="special">...</span>
+ <span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">N</span>
+<span class="special">)</span>
+</pre>
<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.semantics"></a><h6>
-<a name="id814927"></a>
+<a name="id641546"></a>
<a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.semantics">Semantics</a>
</h6>
+<p>
+ The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
+ <code class="computeroutput"><span class="identifier">N</span></code> is the maximum number
+ of variable children. All but the last elements in the grammar sequence
+ are required children of the expression, and the last denotes a variable
+ number of children. The number of children an expression of this kind can
+ hold is therefor <code class="computeroutput"><span class="identifier">N</span><span class="special">-</span><span class="number">1</span></code> plus the size of the sequence
+ </p>
+<p>
+ The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
+ shall be the sequence of namespaces under which the following symbols will
+ be defined:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">expression</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">name</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">expr_ext</span><span class="special"><</span>
+ <span class="identifier">actor</span>
+ <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
+ <span class="special">,</span> <span class="identifier">A0</span>
+ <span class="special">,</span> <span class="identifier">A1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">AN</span>
+ <span class="special">></span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">rule</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">expression</span><span class="special">::</span><span class="identifier">name</span><span class="special"><</span>
+ <span class="identifier">child_grammar0</span>
+ <span class="special">,</span> <span class="identifier">child_grammar1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">proto</span><span class="special">::</span><span class="identifier">vararg</span><span class="special"><</span><span class="identifier">child_grammarN</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+</pre>
<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.header"></a><h6>
-<a name="id814947"></a>
+<a name="id642010"></a>
<a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.header">Header</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.example"></a><h6>
-<a name="id815029"></a>
+<a name="id642092"></a>
<a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.example">Example</a>
</h6>
+<p>
+ TBD
+ </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
@@ -57,7 +115,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="phoenix_define_expression_ext.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.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>
+<a accesskey="p" href="phoenix_define_expression_ext.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.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="../actions.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_vararg.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_vararg.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_vararg.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -20,7 +20,7 @@
<a name="phoenix.inside.expression.phoenix_define_expression_vararg"></a><a class="link" href="phoenix_define_expression_vararg.html" title="PHOENIX_DEFINE_EXPRESSION_VARARG">PHOENIX_DEFINE_EXPRESSION_VARARG</a>
</h4></div></div></div>
<a name="phoenix.inside.expression.phoenix_define_expression_vararg.description"></a><h6>
-<a name="id814483"></a>
+<a name="id639569"></a>
<a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.description">Description</a>
</h6>
<p>
@@ -29,23 +29,88 @@
create Phoenix Expressions
</p>
<a name="phoenix.inside.expression.phoenix_define_expression_vararg.synopsis"></a><h6>
-<a name="id814519"></a>
+<a name="id639605"></a>
<a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.synopsis">Synopsis</a>
</h6>
+<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_VARARG</span><span class="special">(</span>
+ <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
+ <span class="special">...</span>
+ <span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">N</span>
+<span class="special">)</span>
+</pre>
<a name="phoenix.inside.expression.phoenix_define_expression_vararg.semantics"></a><h6>
-<a name="id814539"></a>
+<a name="id639736"></a>
<a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.semantics">Semantics</a>
</h6>
+<p>
+ The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
+ <code class="computeroutput"><span class="identifier">N</span></code> is the maximum number
+ of variable children. All but the last elements in the grammar sequence
+ are required children of the expression, and the last denotes a variable
+ number of children. The number of children an expression of this kind can
+ hold is therefor <code class="computeroutput"><span class="identifier">N</span><span class="special">-</span><span class="number">1</span></code> plus the size of the sequence
+ </p>
+<p>
+ The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
+ shall be the sequence of namespaces under which the following symbols will
+ be defined:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">expression</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">name</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">expr</span><span class="special"><</span>
+ <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
+ <span class="special">,</span> <span class="identifier">A0</span>
+ <span class="special">,</span> <span class="identifier">A1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">AN</span>
+ <span class="special">></span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">rule</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">expression</span><span class="special">::</span><span class="identifier">name</span><span class="special"><</span>
+ <span class="identifier">child_grammar0</span>
+ <span class="special">,</span> <span class="identifier">child_grammar1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">proto</span><span class="special">::</span><span class="identifier">vararg</span><span class="special"><</span><span class="identifier">child_grammarN</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+</pre>
<a name="phoenix.inside.expression.phoenix_define_expression_vararg.header"></a><h6>
-<a name="id814558"></a>
+<a name="id640188"></a>
<a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.header">Header</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="phoenix.inside.expression.phoenix_define_expression_vararg.example"></a><h6>
-<a name="id814640"></a>
+<a name="id640270"></a>
<a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.example">Example</a>
</h6>
+<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_VARARG</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">mem_fun_ptr</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Pointer to Object
+</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Member pointer
+</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Variable number of arguments
+</span> <span class="special">,</span> <span class="identifier">PHOENIX_LIMIT</span>
+<span class="special">)</span>
+</pre>
+<p>
+ This defines the member function pointer operator expression as described
+ in <a class="link" href="../../modules/operator.html" title="Operator">operators</a>.
+ </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/extending_actors.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/extending_actors.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/extending_actors.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -39,7 +39,7 @@
on how to implement a custom actor which is usable as if it were a STL Container.
</p>
<a name="phoenix.inside.extending_actors.requirements"></a><h5>
-<a name="id815103"></a>
+<a name="id705278"></a>
<a class="link" href="extending_actors.html#phoenix.inside.extending_actors.requirements">Requirements</a>
</h5>
<p>
@@ -141,7 +141,7 @@
Additionally, we want all the operator() overloads of the regular actor.
</p>
<a name="phoenix.inside.extending_actors.defining_the_actor"></a><h5>
-<a name="id815414"></a>
+<a name="id705590"></a>
<a class="link" href="extending_actors.html#phoenix.inside.extending_actors.defining_the_actor">Defining
the actor</a>
</h5>
@@ -174,7 +174,7 @@
<span class="special">};</span>
</pre>
<a name="phoenix.inside.extending_actors.using_the_actor"></a><h5>
-<a name="id816298"></a>
+<a name="id706473"></a>
<a class="link" href="extending_actors.html#phoenix.inside.extending_actors.using_the_actor">Using the
actor</a>
</h5>
@@ -231,7 +231,7 @@
Wow, that was easy!
</p>
<a name="phoenix.inside.extending_actors.adding_life_to_the_actor"></a><h5>
-<a name="id816964"></a>
+<a name="id707140"></a>
<a class="link" href="extending_actors.html#phoenix.inside.extending_actors.adding_life_to_the_actor">Adding
life to the actor</a>
</h5>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -64,15 +64,14 @@
Member Functions</a></span></dt>
<dt><span class="section"><a href="modules/bind/binding_member_variables.html">Binding
Member Variables</a></span></dt>
-<dt><span class="section"><a href="modules/bind/compatibility_with_other_boost_bind.html">Compatibility
- with other Boost.Bind</a></span></dt>
+<dt><span class="section"><a href="modules/bind/compatibility_with_boost_bind.html">Compatibility
+ with Boost.Bind</a></span></dt>
</dl></dd>
<dt><span class="section">STL</span></dt>
<dd><dl>
<dt><span class="section">Container</span></dt>
<dt><span class="section">Algorithm</span></dt>
</dl></dd>
-<dt><span class="section">Fusion</span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -25,8 +25,8 @@
Member Functions</a></span></dt>
<dt><span class="section"><a href="bind/binding_member_variables.html">Binding
Member Variables</a></span></dt>
-<dt><span class="section"><a href="bind/compatibility_with_other_boost_bind.html">Compatibility
- with other Boost.Bind</a></span></dt>
+<dt><span class="section"><a href="bind/compatibility_with_boost_bind.html">Compatibility
+ with Boost.Bind</a></span></dt>
</dl></div>
<p>
<span class="emphasis"><em>Binding</em></span> is the act of tying together a function to some
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind/binding_member_variables.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind/binding_member_variables.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind/binding_member_variables.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -7,13 +7,13 @@
<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../bind.html" title="Bind">
<link rel="prev" href="binding_member_functions.html" title="Binding Member Functions">
-<link rel="next" href="compatibility_with_other_boost_bind.html" title="Compatibility with other Boost.Bind">
+<link rel="next" href="compatibility_with_boost_bind.html" title="Compatibility with Boost.Bind">
</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="binding_member_functions.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bind.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="compatibility_with_other_boost_bind.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="binding_member_functions.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bind.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="compatibility_with_boost_bind.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
@@ -61,7 +61,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="binding_member_functions.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bind.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="compatibility_with_other_boost_bind.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="binding_member_functions.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bind.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="compatibility_with_boost_bind.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind/compatibility_with_boost_bind.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/bind/compatibility_with_boost_bind.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Compatibility with Boost.Bind</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
+<link rel="up" href="../bind.html" title="Bind">
+<link rel="prev" href="binding_member_variables.html" title="Binding Member Variables">
+<link rel="next" href="../stl.html" title="STL">
+</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="binding_member_variables.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bind.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="../stl.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="phoenix.modules.bind.compatibility_with_boost_bind"></a><a class="link" href="compatibility_with_boost_bind.html" title="Compatibility with Boost.Bind">Compatibility
+ with Boost.Bind</a>
+</h4></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 interchangeable.
+ </p>
+<p>
+ Given the compatibility with Boost.Bind, we also assume compatibility with
+ std::tr1::bind and std::bind from the upcoming C++0x standard.
+ </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="binding_member_variables.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../bind.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="../stl.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/arguments.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/arguments.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/arguments.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -31,7 +31,7 @@
an imaginary data-bin where a function argument will be placed.
</p>
<a name="phoenix.modules.core.arguments.predefined_arguments"></a><h6>
-<a name="id782384"></a>
+<a name="id607178"></a>
<a class="link" href="arguments.html#phoenix.modules.core.arguments.predefined_arguments">Predefined
Arguments</a>
</h6>
@@ -75,7 +75,7 @@
</p></td></tr>
</table></div>
<a name="phoenix.modules.core.arguments.user_defined_arguments"></a><h6>
-<a name="id782909"></a>
+<a name="id607703"></a>
<a class="link" href="arguments.html#phoenix.modules.core.arguments.user_defined_arguments">User
Defined Arguments</a>
</h6>
@@ -97,7 +97,7 @@
<pre class="programlisting"><span class="identifier">add</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="number">6</span><span class="special">)</span>
</pre>
<a name="phoenix.modules.core.arguments.evaluating_an_argument"></a><h6>
-<a name="id783061"></a>
+<a name="id607854"></a>
<a class="link" href="arguments.html#phoenix.modules.core.arguments.evaluating_an_argument">Evaluating
an Argument</a>
</h6>
@@ -124,7 +124,7 @@
<span class="identifier">Hello</span> <span class="identifier">World</span>
</pre>
<a name="phoenix.modules.core.arguments.extra_arguments"></a><h6>
-<a name="id783358"></a>
+<a name="id608151"></a>
<a class="link" href="arguments.html#phoenix.modules.core.arguments.extra_arguments">Extra Arguments</a>
</h6>
<p>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/references.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/references.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/references.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -59,7 +59,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.modules.core.references.evaluating_a_reference"></a><h6>
-<a name="id781982"></a>
+<a name="id606775"></a>
<a class="link" href="references.html#phoenix.modules.core.references.evaluating_a_reference">Evaluating
a Reference</a>
</h6>
@@ -75,7 +75,7 @@
prints out "3 Hello World"
</p>
<a name="phoenix.modules.core.references.constant_references"></a><h6>
-<a name="id782118"></a>
+<a name="id606912"></a>
<a class="link" href="references.html#phoenix.modules.core.references.constant_references">Constant
References</a>
</h6>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/values.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/values.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/values.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -47,7 +47,7 @@
but, as we'll see later on, there are situations where this is unavoidable.
</p>
<a name="phoenix.modules.core.values.evaluating_a_value"></a><h3>
-<a name="id781500"></a>
+<a name="id606294"></a>
<a class="link" href="values.html#phoenix.modules.core.values.evaluating_a_value">Evaluating
a Value</a>
</h3>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/fusion.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/fusion.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/fusion.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -7,13 +7,13 @@
<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../modules.html" title="Modules">
<link rel="prev" href="stl/algorithm.html" title="Algorithm">
-<link rel="next" href="../inside.html" title="Inside Phoenix">
+<link rel="next" href="../placeholder_unification.html" title="Placeholder Unification">
</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="stl/algorithm.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modules.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="../inside.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="stl/algorithm.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modules.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="../placeholder_unification.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@@ -33,7 +33,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="stl/algorithm.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modules.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="../inside.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="stl/algorithm.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modules.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="../placeholder_unification.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/operator.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/operator.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/operator.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -134,18 +134,18 @@
</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.modules.operator.supported_operators"></a><h5>
-<a name="id785795"></a>
+<a name="id610588"></a>
<a class="link" href="operator.html#phoenix.modules.operator.supported_operators">Supported operators</a>
</h5>
<a name="phoenix.modules.operator.unary_operators"></a><h5>
-<a name="id785814"></a>
+<a name="id610607"></a>
<a class="link" href="operator.html#phoenix.modules.operator.unary_operators">Unary operators</a>
</h5>
<pre class="programlisting"><span class="identifier">prefix</span><span class="special">:</span> <span class="special">~,</span> <span class="special">!,</span> <span class="special">-,</span> <span class="special">+,</span> <span class="special">++,</span> <span class="special">--,</span> <span class="special">&</span> <span class="special">(</span><span class="identifier">reference</span><span class="special">),</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">dereference</span><span class="special">)</span>
<span class="identifier">postfix</span><span class="special">:</span> <span class="special">++,</span> <span class="special">--</span>
</pre>
<a name="phoenix.modules.operator.binary_operators"></a><h5>
-<a name="id785945"></a>
+<a name="id610738"></a>
<a class="link" href="operator.html#phoenix.modules.operator.binary_operators">Binary operators</a>
</h5>
<pre class="programlisting"><span class="special">=,</span> <span class="special">[],</span> <span class="special">+=,</span> <span class="special">-=,</span> <span class="special">*=,</span> <span class="special">/=,</span> <span class="special">%=,</span> <span class="special">&=,</span> <span class="special">|=,</span> <span class="special">^=,</span> <span class="special"><<=,</span> <span class="special">>>=</span>
@@ -154,7 +154,7 @@
<span class="special">&&,</span> <span class="special">||,</span> <span class="special">->*</span>
</pre>
<a name="phoenix.modules.operator.ternary_operator"></a><h5>
-<a name="id786146"></a>
+<a name="id610940"></a>
<a class="link" href="operator.html#phoenix.modules.operator.ternary_operator">Ternary operator</a>
</h5>
<pre class="programlisting"><span class="identifier">if_else</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span>
@@ -167,7 +167,7 @@
albeit in a lazy manner.
</p>
<a name="phoenix.modules.operator.member_pointer_operator"></a><h5>
-<a name="id786247"></a>
+<a name="id611041"></a>
<a class="link" href="operator.html#phoenix.modules.operator.member_pointer_operator">Member pointer
operator</a>
</h5>
@@ -208,7 +208,7 @@
<span class="special">(</span><span class="identifier">arg1</span><span class="special">->*&</span><span class="identifier">A</span><span class="special">::</span><span class="identifier">func</span><span class="special">)(</span><span class="identifier">arg2</span><span class="special">)(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">i</span><span class="special">);</span> <span class="comment">// returns a->func(i)
</span></pre>
<a name="phoenix.modules.operator.include_files"></a><h5>
-<a name="id786628"></a>
+<a name="id611421"></a>
<a class="link" href="operator.html#phoenix.modules.operator.include_files">Include Files</a>
</h5>
<div class="informaltable"><table class="table">
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -6,14 +6,14 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../modules.html" title="Modules">
-<link rel="prev" href="bind/compatibility_with_other_boost_bind.html" title="Compatibility with other Boost.Bind">
+<link rel="prev" href="bind/compatibility_with_boost_bind.html" title="Compatibility with Boost.Bind">
<link rel="next" href="stl/container.html" title="Container">
</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="bind/compatibility_with_other_boost_bind.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modules.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="stl/container.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="bind/compatibility_with_boost_bind.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modules.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="stl/container.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@@ -39,7 +39,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="bind/compatibility_with_other_boost_bind.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modules.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="stl/container.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="bind/compatibility_with_boost_bind.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../modules.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="stl/container.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/algorithm.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/algorithm.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/algorithm.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -7,13 +7,13 @@
<link rel="home" href="../../../index.html" title="Chapter 1. Phoenix 3.0">
<link rel="up" href="../stl.html" title="STL">
<link rel="prev" href="container.html" title="Container">
-<link rel="next" href="../fusion.html" title="Fusion">
+<link rel="next" href="../../placeholder_unification.html" title="Placeholder Unification">
</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="container.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stl.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="../fusion.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="container.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stl.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="../../placeholder_unification.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
@@ -73,7 +73,7 @@
</p>
</div>
<div class="table">
-<a name="id800518"></a><p class="title"><b>Table 1.6. Iteration Algorithms</b></p>
+<a name="id625311"></a><p class="title"><b>Table 1.6. Iteration Algorithms</b></p>
<div class="table-contents"><table class="table" summary="Iteration Algorithms">
<colgroup>
<col>
@@ -128,7 +128,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="id800796"></a><p class="title"><b>Table 1.7. Querying Algorithms</b></p>
+<a name="id625589"></a><p class="title"><b>Table 1.7. Querying Algorithms</b></p>
<div class="table-contents"><table class="table" summary="Querying Algorithms">
<colgroup>
<col>
@@ -441,7 +441,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
-<a name="id803268"></a><p class="title"><b>Table 1.8. Transformation Algorithms</b></p>
+<a name="id628061"></a><p class="title"><b>Table 1.8. Transformation Algorithms</b></p>
<div class="table-contents"><table class="table" summary="Transformation Algorithms">
<colgroup>
<col>
@@ -1128,7 +1128,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="container.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stl.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="../fusion.html"><img src="../../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="container.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../stl.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="../../placeholder_unification.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/container.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/container.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/container.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -137,7 +137,7 @@
does not use the member "dot" syntax.
</p>
<div class="table">
-<a name="id797468"></a><p class="title"><b>Table 1.4. Sample usage</b></p>
+<a name="id622260"></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="id797806"></a><p class="title"><b>Table 1.5. Lazy STL Container Functions</b></p>
+<a name="id622599"></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/organization.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/organization.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/organization.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -52,7 +52,7 @@
files. There are no object files to link against.
</p>
<a name="phoenix.organization.core"></a><h3>
-<a name="id779830"></a>
+<a name="id604624"></a>
<a class="link" href="organization.html#phoenix.organization.core">Core</a>
</h3>
<p>
@@ -72,7 +72,7 @@
can again be another expression.
</p>
<div class="table">
-<a name="id779868"></a><p class="title"><b>Table 1.2. Modules</b></p>
+<a name="id604662"></a><p class="title"><b>Table 1.2. Modules</b></p>
<div class="table-contents"><table class="table" summary="Modules">
<colgroup>
<col>
@@ -200,7 +200,7 @@
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="id780156"></a><p class="title"><b>Table 1.3. Includes</b></p>
+<a name="id604950"></a><p class="title"><b>Table 1.3. Includes</b></p>
<div class="table-contents"><table class="table" summary="Includes">
<colgroup>
<col>
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/placeholder_unification.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/placeholder_unification.html 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Placeholder Unification</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<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="modules/stl/algorithm.html" title="Algorithm">
+<link rel="next" href="inside.html" title="Inside Phoenix">
+</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="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="inside.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.placeholder_unification"></a><a class="link" href="placeholder_unification.html" title="Placeholder Unification">Placeholder Unification</a>
+</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>
+ 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="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="inside.html"><img src="../images/next.png" alt="Next"></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 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -52,7 +52,7 @@
into high gear quickly.
</p>
<a name="phoenix.starter_kit.functors_everywhere"></a><h4>
-<a name="id775049"></a>
+<a name="id599843"></a>
<a class="link" href="starter_kit.html#phoenix.starter_kit.functors_everywhere">Functors everywhere</a>
</h4>
<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 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -45,7 +45,7 @@
<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><h5>
-<a name="id777850"></a>
+<a name="id602644"></a>
<a class="link" href="lazy_functions.html#phoenix.starter_kit.lazy_functions.things_to_note_">Things
to note:</a>
</h5>
@@ -75,7 +75,7 @@
(See function.cpp)
</p>
<a name="phoenix.starter_kit.lazy_functions.predefined_lazy_functions"></a><h5>
-<a name="id778028"></a>
+<a name="id602822"></a>
<a class="link" href="lazy_functions.html#phoenix.starter_kit.lazy_functions.predefined_lazy_functions">Predefined
Lazy Functions</a>
</h5>
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 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -69,7 +69,7 @@
</p>
</div>
<a name="phoenix.starter_kit.lazy_operators.first_practical_example"></a><h5>
-<a name="id776777"></a>
+<a name="id601571"></a>
<a class="link" href="lazy_operators.html#phoenix.starter_kit.lazy_operators.first_practical_example">First
Practical Example</a>
</h5>
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 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -32,7 +32,7 @@
World"</span></code>.
</p>
<a name="phoenix.starter_kit.values.lazy_evaluation"></a><h5>
-<a name="id775213"></a>
+<a name="id600007"></a>
<a class="link" href="values.html#phoenix.starter_kit.values.lazy_evaluation">Lazy Evaluation</a>
</h5>
<p>
@@ -64,7 +64,7 @@
anything and defers the evaluation for later.
</p>
<a name="phoenix.starter_kit.values.callbacks"></a><h5>
-<a name="id775438"></a>
+<a name="id600232"></a>
<a class="link" href="values.html#phoenix.starter_kit.values.callbacks">Callbacks</a>
</h5>
<p>
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 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -43,11 +43,11 @@
phoenix/modules/bind/binding_functions.html
phoenix/modules/bind/binding_member_functions.html
phoenix/modules/bind/binding_member_variables.html
-phoenix/modules/bind/compatibility_with_other_boost_bind.html
+phoenix/modules/bind/compatibility_with_boost_bind.html
phoenix/modules/stl.html
phoenix/modules/stl/container.html
phoenix/modules/stl/algorithm.html
-phoenix/modules/fusion.html
+phoenix/placeholder_unification.html
phoenix/inside.html
phoenix/inside/actor.html
phoenix/inside/expression.html
@@ -55,6 +55,8 @@
phoenix/inside/expression/phoenix_define_expression_vararg.html
phoenix/inside/expression/phoenix_define_expression_ext.html
phoenix/inside/expression/phoenix_define_expression_ext_vararg.html
-phoenix/inside/extending_actors.html
+phoenix/inside/actions.html
phoenix/inside/custom_terminals.html
-phoenix/inside/adding_expressions.html
+phoenix/examples.html
+phoenix/examples/extending_actors.html
+phoenix/examples/adding_an_expression.html
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside.qbk 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -16,11 +16,11 @@
[include inside/actor.qbk]
[include inside/expression.qbk]
-[include inside/extending_actors.qbk]
+[include inside/actions.qbk]
[section Custom Terminals]
[endsect]
-[section Adding Expressions]
-[endsect]
+[/section Adding Expressions]
+[/endsect]
[endsect]
Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actions.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actions.qbk 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,12 @@
+[/==============================================================================
+ 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:actions More on Actions]
+
+[endsect]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actor.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actor.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actor.qbk 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -157,7 +157,7 @@
};
For more Information on how to use the default_actions class and how to attach custom actions
-to the evaluation process, see the next sections.
+to the evaluation process, see [link phoenix.inside.actions more on actions].
[heading Evaluation]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/expression.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/expression.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/expression.qbk 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -54,7 +54,7 @@
You might have noticed the template template argument `Actor` used in
`expr_ext`. This can be a user supplied custom Actor adding other member
functions or objects than the default `actor` template. See
- [link phoenix.inside.extending_actors Extending Actors] for more details.
+ [link phoenix.examples.extending_actors Extending Actors] for more details.
]
[heading meta_grammar]
@@ -129,7 +129,7 @@
an expression having the `proto::tag::plus` and two children. This is because
`default_actions` uses the `proto::_default<meta_grammar>` transform to
evaluate operators and functions. Learn more about actions
- [link phoenix.inside.action here]
+ [link phoenix.inside.actions here]
]
[/section Boilerplate Macros]
@@ -180,17 +180,23 @@
namespace expression
{
template <typename A0, typename A1 ... typename AN>
- struct name;
+ struct name
+ : boost::phoenix::expr<
+ tag::name
+ , A0
+ , A1
+ ...
+ , AN
+ >
}
namespace rule
{
struct name
: boost::phoenix::expr<
- tag::name
- , child_grammar0
+ child_grammar0
, child_grammar1
- , ...
+ ...
, child_grammarN
>
{};
@@ -212,6 +218,13 @@
(meta_grammar) // Rhs
)
+ template <typename Lhs, typename Rhs>
+ typename plus<Lhs, Rhs>::type
+ plus(Lhs const & lhs, Rhs const & rhs)
+ {
+ return expression::plus<Lhs, Rhs>::make(lhs, rhs);
+ }
+
[endsect]
[section PHOENIX_DEFINE_EXPRESSION_VARARG]
@@ -222,15 +235,76 @@
necessary boilerplate to create Phoenix Expressions
[heading Synopsis]
+
+ PHOENIX_DEFINE_EXPRESSION_VARARG(
+ (namespace_seq)(name)
+ , (child_grammar0)
+ (child_grammar1)
+ ...
+ (child_grammarN)
+ , N
+ )
[heading Semantics]
+The above macro generates the necessary code for an expression `name` in
+namespace `namespace_seq`. `N` is the maximum number of variable children.
+All but the last elements in the grammar sequence are required children of
+the expression, and the last denotes a variable number of children. The number
+of children an expression of this kind can hold is therefor `N-1` plus the size of
+the sequence
+
+The macro should be used at global scope. `namespace_seq` shall be the sequence
+of namespaces under which the following symbols will be defined:
+
+ namespace tag
+ {
+ struct name;
+ }
+
+ namespace expression
+ {
+ template <typename A0, typename A1 ... typename AN>
+ struct name
+ : boost::phoenix::expr<
+ tag::name
+ , A0
+ , A1
+ ...
+ , AN
+ >
+ {};
+ }
+
+ namespace rule
+ {
+ struct name
+ : expression::name<
+ child_grammar0
+ , child_grammar1
+ ...
+ , proto::vararg<child_grammarN>
+ >
+ {};
+ }
+
[heading Header]
#include <boost/phoenix/core/expression.hpp>
[heading Example]
+ PHOENIX_DEFINE_EXPRESSION_VARARG(
+ (boost)(phoenix)(mem_fun_ptr)
+ , (meta_grammar) // Pointer to Object
+ (meta_grammar) // Member pointer
+ (meta_grammar) // Variable number of arguments
+ , PHOENIX_LIMIT
+ )
+
+This defines the member function pointer operator expression as described in
+[link phoenix.modules.operator operators].
+
[endsect]
[section PHOENIX_DEFINE_EXPRESSION_EXT]
@@ -241,15 +315,74 @@
necessary boilerplate to create Phoenix Expressions
[heading Synopsis]
+
+ PHOENIX_DEFINE_EXPRESSION_EXT(
+ actor
+ , (namespace_seq)(name)
+ , (child_grammar0)
+ (child_grammar1)
+ ...
+ (child_grammarN)
+ , N
+ )
[heading Semantics]
+The above macro generates the necessary code for an expression `name` in
+namespace `namespace_seq`. The sequence of `(child_grammarN)` declares how many
+children the expression will have and what `proto::grammar` they match.
+
+The macro should be used at global scope. `namespace_seq` shall be the sequence
+of namespaces under which the following symbols will be defined:
+
+ namespace tag
+ {
+ struct name;
+ }
+
+ namespace expression
+ {
+ template <typename A0, typename A1 ... typename AN>
+ struct name
+ : boost::phoenix::expr_ext<
+ actor
+ , tag::name
+ , A0
+ , A1
+ ...
+ , AN
+ >
+ }
+
+ namespace rule
+ {
+ struct name
+ : boost::phoenix::expr<
+ child_grammar0
+ , child_grammar1
+ ...
+ , child_grammarN
+ >
+ {};
+ }
+
+This macros also adds a specialization for `meta_grammar::case_<tag::name>`.
+
[heading Header]
#include <boost/phoenix/core/expression.hpp>
[heading Example]
+ PHOENIX_DEFINE_EXPRESSION_EXT(
+ if_actor
+ , (boost)(phoenix)(if_)
+ , (meta_grammar) // Cond
+ (meta_grammar) // Then
+ )
+
+This defines the if_ expression. The custom actor defines the `else_`.
+
[endsect]
[section PHOENIX_DEFINE_EXPRESSION_EXT_VARARG]
@@ -260,16 +393,69 @@
necessary boilerplate to create Phoenix Expressions
[heading Synopsis]
+
+ PHOENIX_DEFINE_EXPRESSION_EXT_VARARG(
+ actor
+ , (namespace_seq)(name)
+ , (child_grammar0)
+ (child_grammar1)
+ ...
+ (child_grammarN)
+ , N
+ )
[heading Semantics]
+The above macro generates the necessary code for an expression `name` in
+namespace `namespace_seq`. `N` is the maximum number of variable children.
+All but the last elements in the grammar sequence are required children of
+the expression, and the last denotes a variable number of children. The number
+of children an expression of this kind can hold is therefor `N-1` plus the size of
+the sequence
+
+The macro should be used at global scope. `namespace_seq` shall be the sequence
+of namespaces under which the following symbols will be defined:
+
+ namespace tag
+ {
+ struct name;
+ }
+
+ namespace expression
+ {
+ template <typename A0, typename A1 ... typename AN>
+ struct name
+ : boost::phoenix::expr_ext<
+ actor
+ , tag::name
+ , A0
+ , A1
+ ...
+ , AN
+ >
+ {};
+ }
+
+ namespace rule
+ {
+ struct name
+ : expression::name<
+ child_grammar0
+ , child_grammar1
+ ...
+ , proto::vararg<child_grammarN>
+ >
+ {};
+ }
+
[heading Header]
#include <boost/phoenix/core/expression.hpp>
[heading Example]
-[endsect]
+TBD
+[endsect]
[endsect]
Deleted: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/extending_actors.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/extending_actors.qbk 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
+++ (empty file)
@@ -1,177 +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 Extending Actors]
-
-[link phoenix.inside.actor Actors] are one of the main parts of the
-library, and one of the many customization points. The default actor implementation
-provides several operator() 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.modules.statement.___if_else_____statement '''if_else_'''
-Statement] which provides an additional else member for generating a lazy if-else
-expression. With this the actual Phoenix expression becomes more expressive.
-
-Another scenario 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 were 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 Defining the actor]
-
-The first version of our `container_actor` interface will show the general
-principle. This will be continually extended. For the sake of simplicity,
-every member function generator will return [link phoenix.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 ) {}
-
- expression::null<mpl::void_>::type const begin() const { return nothing; }
- expression::null<mpl::void_>::type const end() const { return nothing; }
- expression::null<mpl::void_>::type const size() const { return nothing; }
- expression::null<mpl::void_>::type const max_size() const { return nothing; }
- expression::null<mpl::void_>::type const empty() const { return nothing; }
-
- // Note that swap is the only function needing another container.
- template <typename Container>
- expression::null<mpl::void_>::type const swap( actor<Container> const& ) const { return nothing; }
- };
-
-[heading Using the actor]
-
-Although the member functions 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 let's test this:
-
- std::vector<int> v;
- v.push_back(0);
- v.push_back(1);
- v.push_back(2);
- v.push_back(3);
-
- (container(arg1).size())(v);
-
-Granted, this is not really elegant and not very practical (we could have just
-used phoenix::begin(v) from the [link phoenix.modules.stl.algorithm Phoenix algorithm module],
-but we can do better.
-
-Let's have an [link phoenix.modules.core.arguments argument placeholder]
-which is usable as if it was a STL container:
-
- container_actor<expression::argument<1>::type> const con1;
- // and so on ...
-
-The above example can be rewritten as:
-
- 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 life to the actor]
-
-This one will be even easier!
-
-First, we define a [link phoenix.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 expression::function<size_impl, that_type>::type const
- size() const
- {
- function<size_impl> const f = size_impl();
- return f(*this);
- }
-
- // the rest ...
- };
-
-It is left as an exercise to the user to implement the missing parts by reusing
-functions from the [link phoenix.modules.stl.algorithm Phoenix Algorithm Module]
-(the impatient take a look here: [@../../example/container_actor.cpp container_actor.cpp]).
-
-[endsect]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules.qbk 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -17,6 +17,6 @@
[include modules/scope.qbk]
[include modules/bind.qbk]
[include modules/stl.qbk]
-[include modules/fusion.qbk]
+[/include modules/fusion.qbk]
[endsect]
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/bind.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/bind.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/bind.qbk 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -105,7 +105,7 @@
[endsect]
-[section Compatibility with other Boost.Bind]
+[section Compatibility with Boost.Bind]
`phoenix::bind` passes all testcases of the Boost.Bind library. It is therefore
completely compatible and interchangeable.
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 2011-02-16 12:36:53 EST (Wed, 16 Feb 2011)
@@ -57,7 +57,10 @@
[include organisation.qbk]
[include actors.qbk]
[include modules.qbk]
+[section Placeholder Unification]
+[endsect]
[include inside.qbk]
+[include examples.qbk]
[/include advanced.qbk]
[/include reference.qbk]
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