|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r75347 - in branches/quickbook-dev/tools/quickbook: src test/include
From: dnljms_at_[hidden]
Date: 2011-11-06 17:18:34
Author: danieljames
Date: 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
New Revision: 75347
URL: http://svn.boost.org/trac/boost/changeset/75347
Log:
Quickbook: Compatibility mode to make upgrading easier.
Added:
branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_1.gold (contents, props changed)
branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_1.quickbook (contents, props changed)
branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_5.gold (contents, props changed)
branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_5.quickbook (contents, props changed)
branches/quickbook-dev/tools/quickbook/test/include/compatibility-inc.qbk (contents, props changed)
Text files modified:
branches/quickbook-dev/tools/quickbook/src/actions.cpp | 54 ++++++++++++++++++++-------------------
branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp | 32 ++++++++++++++++++++++-
branches/quickbook-dev/tools/quickbook/src/doc_info_grammar.cpp | 10 ++++++
branches/quickbook-dev/tools/quickbook/src/doc_info_tags.hpp | 1
branches/quickbook-dev/tools/quickbook/src/id_manager.cpp | 53 +++++++++++++++++++++-----------------
branches/quickbook-dev/tools/quickbook/src/id_manager.hpp | 4 ++
branches/quickbook-dev/tools/quickbook/test/include/Jamfile.v2 | 2 +
7 files changed, 102 insertions(+), 54 deletions(-)
Modified: branches/quickbook-dev/tools/quickbook/src/actions.cpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/actions.cpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/actions.cpp 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -372,7 +372,16 @@
write_anchors(actions, actions.out);
- if (!generic && qbk_version_n < 103) // version 1.2 and below
+ if (!element_id.empty())
+ {
+ std::string anchor = actions.ids.add_id(
+ element_id.get_quickbook(),
+ id_category::explicit_id);
+
+ write_bridgehead(actions, level,
+ content.get_boostbook(), anchor, true);
+ }
+ else if (!generic && actions.ids.compatibility_version() < 103) // version 1.2 and below
{
// This generates the old id style if both the interpreting
// version and the generation version are less then 103u.
@@ -383,24 +392,17 @@
write_bridgehead(actions, level,
content.get_boostbook(), anchor, false);
+
}
else
{
- id_category::categories category =
- !element_id.empty() ?
- id_category::explicit_id :
- id_category::generated_heading;
-
- std::string id =
- !element_id.empty() ?
- element_id.get_quickbook() :
- detail::make_identifier(
- qbk_version_n >= 106 ?
- content.get_quickbook() :
- content.get_boostbook()
- );
-
- std::string anchor = actions.ids.add_id(id, category);
+ std::string anchor = actions.ids.add_id(
+ detail::make_identifier(
+ actions.ids.compatibility_version() >= 106 ?
+ content.get_quickbook() :
+ content.get_boostbook()
+ ),
+ id_category::generated_heading);
write_bridgehead(actions, level,
content.get_boostbook(), anchor, true);
@@ -1490,17 +1492,17 @@
bool has_title = !title.empty();
std::string table_id;
- if(qbk_version_n >= 105) {
- if(!element_id.empty()) {
- table_id = actions.ids.add_id(element_id, id_category::explicit_id);
- }
- else if(has_title) {
+
+ if (!element_id.empty()) {
+ table_id = actions.ids.add_id(element_id, id_category::explicit_id);
+ }
+ else if (has_title) {
+ if (actions.ids.compatibility_version() >= 105) {
table_id = actions.ids.add_id(detail::make_identifier(title), id_category::generated);
}
- }
- else if (has_title)
- {
- table_id = actions.ids.add_id("t", id_category::numbered);
+ else {
+ table_id = actions.ids.add_id("t", id_category::numbered);
+ }
}
// Emulating the old behaviour which used the width of the final
@@ -1590,7 +1592,7 @@
write_anchors(actions, actions.out);
- if (qbk_version_n < 103) // version 1.2 and below
+ if (actions.ids.compatibility_version() < 103) // version 1.2 and below
{
actions.out << content.get_boostbook();
}
Modified: branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/doc_info_actions.cpp 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -112,6 +112,7 @@
std::vector<value> copyrights = consume_multiple(values, doc_info_attributes::copyright);
value license = consume_last_single(values, doc_info_attributes::license, &duplicates);
std::vector<value> biblioids = consume_multiple(values, doc_info_attributes::biblioid);
+ value compatibility_mode = consume_last(values, doc_info_attributes::compatibility_mode, &duplicates);
// Skip over source-mode tags (already dealt with)
@@ -155,6 +156,7 @@
// Quickbook version
int qbk_major_version, qbk_minor_version;
+ unsigned compatibility_version;
if (qbk_version.empty())
{
@@ -176,7 +178,7 @@
qbk_version_n = ((unsigned) qbk_major_version * 100) +
(unsigned) qbk_minor_version;
}
-
+
if (qbk_version_n == 106)
{
detail::outwarn(actions.current_file->path,1)
@@ -193,12 +195,38 @@
<< std::endl;
++actions.error_count;
}
+
+ if (compatibility_mode.empty())
+ {
+ compatibility_version = qbk_version_n;
+ }
+ else
+ {
+ value_consumer values(compatibility_mode);
+ int compatibility_major_version = values.consume().get_int();
+ int compatibility_minor_version = values.consume().get_int();
+ values.finish();
+
+ compatibility_version = ((unsigned) compatibility_major_version * 100) +
+ (unsigned) compatibility_minor_version;
+
+ if (compatibility_version < 100 || compatibility_version > 106)
+ {
+ detail::outerr(actions.current_file->path,1)
+ << "Unknown compatibility version of quickbook: "
+ << qbk_major_version
+ << "."
+ << qbk_minor_version
+ << std::endl;
+ ++actions.error_count;
+ }
+ }
actions.current_file_tmp->version(qbk_version_n);
id_manager::start_file_info start_file_info =
actions.ids.start_file_with_docinfo(
- qbk_version_n, include_doc_id_, id_,
+ compatibility_version, include_doc_id_, id_,
actions.doc_title_qbk);
// if we're ignoring the document info, we're done.
Modified: branches/quickbook-dev/tools/quickbook/src/doc_info_grammar.cpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/doc_info_grammar.cpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/doc_info_grammar.cpp 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -70,7 +70,7 @@
doc_title, doc_simple, doc_phrase, doc_fallback,
doc_authors, doc_author,
doc_copyright, doc_copyright_holder,
- doc_source_mode, doc_biblioid,
+ doc_source_mode, doc_biblioid, doc_compatibility_mode,
quickbook_version, char_;
cl::uint_parser<int, 10, 4, 4> doc_copyright_year;
cl::symbols<> doc_types;
@@ -236,6 +236,14 @@
;
local.attribute_rules[doc_info_attributes::biblioid] = &local.doc_biblioid;
+
+ local.doc_compatibility_mode =
+ cl::uint_p [actions.values.entry(ph::arg1)]
+ >> '.'
+ >> uint2_t() [actions.values.entry(ph::arg1)]
+ ;
+
+ local.attribute_rules[doc_info_attributes::compatibility_mode] = &local.doc_compatibility_mode;
local.char_ =
cl::str_p("\\n") [actions.break_]
Modified: branches/quickbook-dev/tools/quickbook/src/doc_info_tags.hpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/doc_info_tags.hpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/doc_info_tags.hpp 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -36,6 +36,7 @@
((license)("license"))
((biblioid)("biblioid"))
((source_mode)("source-mode"))
+ ((compatibility_mode)("compatibility-mode"))
)
}
Modified: branches/quickbook-dev/tools/quickbook/src/id_manager.cpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/id_manager.cpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/id_manager.cpp 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -136,9 +136,9 @@
{
section_manager(
id_state& ids,
- unsigned qbk_version)
+ unsigned compatibility_version)
: ids(ids),
- qbk_version(qbk_version),
+ compatibility_version(compatibility_version),
level(0)
{}
@@ -148,7 +148,7 @@
virtual std::auto_ptr<section_manager> start_file(
bool have_docinfo,
- unsigned qbk_version,
+ unsigned compatibility_version,
std::string const& include_doc_id,
std::string const& id,
std::string const& title,
@@ -176,7 +176,7 @@
virtual void end_section() = 0;
id_state& ids;
- unsigned qbk_version;
+ unsigned compatibility_version;
int level;
boost::scoped_ptr<section_manager> parent;
};
@@ -188,7 +188,7 @@
namespace {
std::auto_ptr<section_manager> create_section_manager(
id_state& ids,
- unsigned qbk_version);
+ unsigned compatibility_version);
}
id_manager::id_manager()
@@ -205,7 +205,7 @@
std::string const& title)
{
boost::scoped_ptr<section_manager> new_section(
- current_section->start_file(false, current_section->qbk_version,
+ current_section->start_file(false, current_section->compatibility_version,
include_doc_id, id, title, 0, 0));
if (new_section) {
@@ -215,7 +215,7 @@
}
id_manager::start_file_info id_manager::start_file_with_docinfo(
- unsigned qbk_version,
+ unsigned compatibility_version,
std::string const& include_doc_id,
std::string const& id,
std::string const& title)
@@ -223,7 +223,7 @@
start_file_info result;
boost::scoped_ptr<section_manager> new_section(
- current_section->start_file(true, qbk_version,
+ current_section->start_file(true, compatibility_version,
include_doc_id, id, title,
&result.doc_id, &result.placeholder));
@@ -283,6 +283,11 @@
return process_ids(*state, xml);
}
+ unsigned id_manager::compatibility_version() const
+ {
+ return current_section->compatibility_version;
+ }
+
//
// normalize_id
//
@@ -345,8 +350,8 @@
{
section_manager_1_1(
id_state& ids,
- unsigned qbk_version)
- : section_manager(ids, qbk_version),
+ unsigned compatibility_version)
+ : section_manager(ids, compatibility_version),
doc_id(),
section_id(),
qualified_id()
@@ -354,7 +359,7 @@
virtual std::auto_ptr<section_manager> start_file(
bool have_docinfo,
- unsigned qbk_version,
+ unsigned compatibility_version,
std::string const& include_doc_id,
std::string const& id,
std::string const& title,
@@ -389,7 +394,7 @@
std::auto_ptr<section_manager> section_manager_1_1::start_file(
bool have_docinfo,
- unsigned qbk_version,
+ unsigned compatibility_version,
std::string const& include_doc_id,
std::string const& id,
std::string const& title,
@@ -410,7 +415,7 @@
if (have_docinfo) {
std::auto_ptr<section_manager> new_section_manager =
- create_section_manager(ids, qbk_version);
+ create_section_manager(ids, compatibility_version);
std::string initial_placeholder = new_section_manager->docinfo(
initial_doc_id, category);
if (placeholder) *placeholder = initial_placeholder;
@@ -460,7 +465,7 @@
std::string const& id,
id_category category)
{
- return qbk_version < 103 ?
+ return compatibility_version < 103 ?
ids.add_placeholder(section_id + "." + id, category)->to_string() :
add_id(id, category);
}
@@ -473,7 +478,7 @@
qualified_id += id;
section_id = id;
++level;
- return (qbk_version < 103u ?
+ return (compatibility_version < 103u ?
ids.add_placeholder(doc_id + "." + id, category) :
ids.add_placeholder(doc_id + "." + qualified_id, category))->to_string();
}
@@ -506,15 +511,15 @@
{
section_manager_1_6(
id_state& ids,
- unsigned qbk_version)
- : section_manager(ids, qbk_version),
+ unsigned compatibility_version)
+ : section_manager(ids, compatibility_version),
current_placeholder(0),
depth(0)
{}
virtual std::auto_ptr<section_manager> start_file(
bool have_docinfo,
- unsigned qbk_version,
+ unsigned compatibility_version,
std::string const& include_doc_id,
std::string const& id,
std::string const& title,
@@ -547,7 +552,7 @@
std::auto_ptr<section_manager> section_manager_1_6::start_file(
bool have_docinfo,
- unsigned qbk_version,
+ unsigned compatibility_version,
std::string const& include_doc_id,
std::string const& id,
std::string const& title,
@@ -568,7 +573,7 @@
if (doc_id_result) *doc_id_result = initial_doc_id;
std::auto_ptr<section_manager> new_section_manager =
- create_section_manager(ids, qbk_version);
+ create_section_manager(ids, compatibility_version);
std::string initial_placeholder = new_section_manager->docinfo(
initial_doc_id, category);
if (placeholder) *placeholder = initial_placeholder;
@@ -644,11 +649,11 @@
namespace {
std::auto_ptr<section_manager> create_section_manager(
id_state& ids,
- unsigned qbk_version)
+ unsigned compatibility_version)
{
- return std::auto_ptr<section_manager>(qbk_version < 106u ?
- (section_manager*)(new section_manager_1_1(ids, qbk_version)) :
- (section_manager*)(new section_manager_1_6(ids, qbk_version)));
+ return std::auto_ptr<section_manager>(compatibility_version < 106u ?
+ (section_manager*)(new section_manager_1_1(ids, compatibility_version)) :
+ (section_manager*)(new section_manager_1_6(ids, compatibility_version)));
}
}
Modified: branches/quickbook-dev/tools/quickbook/src/id_manager.hpp
==============================================================================
--- branches/quickbook-dev/tools/quickbook/src/id_manager.hpp (original)
+++ branches/quickbook-dev/tools/quickbook/src/id_manager.hpp 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -56,7 +56,7 @@
};
start_file_info start_file_with_docinfo(
- unsigned qbk_version,
+ unsigned compatibility_version,
std::string const& include_doc_id,
std::string const& id,
std::string const& title);
@@ -77,6 +77,8 @@
std::string add_anchor(std::string const&, id_category);
std::string replace_placeholders(std::string const&) const;
+
+ unsigned compatibility_version() const;
private:
boost::scoped_ptr<id_state> state;
boost::scoped_ptr<section_manager> current_section;
Modified: branches/quickbook-dev/tools/quickbook/test/include/Jamfile.v2
==============================================================================
--- branches/quickbook-dev/tools/quickbook/test/include/Jamfile.v2 (original)
+++ branches/quickbook-dev/tools/quickbook/test/include/Jamfile.v2 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -33,4 +33,6 @@
[ quickbook-error-test section-fail2 ]
[ quickbook-test in_section-1_5 ]
[ quickbook-test in_section-1_6 ]
+ [ quickbook-test compatibility-1_1 ]
+ [ quickbook-test compatibility-1_5 ]
;
Added: branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_1.gold
==============================================================================
--- (empty file)
+++ branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_1.gold 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<article id="compatibility" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+ <title>Test Compatibility Mode</title>
+ <section id="compatibility.outer">
+ <title>Outer</title>
+ <section id="test_compatibility_mode.inner">
+ <title>Inner</title>
+ <bridgehead renderas="sect4" id="test_compatibility_mode.outer.inner.h0">
+ <phrase id="test_compatibility_mode.outer.inner.header"/><link linkend="test_compatibility_mode.outer.inner.header">Header</link>
+ </bridgehead>
+ <bridgehead renderas="sect1" id="inner.heading1">
+ Heading1
+ </bridgehead>
+ <bridgehead renderas="sect4" id="test_compatibility_mode.outer.inner.h1">
+ <phrase id="test_compatibility_mode.outer.inner.x1"/><link linkend="test_compatibility_mode.outer.inner.x1">Header
+ with id</link>
+ </bridgehead>
+ <bridgehead renderas="sect1" id="test_compatibility_mode.outer.inner.h2">
+ <phrase id="test_compatibility_mode.outer.inner.x2"/><link linkend="test_compatibility_mode.outer.inner.x2">Heading1
+ with id</link>
+ </bridgehead>
+ <informaltable frame="all">
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <informaltable frame="all" id="test_compatibility_mode.outer.inner.withid">
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <table frame="all" id="test_compatibility_mode.outer.inner.t0">
+ <title>With Title</title>
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table frame="all" id="test_compatibility_mode.outer.inner.x">
+ <title>Id and Title</title>
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>
+ <section id="test_compatibility_mode.x">
+ <title>Inner with id</title>
+ </section>
+ </section>
+</article>
Added: branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_1.quickbook
==============================================================================
--- (empty file)
+++ branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_1.quickbook 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -0,0 +1,9 @@
+[article Test Compatibility Mode
+[quickbook 1.6]
+[compatibility-mode 1.1]
+[id compatibility]
+]
+
+[section Outer]
+[include compatibility-inc.qbk]
+[endsect]
Added: branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_5.gold
==============================================================================
--- (empty file)
+++ branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_5.gold 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<article id="compatibility" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+ <title>Test Compatibility Mode</title>
+ <section id="compatibility.outer">
+ <title><link linkend="compatibility.outer">Outer</link></title>
+ <section id="test_compatibility_mode.outer.inner">
+ <title><link linkend="test_compatibility_mode.outer.inner">Inner</link></title>
+ <bridgehead renderas="sect4" id="test_compatibility_mode.outer.inner.h0">
+ <phrase id="test_compatibility_mode.outer.inner.header"/><link linkend="test_compatibility_mode.outer.inner.header">Header</link>
+ </bridgehead>
+ <bridgehead renderas="sect1" id="test_compatibility_mode.outer.inner.h1">
+ <phrase id="test_compatibility_mode.outer.inner.heading1"/><link linkend="test_compatibility_mode.outer.inner.heading1">Heading1</link>
+ </bridgehead>
+ <bridgehead renderas="sect4" id="test_compatibility_mode.outer.inner.h2">
+ <phrase id="test_compatibility_mode.outer.inner.x1"/><link linkend="test_compatibility_mode.outer.inner.x1">Header
+ with id</link>
+ </bridgehead>
+ <bridgehead renderas="sect1" id="test_compatibility_mode.outer.inner.h3">
+ <phrase id="test_compatibility_mode.outer.inner.x2"/><link linkend="test_compatibility_mode.outer.inner.x2">Heading1
+ with id</link>
+ </bridgehead>
+ <informaltable frame="all">
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <informaltable frame="all" id="test_compatibility_mode.outer.inner.withid">
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <table frame="all" id="test_compatibility_mode.outer.inner.with_title">
+ <title>With Title</title>
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table frame="all" id="test_compatibility_mode.outer.inner.x">
+ <title>Id and Title</title>
+ <tgroup cols="1">
+ <thead>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>
+ <section id="test_compatibility_mode.outer.x">
+ <title><link linkend="test_compatibility_mode.outer.x">Inner with id</link></title>
+ </section>
+ </section>
+</article>
Added: branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_5.quickbook
==============================================================================
--- (empty file)
+++ branches/quickbook-dev/tools/quickbook/test/include/compatibility-1_5.quickbook 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -0,0 +1,9 @@
+[article Test Compatibility Mode
+[quickbook 1.6]
+[compatibility-mode 1.5]
+[id compatibility]
+]
+
+[section Outer]
+[include compatibility-inc.qbk]
+[endsect]
Added: branches/quickbook-dev/tools/quickbook/test/include/compatibility-inc.qbk
==============================================================================
--- (empty file)
+++ branches/quickbook-dev/tools/quickbook/test/include/compatibility-inc.qbk 2011-11-06 17:18:32 EST (Sun, 06 Nov 2011)
@@ -0,0 +1,31 @@
+[section Inner]
+
+[heading Header]
+
+[h1 Heading1]
+
+[heading:x1 Header with id]
+
+[h1:x2 Heading1 with id]
+
+[table
+[[]][[]]
+]
+
+[table:withid
+[[]][[]]
+]
+
+[table With Title
+[[]][[]]
+]
+
+[table:x Id and Title
+[[]][[]]
+]
+
+
+[endsect]
+
+[section:x Inner with id]
+[endsect]
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