[/==============================================================================
    Copyright (C) 2001-2010 Hartmut Kaiser
    Copyright (C) 2001-2010 Joel de Guzman

    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 Module]

[heading Module Headers]

    #include <boost/spirit/xxx.hpp>

Also, see __include_structure__.

[/------------------------------------------------------------------------------]
[section XXX]

[heading Description]

Description of XXX

[heading Header]

    #include <boost/spirit/xxx.hpp>

    ...

Also, see __include_structure__.

[heading Namespace]

[table
    [[Name]]
    [[`boost::spirit::xx`]]
]

[heading Synopsis]

    template <typename T>
    struct XXX;

[heading Template parameters]

[table
    [[Parameter]            [Description]               [Default]]
    [[`T`]                  [What is T]                 []]
]

[heading Model of]

[variablelist Notation
    [[`xxx`]     [An XXX]]
]

[heading Expression Semantics]

Semantics of an expression is defined only where it differs from, or is not
defined in _concept-of_XXX_.

[table
    [[Expression]       [Semantics]]
    [[`xxx`]            [Semantics of `xxx`]]
]

[heading Attributes]

See __qi_comp_attr_notation__.

[table
    [[Expression]       [Attribute]]
    [[`xxx`]            [Attribute of `xxx`]]
]

[heading Complexity]

Big-O complexity of the parser

[heading Example]

Real example code. Use Quickbook import mechanism to link to actual
working code snippets here.

[endsect] [/ XXX]

[endsect] [/ Module]
