Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r55587 - in trunk: boost/spirit/repository/home/karma/nonterminal boost/spirit/repository/home/qi/nonterminal libs/spirit/repository/doc/html libs/spirit/repository/doc/html/spirit_repository libs/spirit/repository/doc/html/spirit_repository/karma_components/directives libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal libs/spirit/repository/doc/html/spirit_repository/qi_components/directives libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive libs/spirit/repository/doc/karma libs/spirit/repository/doc/qi libs/spirit/repository/example/karma libs/spirit/repository/example/qi libs/spirit/repository/test/karma libs/spirit/repository/test/qi
From: frabar666_at_[hidden]
Date: 2009-08-14 17:14:03


Author: fbarel
Date: 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
New Revision: 55587
URL: http://svn.boost.org/trac/boost/changeset/55587

Log:
Spirit: no longer tie subrules to a skipper/delimiter type
Text files modified:
   trunk/boost/spirit/repository/home/karma/nonterminal/subrule.hpp | 46 +++++-------------------------------
   trunk/boost/spirit/repository/home/qi/nonterminal/subrule.hpp | 47 +++++--------------------------------
   trunk/libs/spirit/repository/doc/html/index.html | 4 +-
   trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives/karma_confix_generator.html | 18 +++++++-------
   trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal/subrule.html | 37 +++++++++++++++++-------------
   trunk/libs/spirit/repository/doc/html/spirit_repository/preface.html | 8 +++---
   trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/confix.html | 18 +++++++-------
   trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/distinct.html | 16 ++++++------
   trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal/subrule.html | 49 ++++++++++++++++++++++-----------------
   trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive/flush_multi_pass.html | 16 ++++++------
   trunk/libs/spirit/repository/doc/karma/subrule.qbk | 13 +++++++---
   trunk/libs/spirit/repository/doc/qi/subrule.qbk | 13 +++++++---
   trunk/libs/spirit/repository/example/karma/calc2_ast_dump_sr.cpp | 6 ++--
   trunk/libs/spirit/repository/example/qi/calc1_sr.cpp | 6 ++--
   trunk/libs/spirit/repository/example/qi/mini_xml2_sr.cpp | 10 ++++----
   trunk/libs/spirit/repository/test/karma/subrule.cpp | 20 ++++++++--------
   trunk/libs/spirit/repository/test/qi/subrule.cpp | 33 ++++----------------------
   17 files changed, 146 insertions(+), 214 deletions(-)

Modified: trunk/boost/spirit/repository/home/karma/nonterminal/subrule.hpp
==============================================================================
--- trunk/boost/spirit/repository/home/karma/nonterminal/subrule.hpp (original)
+++ trunk/boost/spirit/repository/home/karma/nonterminal/subrule.hpp 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -204,7 +204,6 @@
         {
             // compute context type for this subrule
             typedef typename Def::locals_type subrule_locals_type;
- typedef typename Def::delimiter_type subrule_delimiter_type;
             typedef typename Def::attr_type subrule_attr_type;
             typedef typename Def::attr_reference_type subrule_attr_reference_type;
             typedef typename Def::parameter_types subrule_parameter_types;
@@ -227,12 +226,7 @@
             // without passing values for them.
             context_type context(*this, make_attribute::call(attr));
 
- // If you are seeing a compilation error here stating that the
- // forth parameter can't be converted to a karma::reference
- // then you are probably trying to use a subrule with an
- // incompatible delimiter type.
- return call_binder<subrule_delimiter_type>(
- sink, context, delimiter, def.binder);
+ return def.binder(sink, context, delimiter);
         }
 
         template <typename Def, typename OutputIterator, typename Context
@@ -243,7 +237,6 @@
         {
             // compute context type for this subrule
             typedef typename Def::locals_type subrule_locals_type;
- typedef typename Def::delimiter_type subrule_delimiter_type;
             typedef typename Def::attr_type subrule_attr_type;
             typedef typename Def::attr_reference_type subrule_attr_reference_type;
             typedef typename Def::parameter_types subrule_parameter_types;
@@ -267,22 +260,7 @@
             context_type context(*this, make_attribute::call(attr)
               , params, caller_context);
 
- // If you are seeing a compilation error here stating that the
- // forth parameter can't be converted to a karma::reference
- // then you are probably trying to use a subrule with an
- // incompatible delimiter type.
- return call_binder<subrule_delimiter_type>(
- sink, context, delimiter, def.binder);
- }
-
- // wrapper to let the incoming delimiter be converted to the
- // delimiter type expected by the subrule being invoked
- template <typename Delimiter, typename OutputIterator
- , typename Context, typename Binder>
- bool call_binder(OutputIterator& sink, Context& context
- , Delimiter const& delimiter, Binder const& binder) const
- {
- return binder(sink, context, delimiter);
+ return def.binder(sink, context, delimiter);
         }
 
         template <typename Context>
@@ -306,7 +284,6 @@
     template <
         int ID_
       , typename Locals
- , typename Delimiter
       , typename Attr
       , typename AttrRef
       , typename Parameters
@@ -320,7 +297,6 @@
         BOOST_STATIC_CONSTANT(int, ID = ID_);
 
         typedef Locals locals_type;
- typedef Delimiter delimiter_type;
         typedef Attr attr_type;
         typedef AttrRef attr_reference_type;
         typedef Parameters parameter_types;
@@ -351,16 +327,15 @@
         int ID_
       , typename T1 = unused_type
       , typename T2 = unused_type
- , typename T3 = unused_type
>
     struct subrule
       : proto::extends<
             typename proto::terminal<
- spirit::karma::reference<subrule<ID_, T1, T2, T3> const>
+ spirit::karma::reference<subrule<ID_, T1, T2> const>
>::type
- , subrule<ID_, T1, T2, T3>
+ , subrule<ID_, T1, T2>
>
- , spirit::karma::generator<subrule<ID_, T1, T2, T3> >
+ , spirit::karma::generator<subrule<ID_, T1, T2> >
     {
         //FIXME should go fetch the real properties of this subrule's definition in the current context, but we don't
         // have the context here (properties would need to be 'template<typename Context> struct properties' instead)
@@ -370,24 +345,18 @@
         typedef mpl::int_<ID_> id_type;
         BOOST_STATIC_CONSTANT(int, ID = ID_);
 
- typedef subrule<ID_, T1, T2, T3> this_type;
+ typedef subrule<ID_, T1, T2> this_type;
         typedef spirit::karma::reference<this_type const> reference_;
         typedef typename proto::terminal<reference_>::type terminal;
         typedef proto::extends<terminal, this_type> base_type;
 
- typedef mpl::vector<T1, T2, T3> template_params;
+ typedef mpl::vector<T1, T2> template_params;
 
         // locals_type is a sequence of types to be used as local variables
         typedef typename
             spirit::detail::extract_locals<template_params>::type
         locals_type;
 
- // The delimiter-generator type
- typedef typename
- spirit::detail::extract_component<
- spirit::karma::domain, template_params>::type
- delimiter_type;
-
         typedef typename
             spirit::detail::extract_sig<template_params>::type
         sig_type;
@@ -428,7 +397,6 @@
             typedef subrule_definition<
                 ID_
               , locals_type
- , delimiter_type
               , attr_type
               , attr_reference_type
               , parameter_types

Modified: trunk/boost/spirit/repository/home/qi/nonterminal/subrule.hpp
==============================================================================
--- trunk/boost/spirit/repository/home/qi/nonterminal/subrule.hpp (original)
+++ trunk/boost/spirit/repository/home/qi/nonterminal/subrule.hpp 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -200,7 +200,6 @@
         {
             // compute context type for this subrule
             typedef typename Def::locals_type subrule_locals_type;
- typedef typename Def::skipper_type subrule_skipper_type;
             typedef typename Def::attr_type subrule_attr_type;
             typedef typename Def::attr_reference_type subrule_attr_reference_type;
             typedef typename Def::parameter_types subrule_parameter_types;
@@ -225,12 +224,7 @@
             // without passing values for them.
             context_type context(*this, attr_);
 
- // If you are seeing a compilation error here stating that the
- // forth parameter can't be converted to a qi::reference
- // then you are probably trying to use a subrule with an
- // incompatible skipper type.
- return call_binder<subrule_skipper_type>(
- first, last, context, skipper, def.binder);
+ return def.binder(first, last, context, skipper);
         }
 
         template <typename Def
@@ -243,7 +237,6 @@
         {
             // compute context type for this subrule
             typedef typename Def::locals_type subrule_locals_type;
- typedef typename Def::skipper_type subrule_skipper_type;
             typedef typename Def::attr_type subrule_attr_type;
             typedef typename Def::attr_reference_type subrule_attr_reference_type;
             typedef typename Def::parameter_types subrule_parameter_types;
@@ -268,23 +261,7 @@
             // passing values of incompatible types for them.
             context_type context(*this, attr_, params, caller_context);
 
- // If you are seeing a compilation error here stating that the
- // forth parameter can't be converted to a qi::reference
- // then you are probably trying to use a subrule with an
- // incompatible skipper type.
- return call_binder<subrule_skipper_type>(
- first, last, context, skipper, def.binder);
- }
-
- // wrapper to let the incoming skipper be converted to the
- // skipper type expected by the subrule being invoked
- template <typename Skipper, typename Iterator
- , typename Context, typename Binder>
- bool call_binder(Iterator& first, Iterator const& last
- , Context& context, Skipper const& skipper
- , Binder const& binder) const
- {
- return binder(first, last, context, skipper);
+ return def.binder(first, last, context, skipper);
         }
 
         template <typename Context>
@@ -308,7 +285,6 @@
     template <
         int ID_
       , typename Locals
- , typename Skipper
       , typename Attr
       , typename AttrRef
       , typename Parameters
@@ -322,7 +298,6 @@
         BOOST_STATIC_CONSTANT(int, ID = ID_);
 
         typedef Locals locals_type;
- typedef Skipper skipper_type;
         typedef Attr attr_type;
         typedef AttrRef attr_reference_type;
         typedef Parameters parameter_types;
@@ -353,38 +328,31 @@
         int ID_
       , typename T1 = unused_type
       , typename T2 = unused_type
- , typename T3 = unused_type
>
     struct subrule
       : proto::extends<
             typename proto::terminal<
- spirit::qi::reference<subrule<ID_, T1, T2, T3> const>
+ spirit::qi::reference<subrule<ID_, T1, T2> const>
>::type
- , subrule<ID_, T1, T2, T3>
+ , subrule<ID_, T1, T2>
>
- , spirit::qi::parser<subrule<ID_, T1, T2, T3> >
+ , spirit::qi::parser<subrule<ID_, T1, T2> >
     {
         typedef mpl::int_<ID_> id_type;
         BOOST_STATIC_CONSTANT(int, ID = ID_);
 
- typedef subrule<ID_, T1, T2, T3> this_type;
+ typedef subrule<ID_, T1, T2> this_type;
         typedef spirit::qi::reference<this_type const> reference_;
         typedef typename proto::terminal<reference_>::type terminal;
         typedef proto::extends<terminal, this_type> base_type;
 
- typedef mpl::vector<T1, T2, T3> template_params;
+ typedef mpl::vector<T1, T2> template_params;
 
         // locals_type is a sequence of types to be used as local variables
         typedef typename
             spirit::detail::extract_locals<template_params>::type
         locals_type;
 
- // The skip-parser type
- typedef typename
- spirit::detail::extract_component<
- spirit::qi::domain, template_params>::type
- skipper_type;
-
         typedef typename
             spirit::detail::extract_sig<template_params>::type
         sig_type;
@@ -424,7 +392,6 @@
             typedef subrule_definition<
                 ID_
               , locals_type
- , skipper_type
               , attr_type
               , attr_reference_type
               , parameter_types

Modified: trunk/libs/spirit/repository/doc/html/index.html
==============================================================================
--- trunk/libs/spirit/repository/doc/html/index.html (original)
+++ trunk/libs/spirit/repository/doc/html/index.html 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -34,7 +34,7 @@
 <div><p class="copyright">Copyright © 2001-2009 Joel
       de Guzman, Hartmut Kaiser</p></div>
 <div><div class="legalnotice" title="Legal Notice">
-<a name="id3095674"></a><p>
+<a name="id3124824"></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>
@@ -80,7 +80,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: August 14, 2009 at 16:19:31 GMT</small></p></td>
+<td align="left"><p><small>Last revised: August 14, 2009 at 20:59:13 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives/karma_confix_generator.html
==============================================================================
--- trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives/karma_confix_generator.html (original)
+++ trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives/karma_confix_generator.html 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -28,7 +28,7 @@
         Confix Generator</a>
 </h4></div></div></div>
 <a name="spirit_repository.karma_components.directives.karma_confix_generator.description"></a><h6>
-<a name="id3155583"></a>
+<a name="id3184629"></a>
           <a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.description">Description</a>
         </h6>
 <p>
@@ -93,20 +93,20 @@
           tag using a simple: <code class="computeroutput"><span class="identifier">ol</span><span class="special">[</span><span class="string">"Some text"</span><span class="special">]</span></code> (which results in <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">ol</span><span class="special">&gt;</span><span class="identifier">Some</span> <span class="identifier">text</span><span class="special">&lt;/</span><span class="identifier">ol</span><span class="special">&gt;</span></code>).
         </p>
 <a name="spirit_repository.karma_components.directives.karma_confix_generator.header"></a><h6>
-<a name="id3156719"></a>
+<a name="id3185765"></a>
           <a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.header">Header</a>
         </h6>
 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/repository/home/karma/directive/confix.hpp&gt;
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_confix</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit_repository.karma_components.directives.karma_confix_generator.synopsis"></a><h6>
-<a name="id3156822"></a>
+<a name="id3185868"></a>
           <a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.synopsis">Synopsis</a>
         </h6>
 <pre class="programlisting"><span class="identifier">confix</span><span class="special">(</span><span class="identifier">prefix</span><span class="special">,</span> <span class="identifier">suffix</span><span class="special">)[</span><span class="identifier">subject</span><span class="special">]</span>
 </pre>
 <a name="spirit_repository.karma_components.directives.karma_confix_generator.parameters"></a><h6>
-<a name="id3156889"></a>
+<a name="id3185937"></a>
           <a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.parameters">Parameters</a>
         </h6>
 <div class="informaltable"><table class="table">
@@ -175,7 +175,7 @@
           All three parameters can be arbitrary complex generators themselves.
         </p>
 <a name="spirit_repository.karma_components.directives.karma_confix_generator.attribute"></a><h6>
-<a name="id3157088"></a>
+<a name="id3186135"></a>
           <a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.attribute">Attribute</a>
         </h6>
 <p>
@@ -202,7 +202,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit_repository.karma_components.directives.karma_confix_generator.example"></a><h6>
-<a name="id3157327"></a>
+<a name="id3186374"></a>
           <a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.example">Example</a>
         </h6>
 <p>
@@ -211,7 +211,7 @@
           styles and a function prototype (for the full example code see here: confix.cpp)
         </p>
 <a name="spirit_repository.karma_components.directives.karma_confix_generator.prerequisites"></a><h6>
-<a name="id3157375"></a>
+<a name="id3186422"></a>
           <a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -249,7 +249,7 @@
 <p>
         </p>
 <a name="spirit_repository.karma_components.directives.karma_confix_generator.generating_different_comment_styles"></a><h6>
-<a name="id3157687"></a>
+<a name="id3186734"></a>
           <a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.generating_different_comment_styles">Generating
           Different Comment Styles</a>
         </h6>
@@ -301,7 +301,7 @@
           */</span> </code>.
         </p>
 <a name="spirit_repository.karma_components.directives.karma_confix_generator.generating_a_function_prototype"></a><h6>
-<a name="id3158070"></a>
+<a name="id3187117"></a>
           <a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.generating_a_function_prototype">Generating
           a Function Prototype</a>
         </h6>

Modified: trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal/subrule.html
==============================================================================
--- trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal/subrule.html (original)
+++ trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal/subrule.html 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -27,7 +27,7 @@
         Karma subrules</a>
 </h4></div></div></div>
 <a name="spirit_repository.karma_components.nonterminal.subrule.description"></a><h6>
-<a name="id3158498"></a>
+<a name="id3187545"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.description">Description</a>
         </h6>
 <p>
@@ -89,21 +89,21 @@
           parts), whereas the rest can use rules and grammars.
         </p>
 <a name="spirit_repository.karma_components.nonterminal.subrule.header"></a><h6>
-<a name="id3158846"></a>
+<a name="id3187893"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.header">Header</a>
         </h6>
 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/repository/home/karma/nonterminal/subrule.hpp&gt;
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_subrule</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit_repository.karma_components.nonterminal.subrule.synopsis__declaration_"></a><h6>
-<a name="id3158948"></a>
+<a name="id3187995"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.synopsis__declaration_">Synopsis
           (declaration)</a>
         </h6>
-<pre class="programlisting"><span class="identifier">subrule</span><span class="special">&lt;</span><span class="identifier">ID</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span><span class="special">&gt;</span> <span class="identifier">sr</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span>
+<pre class="programlisting"><span class="identifier">subrule</span><span class="special">&lt;</span><span class="identifier">ID</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">&gt;</span> <span class="identifier">sr</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span>
 </pre>
 <a name="spirit_repository.karma_components.nonterminal.subrule.parameters__declaration_"></a><h6>
-<a name="id3159046"></a>
+<a name="id3188083"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.parameters__declaration_">Parameters
           (declaration)</a>
         </h6>
@@ -141,14 +141,19 @@
 <tr>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">A1</span></code>, <code class="computeroutput"><span class="identifier">A2</span></code>, <code class="computeroutput"><span class="identifier">A3</span></code>
+ <code class="computeroutput"><span class="identifier">A1</span></code>, <code class="computeroutput"><span class="identifier">A2</span></code>
                 </p>
                 </td>
 <td>
                 <p>
                   Optional types, can be specified in any order. Can be one of 1.
- signature, 2. locals, 3. delimiter (see rules reference for more
- information on those parameters).
+ signature, 2. locals (see rules reference for more information
+ on those parameters).
+ </p>
+ <p>
+ Note that the delimiter type need not be specified in the parameters,
+ unlike with grammars and rules. Subrules will automatically use
+ the delimiter type which is in effect when they are invoked.
                 </p>
                 </td>
 </tr>
@@ -168,7 +173,7 @@
 </tbody>
 </table></div>
 <a name="spirit_repository.karma_components.nonterminal.subrule.synopsis__usage_"></a><h6>
-<a name="id3159208"></a>
+<a name="id3188243"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.synopsis__usage_">Synopsis
           (usage)</a>
         </h6>
@@ -197,7 +202,7 @@
 <span class="special">)(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">,</span> <span class="special">...)</span> <span class="comment">// Arguments to group, i.e. to start subrule srA
 </span></pre>
 <a name="spirit_repository.karma_components.nonterminal.subrule.parameters__usage_"></a><h6>
-<a name="id3159501"></a>
+<a name="id3188535"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.parameters__usage_">Parameters
           (usage)</a>
         </h6>
@@ -321,7 +326,7 @@
 </tbody>
 </table></div>
 <a name="spirit_repository.karma_components.nonterminal.subrule.groups"></a><h6>
-<a name="id3159879"></a>
+<a name="id3188914"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.groups">Groups</a>
         </h6>
 <p>
@@ -366,7 +371,7 @@
 </span><span class="special">;</span>
 </pre>
 <a name="spirit_repository.karma_components.nonterminal.subrule.attributes"></a><h6>
-<a name="id3160373"></a>
+<a name="id3189408"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.attributes">Attributes</a>
         </h6>
 <p>
@@ -395,7 +400,7 @@
           </li>
 </ul></div>
 <a name="spirit_repository.karma_components.nonterminal.subrule.locals"></a><h6>
-<a name="id3160483"></a>
+<a name="id3189517"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.locals">Locals</a>
         </h6>
 <p>
@@ -405,7 +410,7 @@
           refer to the subrule's locals, if present.
         </p>
 <a name="spirit_repository.karma_components.nonterminal.subrule.example"></a><h6>
-<a name="id3160533"></a>
+<a name="id3189567"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.example">Example</a>
         </h6>
 <p>
@@ -477,7 +482,7 @@
           <a href="../../../../../example/karma/mini_xml_karma_sr.cpp" target="_top">../../example/karma/mini_xml_karma_sr.cpp</a>
         </p>
 <a name="spirit_repository.karma_components.nonterminal.subrule.performance"></a><h6>
-<a name="id3161466"></a>
+<a name="id3190500"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.performance">Performance</a>
         </h6>
 <p>
@@ -488,7 +493,7 @@
           subrules is very similar, so performance is very similar too).
         </p>
 <a name="spirit_repository.karma_components.nonterminal.subrule.notes"></a><h6>
-<a name="id3161515"></a>
+<a name="id3190549"></a>
           <a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.notes">Notes</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/repository/doc/html/spirit_repository/preface.html
==============================================================================
--- trunk/libs/spirit/repository/doc/html/spirit_repository/preface.html (original)
+++ trunk/libs/spirit/repository/doc/html/spirit_repository/preface.html 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -27,7 +27,7 @@
 <a name="spirit_repository.preface"></a><a class="link" href="preface.html" title="Preface">Preface</a>
 </h2></div></div></div>
 <a name="spirit_repository.preface.the_spirit_repository"></a><h4>
-<a name="id3095715"></a>
+<a name="id3124865"></a>
       <a class="link" href="preface.html#spirit_repository.preface.the_spirit_repository">The Spirit
       Repository</a>
     </h4>
@@ -77,7 +77,7 @@
       core library.
     </p>
 <a name="spirit_repository.preface.how_to_use_this_manual"></a><h4>
-<a name="id3098197"></a>
+<a name="id3127347"></a>
       <a class="link" href="preface.html#spirit_repository.preface.how_to_use_this_manual">How to use
       this manual</a>
     </h4>
@@ -86,7 +86,7 @@
       icons precede some text to indicate:
     </p>
 <div class="table">
-<a name="id3098217"></a><p class="title"><b>Table 1. Icons</b></p>
+<a name="id3127367"></a><p class="title"><b>Table 1. Icons</b></p>
 <div class="table-contents"><table class="table" summary="Icons">
 <colgroup>
 <col>
@@ -207,7 +207,7 @@
       Tools</a>.
     </p>
 <a name="spirit_repository.preface.support"></a><h4>
-<a name="id3093952"></a>
+<a name="id3123102"></a>
       <a class="link" href="preface.html#spirit_repository.preface.support">Support</a>
     </h4>
 <p>

Modified: trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/confix.html
==============================================================================
--- trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/confix.html (original)
+++ trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/confix.html 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -28,7 +28,7 @@
         Qi Confix Parser Directive</a>
 </h4></div></div></div>
 <a name="spirit_repository.qi_components.directives.confix.description"></a><h6>
-<a name="id3144497"></a>
+<a name="id3173646"></a>
           <a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.description">Description</a>
         </h6>
 <p>
@@ -95,20 +95,20 @@
           </p></td></tr>
 </table></div>
 <a name="spirit_repository.qi_components.directives.confix.header"></a><h6>
-<a name="id3145454"></a>
+<a name="id3174604"></a>
           <a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.header">Header</a>
         </h6>
 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/repository/home/qi/directive/confix.hpp&gt;
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_confix</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit_repository.qi_components.directives.confix.synopsis"></a><h6>
-<a name="id3145554"></a>
+<a name="id3174704"></a>
           <a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.synopsis">Synopsis</a>
         </h6>
 <pre class="programlisting"><span class="identifier">confix</span><span class="special">(</span><span class="identifier">prefix</span><span class="special">,</span> <span class="identifier">suffix</span><span class="special">)[</span><span class="identifier">subject</span><span class="special">]</span>
 </pre>
 <a name="spirit_repository.qi_components.directives.confix.parameters"></a><h6>
-<a name="id3145622"></a>
+<a name="id3174771"></a>
           <a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.parameters">Parameters</a>
         </h6>
 <div class="informaltable"><table class="table">
@@ -172,7 +172,7 @@
           All three parameters can be arbitrarily complex parsers themselves.
         </p>
 <a name="spirit_repository.qi_components.directives.confix.attribute"></a><h6>
-<a name="id3145785"></a>
+<a name="id3174935"></a>
           <a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.attribute">Attribute</a>
         </h6>
 <p>
@@ -198,7 +198,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit_repository.qi_components.directives.confix.example"></a><h6>
-<a name="id3146097"></a>
+<a name="id3175247"></a>
           <a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.example">Example</a>
         </h6>
 <p>
@@ -208,7 +208,7 @@
           see confix.cpp)
         </p>
 <a name="spirit_repository.qi_components.directives.confix.prerequisites"></a><h6>
-<a name="id3146144"></a>
+<a name="id3175294"></a>
           <a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -251,7 +251,7 @@
 <p>
         </p>
 <a name="spirit_repository.qi_components.directives.confix.parsing_different_comment_styles"></a><h6>
-<a name="id3146667"></a>
+<a name="id3175817"></a>
           <a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.parsing_different_comment_styles">Parsing
           Different Comment Styles</a>
         </h6>
@@ -311,7 +311,7 @@
           This is a comment */</span> </code>".
         </p>
 <a name="spirit_repository.qi_components.directives.confix.parsing_tagged_data"></a><h6>
-<a name="id3147376"></a>
+<a name="id3176526"></a>
           <a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.parsing_tagged_data">Parsing
           Tagged Data</a>
         </h6>

Modified: trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/distinct.html
==============================================================================
--- trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/distinct.html (original)
+++ trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/distinct.html 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -28,7 +28,7 @@
         Qi Distinct Parser Directive</a>
 </h4></div></div></div>
 <a name="spirit_repository.qi_components.directives.distinct.description"></a><h6>
-<a name="id3147815"></a>
+<a name="id3176965"></a>
           <a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.description">Description</a>
         </h6>
 <p>
@@ -144,20 +144,20 @@
           above.
         </p>
 <a name="spirit_repository.qi_components.directives.distinct.header"></a><h6>
-<a name="id3149376"></a>
+<a name="id3178526"></a>
           <a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.header">Header</a>
         </h6>
 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/repository/home/qi/directive/distinct.hpp&gt;
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_distinct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit_repository.qi_components.directives.distinct.synopsis"></a><h6>
-<a name="id3149478"></a>
+<a name="id3178628"></a>
           <a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.synopsis">Synopsis</a>
         </h6>
 <pre class="programlisting"><span class="identifier">distinct</span><span class="special">(</span><span class="identifier">tail</span><span class="special">)[</span><span class="identifier">subject</span><span class="special">]</span>
 </pre>
 <a name="spirit_repository.qi_components.directives.distinct.parameters"></a><h6>
-<a name="id3149534"></a>
+<a name="id3178684"></a>
           <a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.parameters">Parameters</a>
         </h6>
 <div class="informaltable"><table class="table">
@@ -210,7 +210,7 @@
           All two parameters can be arbitrary complex parsers themselves.
         </p>
 <a name="spirit_repository.qi_components.directives.distinct.attribute"></a><h6>
-<a name="id3149652"></a>
+<a name="id3178801"></a>
           <a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.attribute">Attribute</a>
         </h6>
 <p>
@@ -224,7 +224,7 @@
 <pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--&gt;</span> <span class="identifier">distinct</span><span class="special">(</span><span class="identifier">b</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
 </pre>
 <a name="spirit_repository.qi_components.directives.distinct.example"></a><h6>
-<a name="id3149804"></a>
+<a name="id3178953"></a>
           <a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.example">Example</a>
         </h6>
 <p>
@@ -232,7 +232,7 @@
           parser. distinct.cpp)
         </p>
 <a name="spirit_repository.qi_components.directives.distinct.prerequisites"></a><h6>
-<a name="id3149847"></a>
+<a name="id3178997"></a>
           <a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -269,7 +269,7 @@
 <p>
         </p>
 <a name="spirit_repository.qi_components.directives.distinct.using_the_distinct_directive_to_match_keywords"></a><h6>
-<a name="id3150156"></a>
+<a name="id3179306"></a>
           <a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.using_the_distinct_directive_to_match_keywords">Using
           The Distinct Directive to Match keywords</a>
         </h6>

Modified: trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal/subrule.html
==============================================================================
--- trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal/subrule.html (original)
+++ trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal/subrule.html 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -28,7 +28,7 @@
         Qi subrules</a>
 </h4></div></div></div>
 <a name="spirit_repository.qi_components.nonterminal.subrule.description"></a><h6>
-<a name="id3151310"></a>
+<a name="id3180460"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.description">Description</a>
         </h6>
 <p>
@@ -101,21 +101,21 @@
           most performance-critical parts), whereas the rest can use rules and grammars.
         </p>
 <a name="spirit_repository.qi_components.nonterminal.subrule.header"></a><h6>
-<a name="id3151798"></a>
+<a name="id3180947"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.header">Header</a>
         </h6>
 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/repository/home/qi/nonterminal/subrule.hpp&gt;
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_subrule</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit_repository.qi_components.nonterminal.subrule.synopsis__declaration_"></a><h6>
-<a name="id3151900"></a>
+<a name="id3181050"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.synopsis__declaration_">Synopsis
           (declaration)</a>
         </h6>
-<pre class="programlisting"><span class="identifier">subrule</span><span class="special">&lt;</span><span class="identifier">ID</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span><span class="special">&gt;</span> <span class="identifier">sr</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span>
+<pre class="programlisting"><span class="identifier">subrule</span><span class="special">&lt;</span><span class="identifier">ID</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">&gt;</span> <span class="identifier">sr</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span>
 </pre>
 <a name="spirit_repository.qi_components.nonterminal.subrule.parameters__declaration_"></a><h6>
-<a name="id3151998"></a>
+<a name="id3181138"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.parameters__declaration_">Parameters
           (declaration)</a>
         </h6>
@@ -153,14 +153,19 @@
 <tr>
 <td>
                 <p>
- <code class="computeroutput"><span class="identifier">A1</span></code>, <code class="computeroutput"><span class="identifier">A2</span></code>, <code class="computeroutput"><span class="identifier">A3</span></code>
+ <code class="computeroutput"><span class="identifier">A1</span></code>, <code class="computeroutput"><span class="identifier">A2</span></code>
                 </p>
                 </td>
 <td>
                 <p>
                   Optional types, can be specified in any order. Can be one of 1.
- signature, 2. locals, 3. skipper (see rules reference for more
- information on those parameters).
+ signature, 2. locals (see rules reference for more information
+ on those parameters).
+ </p>
+ <p>
+ Note that the skipper type need not be specified in the parameters,
+ unlike with grammars and rules. Subrules will automatically use
+ the skipper type which is in effect when they are invoked.
                 </p>
                 </td>
 </tr>
@@ -180,7 +185,7 @@
 </tbody>
 </table></div>
 <a name="spirit_repository.qi_components.nonterminal.subrule.synopsis__usage_"></a><h6>
-<a name="id3152160"></a>
+<a name="id3181298"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.synopsis__usage_">Synopsis
           (usage)</a>
         </h6>
@@ -209,7 +214,7 @@
 <span class="special">)(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">,</span> <span class="special">...)</span> <span class="comment">// Arguments to group, i.e. to start subrule srA
 </span></pre>
 <a name="spirit_repository.qi_components.nonterminal.subrule.parameters__usage_"></a><h6>
-<a name="id3152455"></a>
+<a name="id3181592"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.parameters__usage_">Parameters
           (usage)</a>
         </h6>
@@ -333,7 +338,7 @@
 </tbody>
 </table></div>
 <a name="spirit_repository.qi_components.nonterminal.subrule.groups"></a><h6>
-<a name="id3152831"></a>
+<a name="id3181968"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.groups">Groups</a>
         </h6>
 <p>
@@ -378,7 +383,7 @@
 </span><span class="special">;</span>
 </pre>
 <a name="spirit_repository.qi_components.nonterminal.subrule.attributes"></a><h6>
-<a name="id3153333"></a>
+<a name="id3182471"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.attributes">Attributes</a>
         </h6>
 <p>
@@ -406,7 +411,7 @@
           </li>
 </ul></div>
 <a name="spirit_repository.qi_components.nonterminal.subrule.locals"></a><h6>
-<a name="id3153442"></a>
+<a name="id3182580"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.locals">Locals</a>
         </h6>
 <p>
@@ -416,7 +421,7 @@
           refer to the subrule's locals, if present.
         </p>
 <a name="spirit_repository.qi_components.nonterminal.subrule.example"></a><h6>
-<a name="id3153493"></a>
+<a name="id3182630"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.example">Example</a>
         </h6>
 <p>
@@ -498,11 +503,11 @@
 
     <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">&gt;</span> <span class="identifier">entry</span><span class="special">;</span>
 
- <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">0</span><span class="special">,</span> <span class="identifier">mini_xml</span><span class="special">(),</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">locals</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;,</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">&gt;</span> <span class="identifier">xml</span><span class="special">;</span>
- <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">1</span><span class="special">,</span> <span class="identifier">mini_xml_node</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">&gt;</span> <span class="identifier">node</span><span class="special">;</span>
- <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">&gt;</span> <span class="identifier">text</span><span class="special">;</span>
- <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">3</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">&gt;</span> <span class="identifier">start_tag</span><span class="special">;</span>
- <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">4</span><span class="special">,</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">&gt;</span> <span class="identifier">end_tag</span><span class="special">;</span>
+ <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">0</span><span class="special">,</span> <span class="identifier">mini_xml</span><span class="special">(),</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">locals</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">xml</span><span class="special">;</span>
+ <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">1</span><span class="special">,</span> <span class="identifier">mini_xml_node</span><span class="special">()&gt;</span> <span class="identifier">node</span><span class="special">;</span>
+ <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">()&gt;</span> <span class="identifier">text</span><span class="special">;</span>
+ <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">3</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">()&gt;</span> <span class="identifier">start_tag</span><span class="special">;</span>
+ <span class="identifier">repo</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">subrule</span><span class="special">&lt;</span><span class="number">4</span><span class="special">,</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">)&gt;</span> <span class="identifier">end_tag</span><span class="special">;</span>
 <span class="special">};</span>
 </pre>
 <p>
@@ -516,7 +521,7 @@
           <a href="../../../../../example/qi/mini_xml2_sr.cpp" target="_top">../../example/qi/mini_xml2_sr.cpp</a>
         </p>
 <a name="spirit_repository.qi_components.nonterminal.subrule.performance"></a><h6>
-<a name="id3155135"></a>
+<a name="id3184181"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.performance">Performance</a>
         </h6>
 <p>
@@ -524,7 +529,7 @@
           examples to subrules, with various compilers.
         </p>
 <div class="table">
-<a name="id3155155"></a><p class="title"><b>Table 2. Subrules performance</b></p>
+<a name="id3184201"></a><p class="title"><b>Table 2. Subrules performance</b></p>
 <div class="table-contents"><table class="table" summary="Subrules performance">
 <colgroup>
 <col>
@@ -771,7 +776,7 @@
           </li>
 </ul></div>
 <a name="spirit_repository.qi_components.nonterminal.subrule.notes"></a><h6>
-<a name="id3155501"></a>
+<a name="id3184547"></a>
           <a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.notes">Notes</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive/flush_multi_pass.html
==============================================================================
--- trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive/flush_multi_pass.html (original)
+++ trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive/flush_multi_pass.html 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -28,7 +28,7 @@
         Qi flush_multi_pass parser</a>
 </h4></div></div></div>
 <a name="spirit_repository.qi_components.primitive.flush_multi_pass.description"></a><h6>
-<a name="id3094066"></a>
+<a name="id3123216"></a>
           <a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.description">Description</a>
         </h6>
 <p>
@@ -53,20 +53,20 @@
           <code class="computeroutput"><span class="identifier">eps</span></code>).
         </p>
 <a name="spirit_repository.qi_components.primitive.flush_multi_pass.header"></a><h6>
-<a name="id3094236"></a>
+<a name="id3123386"></a>
           <a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.header">Header</a>
         </h6>
 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/repository/home/qi/primitive/flush_multi_pass.hpp&gt;
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_flush_multi_pass</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit_repository.qi_components.primitive.flush_multi_pass.synopsis"></a><h6>
-<a name="id3143143"></a>
+<a name="id3172292"></a>
           <a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.synopsis">Synopsis</a>
         </h6>
 <pre class="programlisting"><span class="identifier">flush_multi_pass</span>
 </pre>
 <a name="spirit_repository.qi_components.primitive.flush_multi_pass.parameters"></a><h6>
-<a name="id3143177"></a>
+<a name="id3172327"></a>
           <a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.parameters">Parameters</a>
         </h6>
 <p>
@@ -74,7 +74,7 @@
           not require any parameters.
         </p>
 <a name="spirit_repository.qi_components.primitive.flush_multi_pass.attribute"></a><h6>
-<a name="id3143215"></a>
+<a name="id3172365"></a>
           <a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.attribute">Attribute</a>
         </h6>
 <p>
@@ -84,7 +84,7 @@
 <pre class="programlisting"><span class="identifier">flush_multi_pass</span> <span class="special">--&gt;</span> <span class="identifier">unused</span>
 </pre>
 <a name="spirit_repository.qi_components.primitive.flush_multi_pass.example"></a><h6>
-<a name="id3143287"></a>
+<a name="id3172437"></a>
           <a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.example">Example</a>
         </h6>
 <p>
@@ -96,7 +96,7 @@
           a function prototype (for the full example code see here: flush_multi_pass.cpp)
         </p>
 <a name="spirit_repository.qi_components.primitive.flush_multi_pass.prerequisites"></a><h6>
-<a name="id3143336"></a>
+<a name="id3172486"></a>
           <a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -133,7 +133,7 @@
 <p>
         </p>
 <a name="spirit_repository.qi_components.primitive.flush_multi_pass.clearing_the_internal_buffer"></a><h6>
-<a name="id3143614"></a>
+<a name="id3172763"></a>
           <a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.clearing_the_internal_buffer">Clearing
           the internal buffer</a>
         </h6>

Modified: trunk/libs/spirit/repository/doc/karma/subrule.qbk
==============================================================================
--- trunk/libs/spirit/repository/doc/karma/subrule.qbk (original)
+++ trunk/libs/spirit/repository/doc/karma/subrule.qbk 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -51,7 +51,7 @@
 
 [heading Synopsis (declaration)]
 
- subrule<ID, A1, A2, A3> sr(name);
+ subrule<ID, A1, A2> sr(name);
 
 [heading Parameters (declaration)]
 
@@ -59,10 +59,15 @@
     [[Parameter] [Description]]
     [[`ID`] [Required numeric argument. Gives the subrule
                              a unique 'identification tag'.]]
- [[`A1`, `A2`, `A3`] [Optional types, can be specified in any order.
- Can be one of 1. signature, 2. locals, 3. delimiter
+ [[`A1`, `A2`] [Optional types, can be specified in any order.
+ Can be one of 1. signature, 2. locals
                              (see rules reference for more information on
- those parameters).]]
+ those parameters).
+
+ Note that the delimiter type need not be specified
+ in the parameters, unlike with grammars and rules.
+ Subrules will automatically use the delimiter type
+ which is in effect when they are invoked.]]
     [[`name`] [Optional string. Gives the subrule a name,
                              useful for debugging and error handling.]]
 ]

Modified: trunk/libs/spirit/repository/doc/qi/subrule.qbk
==============================================================================
--- trunk/libs/spirit/repository/doc/qi/subrule.qbk (original)
+++ trunk/libs/spirit/repository/doc/qi/subrule.qbk 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -51,7 +51,7 @@
 
 [heading Synopsis (declaration)]
 
- subrule<ID, A1, A2, A3> sr(name);
+ subrule<ID, A1, A2> sr(name);
 
 [heading Parameters (declaration)]
 
@@ -59,10 +59,15 @@
     [[Parameter] [Description]]
     [[`ID`] [Required numeric argument. Gives the subrule
                              a unique 'identification tag'.]]
- [[`A1`, `A2`, `A3`] [Optional types, can be specified in any order.
- Can be one of 1. signature, 2. locals, 3. skipper
+ [[`A1`, `A2`] [Optional types, can be specified in any order.
+ Can be one of 1. signature, 2. locals
                              (see rules reference for more information on
- those parameters).]]
+ those parameters).
+
+ Note that the skipper type need not be specified
+ in the parameters, unlike with grammars and rules.
+ Subrules will automatically use the skipper type
+ which is in effect when they are invoked.]]
     [[`name`] [Optional string. Gives the subrule a name,
                              useful for debugging and error handling.]]
 ]

Modified: trunk/libs/spirit/repository/example/karma/calc2_ast_dump_sr.cpp
==============================================================================
--- trunk/libs/spirit/repository/example/karma/calc2_ast_dump_sr.cpp (original)
+++ trunk/libs/spirit/repository/example/karma/calc2_ast_dump_sr.cpp 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -106,9 +106,9 @@
 
     karma::rule<OuputIterator, expression_ast(), space_type> entry;
 
- repo::karma::subrule<0, expression_ast(), space_type> ast_node;
- repo::karma::subrule<1, binary_op(), space_type> binary_node;
- repo::karma::subrule<2, unary_op(), space_type> unary_node;
+ repo::karma::subrule<0, expression_ast()> ast_node;
+ repo::karma::subrule<1, binary_op()> binary_node;
+ repo::karma::subrule<2, unary_op()> unary_node;
 };
 
 ///////////////////////////////////////////////////////////////////////////////

Modified: trunk/libs/spirit/repository/example/qi/calc1_sr.cpp
==============================================================================
--- trunk/libs/spirit/repository/example/qi/calc1_sr.cpp (original)
+++ trunk/libs/spirit/repository/example/qi/calc1_sr.cpp 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -62,9 +62,9 @@
 
         qi::rule<Iterator, ascii::space_type> entry;
 
- repo::qi::subrule<0, ascii::space_type> expression;
- repo::qi::subrule<1, ascii::space_type> term;
- repo::qi::subrule<2, ascii::space_type> factor;
+ repo::qi::subrule<0> expression;
+ repo::qi::subrule<1> term;
+ repo::qi::subrule<2> factor;
     };
 }
 

Modified: trunk/libs/spirit/repository/example/qi/mini_xml2_sr.cpp
==============================================================================
--- trunk/libs/spirit/repository/example/qi/mini_xml2_sr.cpp (original)
+++ trunk/libs/spirit/repository/example/qi/mini_xml2_sr.cpp 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -172,11 +172,11 @@
 
         qi::rule<Iterator, mini_xml(), ascii::space_type> entry;
 
- repo::qi::subrule<0, mini_xml(), qi::locals<std::string>, ascii::space_type> xml;
- repo::qi::subrule<1, mini_xml_node(), ascii::space_type> node;
- repo::qi::subrule<2, std::string(), ascii::space_type> text;
- repo::qi::subrule<3, std::string(), ascii::space_type> start_tag;
- repo::qi::subrule<4, void(std::string), ascii::space_type> end_tag;
+ repo::qi::subrule<0, mini_xml(), qi::locals<std::string> > xml;
+ repo::qi::subrule<1, mini_xml_node()> node;
+ repo::qi::subrule<2, std::string()> text;
+ repo::qi::subrule<3, std::string()> start_tag;
+ repo::qi::subrule<4, void(std::string)> end_tag;
     };
     //]
 }

Modified: trunk/libs/spirit/repository/test/karma/subrule.cpp
==============================================================================
--- trunk/libs/spirit/repository/test/karma/subrule.cpp (original)
+++ trunk/libs/spirit/repository/test/karma/subrule.cpp 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -66,7 +66,7 @@
     // basic tests with delimiter
     {
         rule<outiter_type, space_type> start;
- subrule<0, space_type> sr;
+ subrule<0> sr;
 
         start = (
             sr = char_[_1 = 'a'] << int_[_1 = 10] << double_[_1 = 12.4]
@@ -77,9 +77,9 @@
             sr = (char_ << int_ << double_)[_1 = 'a', _2 = 10, _3 = 12.4]
         ), space));
 
- subrule<1, space_type> a;
- subrule<2, space_type> b;
- subrule<3, space_type> c;
+ subrule<1> a;
+ subrule<2> b;
+ subrule<3> c;
 
         start = (
             sr = a << b << c
@@ -113,7 +113,7 @@
         typedef variant<char, int, double> var_type;
 
         rule<outiter_type, space_type, var_type()> start;
- subrule<0, space_type, var_type()> sr;
+ subrule<0, var_type()> sr;
 
         start %= (
             sr = (char_ | int_ | double_)[_1 = _r0]
@@ -178,7 +178,7 @@
 
     {
         rule<outiter_type, space_type, void(char, int, double)> start;
- subrule<0, space_type, void(char, int, double)> sr;
+ subrule<0, void(char, int, double)> sr;
 
         start = (
             sr = char_[_1 = _r1] << int_[_1 = _r2] << double_[_1 = _r3]
@@ -189,10 +189,10 @@
             sr = (char_ << int_ << double_)[_1 = _r1, _2 = _r2, _3 = _r3]
         )('a', 10, 12.4), space));
 
- subrule<1, space_type, void(char, int, double)> entry;
- subrule<2, space_type, void(char)> a;
- subrule<3, space_type, void(int)> b;
- subrule<4, space_type, void(double)> c;
+ subrule<1, void(char, int, double)> entry;
+ subrule<2, void(char)> a;
+ subrule<3, void(int)> b;
+ subrule<4, void(double)> c;
 
         start = (
             entry = a(_r1) << b(_r2) << c(_r3)

Modified: trunk/libs/spirit/repository/test/qi/subrule.cpp
==============================================================================
--- trunk/libs/spirit/repository/test/qi/subrule.cpp (original)
+++ trunk/libs/spirit/repository/test/qi/subrule.cpp 2009-08-14 17:14:01 EDT (Fri, 14 Aug 2009)
@@ -115,10 +115,10 @@
 
     { // basic tests w/ skipper, subrules declared const
 
- subrule<0, space_type> const entry("entry");
- subrule<1, space_type> const a("a");
- subrule<2, space_type> const b("b");
- subrule<3, space_type> const c("c");
+ subrule<0> const entry("entry");
+ subrule<1> const a("a");
+ subrule<2> const b("b");
+ subrule<3> const c("c");
         rule<char const*, space_type> start("start");
 
 // debug(entry);
@@ -145,30 +145,7 @@
 
         // no-ops
         a = a;
- subrule<1, space_type> aa(a);
- }
-
- { // skipper-type tests
-
- subrule<0> entry_noskip;
- subrule<0, space_type> entry_skip;
- subrule<1> a;
- subrule<2> b;
- subrule<3> c;
-
- // check subrules ignore the skipper
- BOOST_TEST(test(" xabcabcacb", 'x' >> (
- entry_noskip = *(a | b | c)
- , a = 'a'
- , b = 'b'
- , c = 'c'
- ), space));
- BOOST_TEST(!test(" x a b c a b c a c b ", 'x' >> (
- entry_skip = *(a | b | c)
- , a = 'a'
- , b = 'b'
- , c = 'c'
- ), space));
+ subrule<1> aa(a);
     }
 
     { // context tests


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