Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r55007 - in trunk/libs/spirit: benchmarks benchmarks/karma doc/html doc/html/spirit doc/html/spirit/abstracts doc/html/spirit/karma/performance_measurements/numeric_performance doc/html/spirit/karma/quick_reference doc/html/spirit/karma/reference/generator_concepts doc/html/spirit/karma/tutorials doc/html/spirit/lex doc/html/spirit/lex/abstracts doc/html/spirit/lex/abstracts/lexer_primitives doc/html/spirit/lex/reference doc/html/spirit/lex/reference/concepts doc/html/spirit/lex/tutorials doc/html/spirit/qi doc/html/spirit/qi/quick_reference doc/html/spirit/qi/reference doc/html/spirit/qi/reference/parser_concepts doc/html/spirit/qi/string doc/html/spirit/qi/tutorials doc/html/spirit/support doc/karma example/karma
From: hartmut.kaiser_at_[hidden]
Date: 2009-07-17 23:30:35


Author: hkaiser
Date: 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
New Revision: 55007
URL: http://svn.boost.org/trac/boost/changeset/55007

Log:
Spirit: moved benchmarks to separate directory, added more Karma benchmarks
Added:
   trunk/libs/spirit/benchmarks/
   trunk/libs/spirit/benchmarks/high_resolution_timer.hpp (contents, props changed)
   trunk/libs/spirit/benchmarks/karma/
   trunk/libs/spirit/benchmarks/karma/CMakeLists.txt (contents, props changed)
   trunk/libs/spirit/benchmarks/karma/Jamfile (contents, props changed)
   trunk/libs/spirit/benchmarks/karma/double_performance.cpp (contents, props changed)
   trunk/libs/spirit/benchmarks/karma/format_performance.cpp (contents, props changed)
   trunk/libs/spirit/benchmarks/karma/int_generator.cpp (contents, props changed)
   trunk/libs/spirit/benchmarks/karma/real_generator.cpp (contents, props changed)
Removed:
   trunk/libs/spirit/example/karma/double_performance.cpp
   trunk/libs/spirit/example/karma/format_performance.cpp
   trunk/libs/spirit/example/karma/high_resolution_timer.hpp
Text files modified:
   trunk/libs/spirit/doc/html/index.html | 4 ++--
   trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html | 8 ++++----
   trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html | 10 +++++-----
   trunk/libs/spirit/doc/html/spirit/acknowledgments.html | 2 +-
   trunk/libs/spirit/doc/html/spirit/faq.html | 4 ++--
   trunk/libs/spirit/doc/html/spirit/introduction.html | 12 ++++++------
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html | 4 ++--
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html | 4 ++--
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html | 2 +-
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html | 12 ++++++------
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html | 10 +++++-----
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html | 12 ++++++------
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html | 10 +++++-----
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html | 12 ++++++------
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html | 2 +-
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html | 2 +-
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html | 10 +++++-----
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html | 6 +++---
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html | 10 +++++-----
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html | 6 +++---
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html | 4 ++--
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html | 4 ++--
   trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html | 6 +++---
   trunk/libs/spirit/doc/html/spirit/lex/reference/concepts/lexer.html | 6 +++---
   trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html | 8 ++++----
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html | 10 +++++-----
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html | 8 ++++----
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html | 8 ++++----
   trunk/libs/spirit/doc/html/spirit/preface.html | 18 +++++++++---------
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html | 2 +-
   trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html | 4 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/char_.html | 6 +++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html | 12 ++++++------
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html | 12 ++++++------
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html | 10 +++++-----
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html | 10 +++++-----
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html | 12 ++++++------
   trunk/libs/spirit/doc/html/spirit/qi/string.html | 2 +-
   trunk/libs/spirit/doc/html/spirit/qi/string/lit_string.html | 14 +++++++-------
   trunk/libs/spirit/doc/html/spirit/qi/string/symbols.html | 16 ++++++++--------
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html | 14 +++++++-------
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html | 22 +++++++++++-----------
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html | 6 +++---
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html | 2 +-
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html | 8 ++++----
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html | 2 +-
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html | 10 +++++-----
   trunk/libs/spirit/doc/html/spirit/support/multi_pass.html | 28 ++++++++++++++--------------
   trunk/libs/spirit/doc/html/spirit/what_s_new.html | 8 ++++----
   trunk/libs/spirit/doc/karma/numeric_performance.qbk | 8 ++++----
   trunk/libs/spirit/example/karma/CMakeLists.txt | 3 ---
   trunk/libs/spirit/example/karma/Jamfile | 3 ---
   52 files changed, 211 insertions(+), 217 deletions(-)

Added: trunk/libs/spirit/benchmarks/high_resolution_timer.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/benchmarks/high_resolution_timer.hpp 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -0,0 +1,320 @@
+// Copyright (c) 2005-2009 Hartmut Kaiser
+//
+// 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)
+
+#if !defined(HIGH_RESOLUTION_TIMER_MAR_24_2008_1222PM)
+#define HIGH_RESOLUTION_TIMER_MAR_24_2008_1222PM
+
+#include <boost/config.hpp>
+#include <boost/throw_exception.hpp>
+
+#if defined(BOOST_HAS_UNISTD_H)
+#include <unistd.h>
+#endif
+#include <time.h>
+
+#if defined(BOOST_WINDOWS)
+
+#include <stdexcept>
+#include <limits>
+#include <windows.h>
+
+namespace util
+{
+ ///////////////////////////////////////////////////////////////////////////////
+ //
+ // high_resolution_timer
+ // A timer object measures elapsed time.
+ // CAUTION: Windows only!
+ //
+ ///////////////////////////////////////////////////////////////////////////////
+ class high_resolution_timer
+ {
+ public:
+ high_resolution_timer()
+ {
+ restart();
+ }
+
+ high_resolution_timer(double t)
+ {
+ LARGE_INTEGER frequency;
+ if (!QueryPerformanceFrequency(&frequency))
+ boost::throw_exception(std::runtime_error("Couldn't acquire frequency"));
+
+ start_time.QuadPart = (LONGLONG)(t * frequency.QuadPart);
+ }
+
+ high_resolution_timer(high_resolution_timer const& rhs)
+ : start_time(rhs.start_time)
+ {
+ }
+
+ static double now()
+ {
+ SYSTEMTIME st;
+ GetSystemTime(&st);
+
+ FILETIME ft;
+ SystemTimeToFileTime(&st, &ft);
+
+ LARGE_INTEGER now;
+ now.LowPart = ft.dwLowDateTime;
+ now.HighPart = ft.dwHighDateTime;
+
+ // FileTime is in 100ns increments, result needs to be in [s]
+ return now.QuadPart * 1e-7;
+ }
+
+ void restart()
+ {
+ if (!QueryPerformanceCounter(&start_time))
+ boost::throw_exception(std::runtime_error("Couldn't initialize start_time"));
+ }
+ double elapsed() const // return elapsed time in seconds
+ {
+ LARGE_INTEGER now;
+ if (!QueryPerformanceCounter(&now))
+ boost::throw_exception(std::runtime_error("Couldn't get current time"));
+
+ LARGE_INTEGER frequency;
+ if (!QueryPerformanceFrequency(&frequency))
+ boost::throw_exception(std::runtime_error("Couldn't acquire frequency"));
+
+ return double(now.QuadPart - start_time.QuadPart) / frequency.QuadPart;
+ }
+
+ double elapsed_max() const // return estimated maximum value for elapsed()
+ {
+ LARGE_INTEGER frequency;
+ if (!QueryPerformanceFrequency(&frequency))
+ boost::throw_exception(std::runtime_error("Couldn't acquire frequency"));
+
+ return double((std::numeric_limits<LONGLONG>::max)() - start_time.QuadPart) /
+ double(frequency.QuadPart);
+ }
+
+ double elapsed_min() const // return minimum value for elapsed()
+ {
+ LARGE_INTEGER frequency;
+ if (!QueryPerformanceFrequency(&frequency))
+ boost::throw_exception(std::runtime_error("Couldn't acquire frequency"));
+
+ return 1.0 / frequency.QuadPart;
+ }
+
+ private:
+ LARGE_INTEGER start_time;
+ };
+
+} // namespace util
+
+#elif defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0 && defined(_POSIX_THREAD_CPUTIME)
+
+#if _POSIX_THREAD_CPUTIME > 0 // timer always supported
+
+namespace util
+{
+
+ ///////////////////////////////////////////////////////////////////////////////
+ //
+ // high_resolution_timer
+ // A timer object measures elapsed time.
+ //
+ ///////////////////////////////////////////////////////////////////////////////
+ class high_resolution_timer
+ {
+ public:
+ high_resolution_timer()
+ {
+ start_time.tv_sec = 0;
+ start_time.tv_nsec = 0;
+
+ restart();
+ }
+
+ high_resolution_timer(double t)
+ {
+ start_time.tv_sec = time_t(t);
+ start_time.tv_nsec = (t - start_time.tv_sec) * 1e9;
+ }
+
+ high_resolution_timer(high_resolution_timer const& rhs)
+ : start_time(rhs.start_time)
+ {
+ }
+
+ static double now()
+ {
+ timespec now;
+ if (-1 == clock_gettime(CLOCK_REALTIME, &now))
+ boost::throw_exception(std::runtime_error("Couldn't get current time"));
+ return double(now.tv_sec) + double(now.tv_nsec) * 1e-9;
+ }
+
+ void restart()
+ {
+ if (-1 == clock_gettime(CLOCK_REALTIME, &start_time))
+ boost::throw_exception(std::runtime_error("Couldn't initialize start_time"));
+ }
+ double elapsed() const // return elapsed time in seconds
+ {
+ timespec now;
+ if (-1 == clock_gettime(CLOCK_REALTIME, &now))
+ boost::throw_exception(std::runtime_error("Couldn't get current time"));
+
+ if (now.tv_sec == start_time.tv_sec)
+ return double(now.tv_nsec - start_time.tv_nsec) * 1e-9;
+
+ return double(now.tv_sec - start_time.tv_sec) +
+ (double(now.tv_nsec - start_time.tv_nsec) * 1e-9);
+ }
+
+ double elapsed_max() const // return estimated maximum value for elapsed()
+ {
+ return double((std::numeric_limits<time_t>::max)() - start_time.tv_sec);
+ }
+
+ double elapsed_min() const // return minimum value for elapsed()
+ {
+ timespec resolution;
+ if (-1 == clock_getres(CLOCK_REALTIME, &resolution))
+ boost::throw_exception(std::runtime_error("Couldn't get resolution"));
+ return double(resolution.tv_sec + resolution.tv_nsec * 1e-9);
+ }
+
+ private:
+ timespec start_time;
+ };
+
+} // namespace util
+
+#else // _POSIX_THREAD_CPUTIME > 0
+
+#include <boost/timer.hpp>
+
+// availability of high performance timers must be checked at runtime
+namespace util
+{
+ ///////////////////////////////////////////////////////////////////////////////
+ //
+ // high_resolution_timer
+ // A timer object measures elapsed time.
+ //
+ ///////////////////////////////////////////////////////////////////////////////
+ class high_resolution_timer
+ {
+ public:
+ high_resolution_timer()
+ : use_backup(sysconf(_SC_THREAD_CPUTIME) <= 0)
+ {
+ if (!use_backup) {
+ start_time.tv_sec = 0;
+ start_time.tv_nsec = 0;
+ }
+ restart();
+ }
+
+ high_resolution_timer(double t)
+ : use_backup(sysconf(_SC_THREAD_CPUTIME) <= 0)
+ {
+ if (!use_backup) {
+ start_time.tv_sec = time_t(t);
+ start_time.tv_nsec = (t - start_time.tv_sec) * 1e9;
+ }
+ }
+
+ high_resolution_timer(high_resolution_timer const& rhs)
+ : use_backup(sysconf(_SC_THREAD_CPUTIME) <= 0),
+ start_time(rhs.start_time)
+ {
+ }
+
+ static double now()
+ {
+ if (sysconf(_SC_THREAD_CPUTIME) <= 0)
+ return double(std::clock());
+
+ timespec now;
+ if (-1 == clock_gettime(CLOCK_REALTIME, &now))
+ boost::throw_exception(std::runtime_error("Couldn't get current time"));
+ return double(now.tv_sec) + double(now.tv_nsec) * 1e-9;
+ }
+
+ void restart()
+ {
+ if (use_backup)
+ start_time_backup.restart();
+ else if (-1 == clock_gettime(CLOCK_REALTIME, &start_time))
+ boost::throw_exception(std::runtime_error("Couldn't initialize start_time"));
+ }
+ double elapsed() const // return elapsed time in seconds
+ {
+ if (use_backup)
+ return start_time_backup.elapsed();
+
+ timespec now;
+ if (-1 == clock_gettime(CLOCK_REALTIME, &now))
+ boost::throw_exception(std::runtime_error("Couldn't get current time"));
+
+ if (now.tv_sec == start_time.tv_sec)
+ return double(now.tv_nsec - start_time.tv_nsec) * 1e-9;
+
+ return double(now.tv_sec - start_time.tv_sec) +
+ (double(now.tv_nsec - start_time.tv_nsec) * 1e-9);
+ }
+
+ double elapsed_max() const // return estimated maximum value for elapsed()
+ {
+ if (use_backup)
+ start_time_backup.elapsed_max();
+
+ return double((std::numeric_limits<time_t>::max)() - start_time.tv_sec);
+ }
+
+ double elapsed_min() const // return minimum value for elapsed()
+ {
+ if (use_backup)
+ start_time_backup.elapsed_min();
+
+ timespec resolution;
+ if (-1 == clock_getres(CLOCK_REALTIME, &resolution))
+ boost::throw_exception(std::runtime_error("Couldn't get resolution"));
+ return double(resolution.tv_sec + resolution.tv_nsec * 1e-9);
+ }
+
+ private:
+ bool use_backup;
+ timespec start_time;
+ boost::timer start_time_backup;
+ };
+
+} // namespace util
+
+#endif // _POSIX_THREAD_CPUTIME > 0
+
+#else // !defined(BOOST_WINDOWS) && (!defined(_POSIX_TIMERS)
+ // || _POSIX_TIMERS <= 0
+ // || !defined(_POSIX_THREAD_CPUTIME)
+ // || _POSIX_THREAD_CPUTIME <= 0)
+
+// For platforms other than Windows or Linux, simply fall back to boost::timer
+#include <boost/timer.hpp>
+
+namespace util
+{
+ struct high_resolution_timer
+ : boost::timer
+ {
+ static double now()
+ {
+ return double(std::clock());
+ }
+ };
+}
+
+#endif
+
+#endif
+

Added: trunk/libs/spirit/benchmarks/karma/CMakeLists.txt
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/benchmarks/karma/CMakeLists.txt 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -0,0 +1,15 @@
+#==============================================================================
+# Copyright (c) 2001-2009 Joel de Guzman
+# Copyright (c) 2001-2009 Hartmut Kaiser
+#
+# 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)
+#==============================================================================
+
+# performance tests
+boost_add_executable(int_generator)
+boost_add_executable(real_generator)
+boost_add_executable(format_performance)
+boost_add_executable(format_performance)
+
+

Added: trunk/libs/spirit/benchmarks/karma/Jamfile
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/benchmarks/karma/Jamfile 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -0,0 +1,14 @@
+#==============================================================================
+# Copyright (c) 2001-2009 Joel de Guzman
+# Copyright (c) 2001-2009 Hartmut Kaiser
+#
+# 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)
+#==============================================================================
+project spirit-karma-benchmark ;
+
+# performance tests
+exe int_generator : int_generator.cpp ;
+exe real_generator : real_generator.cpp ;
+exe double_performance : double_performance.cpp ;
+exe double_performance : double_performance.cpp ;

Added: trunk/libs/spirit/benchmarks/karma/double_performance.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/benchmarks/karma/double_performance.cpp 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -0,0 +1,169 @@
+// Copyright (c) 2002-2009 Joel Hartmut Kaiser
+// Copyright (c) 2002-2009 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)
+
+#include <boost/config/warning_disable.hpp>
+#include <boost/spirit/include/karma.hpp>
+#include <boost/format.hpp>
+
+#include <iostream>
+
+#include "../high_resolution_timer.hpp"
+
+#define NUMITERATIONS 1000000
+
+///////////////////////////////////////////////////////////////////////////////
+// We generate plain floating point numbers in this test
+//[karma_double_performance_definitions
+using boost::spirit::karma::double_;
+//]
+
+void format_performance_karma()
+{
+ using boost::spirit::karma::generate;
+
+ //[karma_double_performance_plain
+ char buffer[256];
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ char *p = buffer;
+ generate(p, double_, 12345.12345);
+ *p = '\0';
+ }
+ //]
+
+ std::cout << "karma: " << t.elapsed() << std::endl;
+// std::cout << buffer << std::endl;
+}
+
+void format_performance_rule()
+{
+ using boost::spirit::karma::generate;
+
+ boost::spirit::karma::rule<char*, double()> r;
+
+ //[karma_double_performance_rule
+ char buffer[256];
+ r %= double_;
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ char *p = buffer;
+ generate(p, r, 12345.12345);
+ *p = '\0';
+ }
+ //]
+
+ std::cout << "karma (rule): " << t.elapsed() << std::endl;
+// std::cout << buffer << std::endl;
+}
+
+void format_performance_direct()
+{
+ using boost::spirit::karma::generate;
+ using boost::spirit::karma::real_inserter;
+
+ //[karma_double_performance_direct
+ typedef real_inserter<double> inserter;
+ char buffer[256];
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ char *p = buffer;
+ inserter::call(p, 12345.12345);
+ *p = '\0';
+ }
+ //]
+
+ std::cout << "karma (direct): " << t.elapsed() << std::endl;
+// std::cout << buffer << std::endl;
+}
+
+void format_performance_string()
+{
+ using boost::spirit::karma::generate;
+
+ //[karma_double_performance_string
+ std::string generated;
+ std::back_insert_iterator<std::string> sink(generated);
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ generated.clear();
+ generate(sink, double_, 12345.12345);
+ }
+ //]
+
+ std::cout << "karma (string): " << t.elapsed() << std::endl;
+// std::cout << generated << std::endl;
+}
+
+// Boost.Format
+void format_performance_boost_format()
+{
+ //[karma_double_performance_format
+ std::string generated;
+ boost::format double_format("%f");
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i)
+ generated = boost::str(double_format % 12345.12345);
+ //]
+
+ std::cout << "format: " << t.elapsed() << std::endl;
+// std::cout << strm.str() << std::endl;
+}
+
+void format_performance_printf()
+{
+ util::high_resolution_timer t;
+
+ //[karma_double_performance_printf
+ char buffer[256];
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ sprintf(buffer, "%f", 12345.12345);
+ }
+ //]
+
+ std::cout << "printf: " << t.elapsed() << std::endl;
+// std::cout << buffer << std::endl;
+}
+
+void format_performance_iostreams()
+{
+ //[karma_double_performance_iostreams
+ std::stringstream strm;
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ strm.str("");
+ strm << 12345.12345;
+ }
+ //]
+
+ std::cout << "iostreams: " << t.elapsed() << std::endl;
+// std::cout << strm.str() << std::endl;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+int main()
+{
+ format_performance_printf();
+ format_performance_iostreams();
+ format_performance_boost_format();
+ format_performance_karma();
+ format_performance_string();
+ format_performance_rule();
+ format_performance_direct();
+ return 0;
+}
+

Added: trunk/libs/spirit/benchmarks/karma/format_performance.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/benchmarks/karma/format_performance.cpp 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -0,0 +1,172 @@
+// Copyright (c) 2002-2009 Joel Hartmut Kaiser
+// Copyright (c) 2002-2009 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)
+
+#include <boost/config/warning_disable.hpp>
+#include <boost/spirit/include/karma.hpp>
+#include <boost/format.hpp>
+
+#include <iostream>
+
+#include "../high_resolution_timer.hpp"
+
+#define NUMITERATIONS 1000000
+
+///////////////////////////////////////////////////////////////////////////////
+// policy for real_generator, which forces to output trailing zeros in the
+// fractional part
+//[karma_format_performance_definitions
+template <typename T>
+struct double3_policy : boost::spirit::karma::real_policies<T>
+{
+ // we want to generate up to 3 fractional digits
+ static unsigned int precision(T) { return 3; }
+};
+
+typedef boost::spirit::karma::real_generator<double, double3_policy<double> >
+ double3_type;
+double3_type const double3 = double3_type();
+//]
+
+void format_performance_karma()
+{
+ using boost::spirit::karma::left_align;
+ using boost::spirit::karma::generate;
+
+ //[karma_format_performance_plain
+ char buffer[256];
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ char *p = buffer;
+ generate(p
+ , '[' << left_align(14)[double3] << left_align(14)[double3] << ']'
+ , 12345.12345, 12345.12345);
+ *p = '\0';
+ }
+ //]
+
+ std::cout << "karma: " << t.elapsed() << std::endl;
+// std::cout << buffer << std::endl;
+}
+
+void format_performance_rule()
+{
+ using boost::spirit::karma::left_align;
+ using boost::spirit::karma::generate;
+
+ typedef boost::fusion::vector<double, double> rtype;
+ boost::spirit::karma::rule<char*, rtype()> r;
+
+ //[karma_format_performance_rule
+ char buffer[256];
+ r %= '[' << left_align(14)[double3] << left_align(14)[double3] << ']';
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ char *p = buffer;
+ generate(p, r, 12345.12345, 12345.12345);
+ *p = '\0';
+ }
+ //]
+
+ std::cout << "karma (rule): " << t.elapsed() << std::endl;
+// std::cout << buffer << std::endl;
+}
+
+void format_performance_string()
+{
+ using boost::spirit::karma::left_align;
+ using boost::spirit::karma::generate;
+
+ //[karma_format_performance_string
+ std::string generated;
+ std::back_insert_iterator<std::string> sink(generated);
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ generated.clear();
+ generate(sink
+ , '[' << left_align(14)[double3] << left_align(14)[double3] << ']'
+ , 12345.12345, 12345.12345);
+ }
+ //]
+
+ std::cout << "karma (string): " << t.elapsed() << std::endl;
+// std::cout << generated << std::endl;
+}
+
+// Boost.Format
+void format_performance_boost_format()
+{
+ //[karma_format_performance_format
+ std::string generated;
+ boost::format outformat("[%-14.3f%-14.3f]");
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i)
+ generated = boost::str(outformat % 12345.12345 % 12345.12345);
+ //]
+
+ std::cout << "format: " << t.elapsed() << std::endl;
+// std::cout << strm.str() << std::endl;
+}
+
+void format_performance_printf()
+{
+ util::high_resolution_timer t;
+
+ //[karma_format_performance_printf
+ char buffer[256];
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ sprintf(buffer, "[%-14.3f%-14.3f]", 12345.12345, 12345.12345);
+ }
+ //]
+
+ std::cout << "printf: " << t.elapsed() << std::endl;
+// std::cout << buffer << std::endl;
+}
+
+void format_performance_iostreams()
+{
+ //[karma_format_performance_iostreams
+ std::stringstream strm;
+ //<-
+ util::high_resolution_timer t;
+ //->
+ for (int i = 0; i < NUMITERATIONS; ++i) {
+ strm.str("");
+ strm << '['
+ << std::setiosflags(std::ios::fixed)
+ << std::left
+ << std::setprecision(3)
+ << std::setw(14)
+ << 12345.12345
+ << std::setw(14)
+ << 12345.12345
+ << ']';
+ }
+ //]
+
+ std::cout << "iostreams: " << t.elapsed() << std::endl;
+// std::cout << strm.str() << std::endl;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+int main()
+{
+ format_performance_printf();
+ format_performance_iostreams();
+ format_performance_boost_format();
+ format_performance_karma();
+ format_performance_string();
+ format_performance_rule();
+ return 0;
+}
+

Added: trunk/libs/spirit/benchmarks/karma/int_generator.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/benchmarks/karma/int_generator.cpp 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -0,0 +1,82 @@
+// Copyright (c) 2001-2008 Hartmut Kaiser
+//
+// 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)
+
+// MSVC specific #pragma's
+#if defined(BOOST_MSVC)
+#pragma inline_depth(255)
+#pragma inline_recursion(on)
+#endif // defined(BOOST_MSVC)
+
+#include <climits>
+#include <cstdlib>
+
+#include <iostream>
+#include "../high_resolution_timer.hpp"
+
+// This value specifies, how to unroll the integer string generation loop.
+// Set this to some integer in between 0 (no unrolling) and max expected
+// integer string len (complete unrolling). If not specified, this value
+// defaults to 6.
+#define BOOST_KARMA_NUMERICS_LOOP_UNROLL 6
+
+#include <boost/spirit/include/karma.hpp>
+
+using namespace std;
+using namespace boost::spirit;
+
+#define MAX_ITERATION 10000000
+
+///////////////////////////////////////////////////////////////////////////////
+struct random_fill
+{
+ int operator()() const
+ {
+ int scale = std::rand() / 100 + 1;
+ return (std::rand() * std::rand()) / scale;
+ }
+};
+
+///////////////////////////////////////////////////////////////////////////////
+int main()
+{
+ namespace karma = boost::spirit::karma;
+ char buffer[65]; // we don't expect more than 64 bytes to be generated here
+
+ cout << "Converting " << MAX_ITERATION
+ << " randomly generated int values to strings." << flush << endl;
+
+ std::srand(0);
+ std::vector<int> v (MAX_ITERATION);
+ std::generate(v.begin(), v.end(), random_fill()); // randomly fill the vector
+
+ // test the Karma int_ generation routines
+ {
+ util::high_resolution_timer t;
+
+ for (int i = 0; i < MAX_ITERATION; ++i)
+ {
+ char *ptr = buffer;
+ karma::generate(ptr, int_, v[i]);
+ *ptr = '\0';
+ }
+
+ cout << "int_: " << t.elapsed() << " [s]" << flush << endl;
+ }
+
+ // test the C libraries ltoa function (the most low level function for
+ // string conversion available)
+ {
+ util::high_resolution_timer t;
+
+ for (int i = 0; i < MAX_ITERATION; ++i)
+ {
+ ltoa(v[i], buffer, 10);
+ }
+
+ cout << "ltoa: " << t.elapsed() << " [s]" << flush << endl;
+ }
+ return 0;
+}
+

Added: trunk/libs/spirit/benchmarks/karma/real_generator.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/benchmarks/karma/real_generator.cpp 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -0,0 +1,76 @@
+// Copyright (c) 2001-2009 Hartmut Kaiser
+//
+// 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)
+
+// MSVC specific #pragma's
+#if defined(BOOST_MSVC)
+#pragma inline_depth(255)
+#pragma inline_recursion(on)
+#endif // defined(BOOST_MSVC)
+
+#include <climits>
+#include <cassert>
+
+#include <iostream>
+#include <boost/spirit/include/karma.hpp>
+
+#include "../high_resolution_timer.hpp"
+
+using namespace std;
+using namespace boost::spirit;
+
+#define MAX_ITERATION 10000000
+
+///////////////////////////////////////////////////////////////////////////////
+struct random_fill
+{
+ double operator()() const
+ {
+ double scale = std::rand() / 100 + 1;
+ return double(std::rand() * std::rand()) / scale;
+ }
+};
+
+///////////////////////////////////////////////////////////////////////////////
+int main()
+{
+ namespace karma = boost::spirit::karma;
+ char buffer[512]; // we don't expect more than 512 bytes to be generated
+
+ cout << "Converting " << MAX_ITERATION
+ << " randomly generated double values to strings." << flush << endl;
+
+ std::srand(0);
+ std::vector<double> v (MAX_ITERATION);
+ std::generate(v.begin(), v.end(), random_fill()); // randomly fill the vector
+
+ // test the Karma double_ generation routines
+ {
+ util::high_resolution_timer t;
+
+ for (int i = 0; i < MAX_ITERATION; ++i)
+ {
+ char *ptr = buffer;
+ karma::generate(ptr, double_, v[i]);
+ *ptr = '\0';
+ }
+
+ cout << "double_: " << t.elapsed() << " [s]" << flush << endl;
+ }
+
+ // test the C libraries gcvt function (the most low level function for
+ // string conversion available)
+ {
+ util::high_resolution_timer t;
+
+ for (int i = 0; i < MAX_ITERATION; ++i)
+ {
+ gcvt(v[i], 10, buffer);
+ }
+
+ cout << "gcvt: " << t.elapsed() << " [s]" << flush << endl;
+ }
+ return 0;
+}
+

Modified: trunk/libs/spirit/doc/html/index.html
==============================================================================
--- trunk/libs/spirit/doc/html/index.html (original)
+++ trunk/libs/spirit/doc/html/index.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 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="id1022482"></a><p>
+<a name="id1058366"></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>
@@ -188,7 +188,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: July 17, 2009 at 01:09:21 GMT</small></p></td>
+<td align="left"><p><small>Last revised: July 18, 2009 at 03:28:49 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -40,7 +40,7 @@
         [Abstract Syntax Tree) for each PEG grammar.
       </p>
 <a name="spirit.abstracts.parsing_expression_grammar.sequences"></a><h5>
-<a name="id1032402"></a>
+<a name="id1067422"></a>
         <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.sequences">Sequences</a>
       </h5>
 <p>
@@ -81,7 +81,7 @@
         </p></td></tr>
 </table></div>
 <a name="spirit.abstracts.parsing_expression_grammar.alternatives"></a><h5>
-<a name="id1032520"></a>
+<a name="id1067539"></a>
         <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.alternatives">Alternatives</a>
       </h5>
 <p>
@@ -124,7 +124,7 @@
         about this $$$).
       </p>
 <a name="spirit.abstracts.parsing_expression_grammar.loops"></a><h5>
-<a name="id1032659"></a>
+<a name="id1067678"></a>
         <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.loops">Loops</a>
       </h5>
 <p>
@@ -187,7 +187,7 @@
         We will see more of these other mechanisms shortly.
       </p>
 <a name="spirit.abstracts.parsing_expression_grammar.difference"></a><h5>
-<a name="id1032800"></a>
+<a name="id1067819"></a>
         <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.difference">Difference</a>
       </h5>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -31,14 +31,14 @@
         a variant of Extended Backus-Naur Form (EBNF) with a different interpretation.
         It is easier to understand PEG using Syntax Diagrams. Syntax diagrams represent
         a grammar graphically. It was used extensibly by Niklaus Wirth
- <sup>[<a name="id1031991" href="#ftn.id1031991" class="footnote">2</a>]</sup>
+ <sup>[<a name="id1067010" href="#ftn.id1067010" class="footnote">2</a>]</sup>
         in the "Pascal User Manual". Syntax Diagrams are easily understandable
         with programmers due to its similarity to flow charts. The isomorphism of
         the diagrams and functions make it ideal for representing [Recursive Descent
         parsers which are essentially mutually recursive functions.
       </p>
 <a name="spirit.abstracts.syntax_diagram.elements"></a><h5>
-<a name="id1032003"></a>
+<a name="id1067022"></a>
         <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.elements">Elements</a>
       </h5>
 <p>
@@ -82,7 +82,7 @@
         </p>
 </blockquote></div>
 <a name="spirit.abstracts.syntax_diagram.constructs"></a><h5>
-<a name="id1032102"></a>
+<a name="id1067122"></a>
         <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.constructs">Constructs</a>
       </h5>
 <p>
@@ -153,7 +153,7 @@
         This behavior is quite obvious with syntax diagrams as they resemble flow-charts.
       </p>
 <a name="spirit.abstracts.syntax_diagram.predicates"></a><h5>
-<a name="id1032263"></a>
+<a name="id1067282"></a>
         <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.predicates">Predicates</a>
       </h5>
 <p>
@@ -208,7 +208,7 @@
       </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id1031991" href="#id1031991" class="para">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id1067010" href="#id1067010" class="para">2</a>] </sup>
             Niklaus Wirth: The Programming Language Pascal. (July 1973)
           </p></div>
 </div>

Modified: trunk/libs/spirit/doc/html/spirit/acknowledgments.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/acknowledgments.html (original)
+++ trunk/libs/spirit/doc/html/spirit/acknowledgments.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -47,7 +47,7 @@
       <span class="bold"><strong>FIXME</strong></span>: Add more people
     </p>
 <a name="spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation"></a><h4>
-<a name="id1136257"></a>
+<a name="id1172040"></a>
       <a class="link" href="acknowledgments.html#spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation">Acknowledgements
       from the Spirit V1 <span class="emphasis"><em>classic</em></span> Documentation</a>
     </h4>

Modified: trunk/libs/spirit/doc/html/spirit/faq.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/faq.html (original)
+++ trunk/libs/spirit/doc/html/spirit/faq.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.faq"></a><a class="link" href="faq.html" title="Spirit FAQ"> Spirit FAQ</a>
 </h2></div></div></div>
 <a name="spirit.faq.i_m_getting_multiple_symbol_definition_errors_while_using_visual_c____anything_i_could_do_about_that_"></a><h4>
-<a name="id1135000"></a>
+<a name="id1170784"></a>
       <a class="link" href="faq.html#spirit.faq.i_m_getting_multiple_symbol_definition_errors_while_using_visual_c____anything_i_could_do_about_that_">I'm
       getting multiple symbol definition errors while using Visual C++. Anything
       I could do about that?</a>
@@ -64,7 +64,7 @@
       static_assert.
     </p>
 <a name="spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_"></a><h4>
-<a name="id1135171"></a>
+<a name="id1170954"></a>
       <a class="link" href="faq.html#spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_">I'm
       very confused about the header hell in my boost/spirit directory. What's all
       this about?</a>

Modified: trunk/libs/spirit/doc/html/spirit/introduction.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/introduction.html (original)
+++ trunk/libs/spirit/doc/html/spirit/introduction.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -30,7 +30,7 @@
       Boost Spirit is an object-oriented, recursive-descent parser and output generation
       library for C++. It allows you to write grammars and format descriptions using
       a format similar to Extended Backus Naur Form (EBNF)
- <sup>[<a name="id1027103" href="#ftn.id1027103" class="footnote">1</a>]</sup>
+ <sup>[<a name="id1063215" href="#ftn.id1063215" class="footnote">1</a>]</sup>
       directly in C++. These inline grammar specifications can mix freely with other
       C++ code and, thanks to the generative power of C++ templates, are immediately
       executable. In retrospect, conventional compiler-compilers or parser-generators
@@ -131,7 +131,7 @@
 <p><br class="figure-break">
     </p>
 <a name="spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_"></a><h4>
-<a name="id1027317"></a>
+<a name="id1063428"></a>
       <a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_">A
       Quick Overview of Parsing with <span class="emphasis"><em>Spirit.Qi</em></span></a>
     </h4>
@@ -221,7 +221,7 @@
       <code class="computeroutput"><span class="special">;</span></code>.
     </p>
 <a name="spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_"></a><h4>
-<a name="id1028270"></a>
+<a name="id1064381"></a>
       <a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_">A
       Quick Overview of Output Generation with <span class="emphasis"><em>Spirit.Karma</em></span></a>
     </h4>
@@ -254,7 +254,7 @@
       of the same <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>:
     </p>
 <div class="table">
-<a name="id1028610"></a><p class="title"><b>Table 2. Different output formats for `std::vector&lt;int&gt;`</b></p>
+<a name="id1064722"></a><p class="title"><b>Table 2. Different output formats for `std::vector&lt;int&gt;`</b></p>
 <div class="table-contents"><table class="table" summary="Different output formats for `std::vector&lt;int&gt;`">
 <colgroup>
 <col>
@@ -369,7 +369,7 @@
       next table gives some related examples.
     </p>
 <div class="table">
-<a name="id1031169"></a><p class="title"><b>Table 3. Different data types usable with the output format
+<a name="id1066188"></a><p class="title"><b>Table 3. Different data types usable with the output format
     `*(int_ &lt;&lt; eol)`</b></p>
 <div class="table-contents"><table class="table" summary="Different data types usable with the output format
     `*(int_ &lt;&lt; eol)`">
@@ -439,7 +439,7 @@
 </div>
 <br class="table-break"><div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id1027103" href="#id1027103" class="para">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id1063215" href="#id1063215" class="para">1</a>] </sup>
           <a href="http://www.cl.cam.ac.uk/%7Emgk25/iso-14977.pdf" target="_top">ISO-EBNF</a>
         </p></div>
 </div>

Modified: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -35,7 +35,7 @@
             and <span class="emphasis"><em>Spirit.Karma</em></span>.
           </p>
 <p>
- For the full source code of the performance test please see here: double_performance.cpp).
+ For the full source code of the performance test please see here: double_performance.cpp).
             All the measurements have been done by executing 1000000 iterations for
             each formatting type (NUMITERATIONS is set to 1000000 in the code shown
             below).
@@ -135,7 +135,7 @@
             <a class="link" href="double_performance.html#spirit.karma.double_performance" title="Figure 3. Performance comparison for a single double">figure</a>.
           </p>
 <div class="table">
-<a name="id1100000"></a><p class="title"><b>Table 6. Performance comparison for a single double (all
+<a name="id1135211"></a><p class="title"><b>Table 6. Performance comparison for a single double (all
           times in [s], 1000000 iterations)</b></p>
 <div class="table-contents"><table class="table" summary="Performance comparison for a single double (all
           times in [s], 1000000 iterations)">

Modified: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -37,7 +37,7 @@
             and <span class="emphasis"><em>Spirit.Karma</em></span>.
           </p>
 <p>
- For the full source code of the performance test please see here: format_performance.cpp).
+ For the full source code of the performance test please see here: format_performance.cpp).
             All the measurements have been done by doing 1000000 iterations for each
             formatting type (NUMITERATIONS is set to 1000000).
           </p>
@@ -155,7 +155,7 @@
             <a class="link" href="format_performance.html#spirit.karma.format_performance" title="Figure 4. Performance comparison for a sequence of several items">figure</a>.
           </p>
 <div class="table">
-<a name="id1101518"></a><p class="title"><b>Table 7. Performance comparison for a sequence of several
+<a name="id1136729"></a><p class="title"><b>Table 7. Performance comparison for a sequence of several
           items (all times in [s], 1000000 iterations)</b></p>
 <div class="table-contents"><table class="table" summary="Performance comparison for a sequence of several
           items (all times in [s], 1000000 iterations)">

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -41,7 +41,7 @@
           <span class="identifier">b</span></code> will be <code class="computeroutput"><span class="identifier">tuple</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">&gt;</span></code>.
         </p>
 <div class="table">
-<a name="id1086994"></a><p class="title"><b>Table 5. Spirit.Karma compound generator attribute types</b></p>
+<a name="id1123298"></a><p class="title"><b>Table 5. Spirit.Karma compound generator attribute types</b></p>
 <div class="table-contents"><table class="table" summary="Spirit.Karma compound generator attribute types">
 <colgroup>
 <col>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.reference.generator_concepts.binarygenerator"></a><a class="link" href="binarygenerator.html" title="BinaryGenerator">BinaryGenerator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.description"></a><h6>
-<a name="id1096828"></a>
+<a name="id1131493"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.description">Description</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
             Design Pattern.
           </p>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.refinement_of"></a><h6>
-<a name="id1096875"></a>
+<a name="id1131540"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.refinement_of">Refinement
             of</a>
           </h6>
@@ -66,7 +66,7 @@
 </dl>
 </div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.valid_expressions"></a><h6>
-<a name="id1096952"></a>
+<a name="id1131617"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -135,7 +135,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.type_expressions"></a><h6>
-<a name="id1097114"></a>
+<a name="id1131779"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -200,7 +200,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.invariants"></a><h6>
-<a name="id1097312"></a>
+<a name="id1131977"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.invariants">Invariants</a>
           </h6>
 <p>
@@ -216,7 +216,7 @@
 </li>
 </ul></div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.models"></a><h6>
-<a name="id1097448"></a>
+<a name="id1132114"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.reference.generator_concepts.generator"></a><a class="link" href="generator.html" title="Generator">Generator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.generator.description"></a><h6>
-<a name="id1094532"></a>
+<a name="id1129744"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.description">Description</a>
           </h6>
 <p>
@@ -81,7 +81,7 @@
 </dl>
 </div>
 <a name="spirit.karma.reference.generator_concepts.generator.valid_expressions"></a><h6>
-<a name="id1094786"></a>
+<a name="id1129998"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -164,7 +164,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.generator.type_expressions"></a><h6>
-<a name="id1095047"></a>
+<a name="id1130258"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -217,7 +217,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.generator.postcondition"></a><h6>
-<a name="id1095230"></a>
+<a name="id1130442"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.postcondition">Postcondition</a>
           </h6>
 <p>
@@ -239,7 +239,7 @@
             </li>
 </ul></div>
 <a name="spirit.karma.reference.generator_concepts.generator.models"></a><h6>
-<a name="id1095300"></a>
+<a name="id1130512"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.reference.generator_concepts.narygenerator"></a><a class="link" href="narygenerator.html" title="NaryGenerator">NaryGenerator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.description"></a><h6>
-<a name="id1097481"></a>
+<a name="id1132146"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             Design Pattern.
           </p>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.refinement_of"></a><h6>
-<a name="id1097512"></a>
+<a name="id1132177"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.refinement_of">Refinement
             of</a>
           </h6>
@@ -64,7 +64,7 @@
 </dl>
 </div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.valid_expressions"></a><h6>
-<a name="id1097589"></a>
+<a name="id1132254"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -115,7 +115,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.type_expressions"></a><h6>
-<a name="id1097709"></a>
+<a name="id1132374"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -168,7 +168,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.invariants"></a><h6>
-<a name="id1097874"></a>
+<a name="id1132540"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.invariants">Invariants</a>
           </h6>
 <p>
@@ -180,7 +180,7 @@
 <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special">&lt;</span><span class="identifier">E</span><span class="special">&gt;::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
 </li></ul></div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.models"></a><h6>
-<a name="id1097960"></a>
+<a name="id1132625"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator"></a><a class="link" href="primitivegenerator.html" title="PrimitiveGenerator">PrimitiveGenerator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.description"></a><h6>
-<a name="id1095342"></a>
+<a name="id1130554"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             that the client uses to build more complex generators.
           </p>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.refinement_of"></a><h6>
-<a name="id1095362"></a>
+<a name="id1130574"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.refinement_of">Refinement
             of</a>
           </h6>
@@ -49,7 +49,7 @@
             </p>
 </blockquote></div>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.post_delimit"></a><h6>
-<a name="id1095396"></a>
+<a name="id1130608"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.post_delimit">Post-delimit</a>
           </h6>
 <p>
@@ -62,7 +62,7 @@
 <pre class="programlisting"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">delimit_out</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">delimit</span><span class="special">);</span>
 </pre>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.type_expressions"></a><h6>
-<a name="id1095469"></a>
+<a name="id1130681"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -101,7 +101,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.models"></a><h6>
-<a name="id1096286"></a>
+<a name="id1130951"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.reference.generator_concepts.unarygenerator"></a><a class="link" href="unarygenerator.html" title="UnaryGenerator">UnaryGenerator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.description"></a><h6>
-<a name="id1096326"></a>
+<a name="id1130992"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.description">Description</a>
           </h6>
 <p>
@@ -36,7 +36,7 @@
             following the Delegate Design Pattern.
           </p>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.refinement_of"></a><h6>
-<a name="id1096347"></a>
+<a name="id1131012"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.refinement_of">Refinement
             of</a>
           </h6>
@@ -63,7 +63,7 @@
 </dl>
 </div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.valid_expressions"></a><h6>
-<a name="id1096424"></a>
+<a name="id1131089"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -113,7 +113,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.type_expressions"></a><h6>
-<a name="id1096539"></a>
+<a name="id1131204"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -166,7 +166,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.invariants"></a><h6>
-<a name="id1096703"></a>
+<a name="id1131369"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.invariants">Invariants</a>
           </h6>
 <p>
@@ -177,7 +177,7 @@
 <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special">&lt;</span><span class="identifier">G</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">&gt;::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
 </li></ul></div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.models"></a><h6>
-<a name="id1096788"></a>
+<a name="id1131454"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.tutorials.quick_start"></a><a class="link" href="quick_start.html" title="Quick Start">Quick Start</a>
 </h4></div></div></div>
 <a name="spirit.karma.tutorials.quick_start.spirit_karma___what_s_that_"></a><h6>
-<a name="id1077586"></a>
+<a name="id1112805"></a>
           <a class="link" href="quick_start.html#spirit.karma.tutorials.quick_start.spirit_karma___what_s_that_">Spirit.Karma
           - what's that?</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -247,7 +247,7 @@
           The examples above can be found here: actions.cpp
         </p>
 <a name="spirit.karma.tutorials.semantic_actions.phoenix"></a><h6>
-<a name="id1080419"></a>
+<a name="id1116296"></a>
           <a class="link" href="semantic_actions.html#spirit.karma.tutorials.semantic_actions.phoenix">Phoenix</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -31,7 +31,7 @@
           We will start from trivial examples, ramping up as we go.
         </p>
 <a name="spirit.karma.tutorials.warming_up.trivial_example__1_generating_a_number"></a><h6>
-<a name="id1077702"></a>
+<a name="id1112920"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__1_generating_a_number">Trivial
           Example #1 Generating a number</a>
         </h6>
@@ -51,7 +51,7 @@
           to a floating point generator or parser: <code class="computeroutput"><span class="identifier">double_</span></code>.
         </p>
 <a name="spirit.karma.tutorials.warming_up.trivial_example__2_generating_two_numbers"></a><h6>
-<a name="id1077745"></a>
+<a name="id1112964"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__2_generating_two_numbers">Trivial
           Example #2 Generating two numbers</a>
         </h6>
@@ -89,7 +89,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit.karma.tutorials.warming_up.trivial_example__3_generating_one_or_more_numbers"></a><h6>
-<a name="id1077830"></a>
+<a name="id1113049"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__3_generating_one_or_more_numbers">Trivial
           Example #3 Generating one or more numbers</a>
         </h6>
@@ -114,7 +114,7 @@
           numbers, if needed.
         </p>
 <a name="spirit.karma.tutorials.warming_up.trivial_example__4_generating_a_comma_delimited_list_of_numbers"></a><h6>
-<a name="id1077878"></a>
+<a name="id1113097"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__4_generating_a_comma_delimited_list_of_numbers">Trivial
           Example #4 Generating a comma-delimited list of numbers</a>
         </h6>
@@ -137,7 +137,7 @@
           in the generated output zero or more times.
         </p>
 <a name="spirit.karma.tutorials.warming_up.let_s_generate_"></a><h6>
-<a name="id1078012"></a>
+<a name="id1113231"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.let_s_generate_">Let's
           Generate!</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -51,7 +51,7 @@
             of the <span class="emphasis"><em>Spirit.Lex</em></span> library.
           </p>
 <a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_anatomy_of_a_token"></a><h6>
-<a name="id1112982"></a>
+<a name="id1148079"></a>
             <a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_anatomy_of_a_token">The
             Anatomy of a Token</a>
           </h6>
@@ -187,7 +187,7 @@
             when it is requested for the first time.
           </p>
 <a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_physiognomy_of_a_token_definition"></a><h6>
-<a name="id1115371"></a>
+<a name="id1150587"></a>
             <a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_physiognomy_of_a_token_definition">The
             Physiognomy of a Token Definition</a>
           </h6>
@@ -260,7 +260,7 @@
 </td></tr>
 </table></div>
 <a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.examples_of_using__link_linkend__spirit_lex_reference_token_class___code__phrase_role__identifier__lexertl_token__phrase__phrase_role__special___lt__gt___phrase___code___link_"></a><h6>
-<a name="id1115627"></a>
+<a name="id1150843"></a>
             <a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.examples_of_using__link_linkend__spirit_lex_reference_token_class___code__phrase_role__identifier__lexertl_token__phrase__phrase_role__special___lt__gt___phrase___code___link_">Examples
             of using <a class="link" href="../../reference/token_class.html" title="Token Class"><code class="computeroutput"><span class="identifier">lexertl_token</span><span class="special">&lt;&gt;</span></code></a></a>
           </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -105,7 +105,7 @@
 <span class="keyword">void</span> <span class="identifier">f</span> <span class="special">();</span>
 </pre>
 <a name="spirit.lex.abstracts.lexer_semantic_actions.the_context_of_a_lexer_semantic_action"></a><h6>
-<a name="id1119155"></a>
+<a name="id1154385"></a>
           <a class="link" href="lexer_semantic_actions.html#spirit.lex.abstracts.lexer_semantic_actions.the_context_of_a_lexer_semantic_action">The
           context of a lexer semantic action</a>
         </h6>
@@ -120,7 +120,7 @@
           of the available functionality.
         </p>
 <div class="table">
-<a name="id1119176"></a><p class="title"><b>Table 8. Functions exposed by any context passed to a lexer
+<a name="id1154405"></a><p class="title"><b>Table 8. Functions exposed by any context passed to a lexer
         semantic action</b></p>
 <div class="table-contents"><table class="table" summary="Functions exposed by any context passed to a lexer
         semantic action">
@@ -241,7 +241,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="spirit.lex.abstracts.lexer_semantic_actions.lexer_semantic_actions_using_phoenix"></a><h6>
-<a name="id1119784"></a>
+<a name="id1154946"></a>
           <a class="link" href="lexer_semantic_actions.html#spirit.lex.abstracts.lexer_semantic_actions.lexer_semantic_actions_using_phoenix">Lexer
           Semantic Actions Using Phoenix</a>
         </h6>
@@ -253,7 +253,7 @@
           predefined Spirit placeholders:
         </p>
 <div class="table">
-<a name="id1119807"></a><p class="title"><b>Table 9. Predefined Phoenix placeholders for lexer semantic
+<a name="id1154969"></a><p class="title"><b>Table 9. Predefined Phoenix placeholders for lexer semantic
         actions</b></p>
 <div class="table-contents"><table class="table" summary="Predefined Phoenix placeholders for lexer semantic
         actions">
@@ -384,7 +384,7 @@
           table lists the available support functions and describes their functionality:
         </p>
 <div class="table">
-<a name="id1120086"></a><p class="title"><b>Table 10. Support functions usable from Phoenix expressions
+<a name="id1155247"></a><p class="title"><b>Table 10. Support functions usable from Phoenix expressions
         inside lexer semantic actions</b></p>
 <div class="table-contents"><table class="table" summary="Support functions usable from Phoenix expressions
         inside lexer semantic actions">

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,17 +27,17 @@
 <a name="spirit.lex.abstracts.lexer_states"></a><a class="link" href="lexer_states.html" title="Lexer States"> Lexer States</a>
 </h4></div></div></div>
 <a name="spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_lexer_semantic_actions"></a><h6>
-<a name="id1124614"></a>
+<a name="id1160390"></a>
           <a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_lexer_semantic_actions">Controlling
           the Lexer State from Lexer Semantic Actions</a>
         </h6>
 <a name="spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_parser_semantic_actions"></a><h6>
-<a name="id1124628"></a>
+<a name="id1160404"></a>
           <a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_parser_semantic_actions">Controlling
           the Lexer State from Parser Semantic Actions</a>
         </h6>
 <a name="spirit.lex.abstracts.lexer_states.using_a_lexer_state_for_the_skip_parser"></a><h6>
-<a name="id1124641"></a>
+<a name="id1160417"></a>
           <a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.using_a_lexer_state_for_the_skip_parser">Using
           a Lexer State for the Skip Parser</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -176,7 +176,7 @@
 <p>
         </p>
 <a name="spirit.lex.abstracts.lexer_static_model.generating_the_static_analyzer"></a><h6>
-<a name="id1121535"></a>
+<a name="id1156697"></a>
           <a class="link" href="lexer_static_model.html#spirit.lex.abstracts.lexer_static_model.generating_the_static_analyzer">Generating
           the Static Analyzer</a>
         </h6>
@@ -225,7 +225,7 @@
           the next topic (the full generated code can be viewed here).
         </p>
 <a name="spirit.lex.abstracts.lexer_static_model.modifying_the_dynamic_analyzer"></a><h6>
-<a name="id1123615"></a>
+<a name="id1159391"></a>
           <a class="link" href="lexer_static_model.html#spirit.lex.abstracts.lexer_static_model.modifying_the_dynamic_analyzer">Modifying
           the Dynamic Analyzer</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -28,7 +28,7 @@
         Input Data</a>
 </h4></div></div></div>
 <a name="spirit.lex.abstracts.lexer_tokenizing.the_tokenize_function"></a><h6>
-<a name="id1116154"></a>
+<a name="id1151370"></a>
           <a class="link" href="lexer_tokenizing.html#spirit.lex.abstracts.lexer_tokenizing.the_tokenize_function">The
           tokenize function</a>
         </h6>
@@ -228,7 +228,7 @@
 </dl>
 </div>
 <a name="spirit.lex.abstracts.lexer_tokenizing.the_generate_static_function"></a><h6>
-<a name="id1118534"></a>
+<a name="id1153763"></a>
           <a class="link" href="lexer_tokenizing.html#spirit.lex.abstracts.lexer_tokenizing.the_generate_static_function">The
           generate_static function</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -56,7 +56,7 @@
         </li>
 </ul></div>
 <a name="spirit.lex.lexer_introduction.why_use_a_separate_lexer_"></a><h5>
-<a name="id1102022"></a>
+<a name="id1137234"></a>
         <a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.why_use_a_separate_lexer_">Why
         Use a Separate Lexer?</a>
       </h5>
@@ -155,7 +155,7 @@
         grammar recognizers.
       </p>
 <a name="spirit.lex.lexer_introduction.advantages_of_using__emphasis_spirit_lex__emphasis_"></a><h5>
-<a name="id1102231"></a>
+<a name="id1137442"></a>
         <a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.advantages_of_using__emphasis_spirit_lex__emphasis_">Advantages
         of using <span class="emphasis"><em>Spirit.Lex</em></span></a>
       </h5>
@@ -203,7 +203,7 @@
         application.
       </p>
 <a name="spirit.lex.lexer_introduction.the_library_structure_of__emphasis_spirit_lex__emphasis_"></a><h5>
-<a name="id1102334"></a>
+<a name="id1137546"></a>
         <a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.the_library_structure_of__emphasis_spirit_lex__emphasis_">The
         Library Structure of <span class="emphasis"><em>Spirit.Lex</em></span></a>
       </h5>

Modified: trunk/libs/spirit/doc/html/spirit/lex/reference/concepts/lexer.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/reference/concepts/lexer.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/reference/concepts/lexer.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.lex.reference.concepts.lexer"></a><a class="link" href="lexer.html" title="Lexer">Lexer</a>
 </h5></div></div></div>
 <div class="table">
-<a name="id1124692"></a><p class="title"><b>Table 11. Regular expressions support</b></p>
+<a name="id1160468"></a><p class="title"><b>Table 11. Regular expressions support</b></p>
 <div class="table-contents"><table class="table" summary="Regular expressions support">
 <colgroup>
 <col>
@@ -502,7 +502,7 @@
             </p></td></tr>
 </table></div>
 <a name="spirit.lex.reference.concepts.lexer.regular_expression_precedence"></a><h6>
-<a name="id1126833"></a>
+<a name="id1162063"></a>
             <a class="link" href="lexer.html#spirit.lex.reference.concepts.lexer.regular_expression_precedence">Regular
             Expression Precedence</a>
           </h6>
@@ -521,7 +521,7 @@
             </li>
 </ul></div>
 <a name="spirit.lex.reference.concepts.lexer.macros"></a><h6>
-<a name="id1126936"></a>
+<a name="id1162166"></a>
             <a class="link" href="lexer.html#spirit.lex.reference.concepts.lexer.macros">Macros</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,22 +27,22 @@
 <a name="spirit.lex.reference.lexer_class"></a><a class="link" href="lexer_class.html" title="Lexer Class">Lexer Class</a>
 </h4></div></div></div>
 <a name="spirit.lex.reference.lexer_class.the_lexertl_lexer_class_implementing_the_dynamic_model"></a><h6>
-<a name="id1127058"></a>
+<a name="id1162288"></a>
           <a class="link" href="lexer_class.html#spirit.lex.reference.lexer_class.the_lexertl_lexer_class_implementing_the_dynamic_model">The
           lexertl_lexer Class Implementing the Dynamic Model</a>
         </h6>
 <a name="spirit.lex.reference.lexer_class.the_lexertl_actor_lexer_class_implementing_the_dynamic_model"></a><h6>
-<a name="id1127072"></a>
+<a name="id1162301"></a>
           <a class="link" href="lexer_class.html#spirit.lex.reference.lexer_class.the_lexertl_actor_lexer_class_implementing_the_dynamic_model">The
           lexertl_actor_lexer Class Implementing the Dynamic Model</a>
         </h6>
 <a name="spirit.lex.reference.lexer_class.the_lexertl_static_lexer_class_implementing_the_static_model"></a><h6>
-<a name="id1127085"></a>
+<a name="id1162315"></a>
           <a class="link" href="lexer_class.html#spirit.lex.reference.lexer_class.the_lexertl_static_lexer_class_implementing_the_static_model">The
           lexertl_static_lexer Class Implementing the Static Model</a>
         </h6>
 <a name="spirit.lex.reference.lexer_class.the_lexertl_static_actor_lexer_class_implementing_the_static_model"></a><h6>
-<a name="id1127098"></a>
+<a name="id1162328"></a>
           <a class="link" href="lexer_class.html#spirit.lex.reference.lexer_class.the_lexertl_static_actor_lexer_class_implementing_the_static_model">The
           lexertl_static_actor_lexer Class Implementing the Static Model</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -39,7 +39,7 @@
           (for the full example code see here: word_count_functor.cpp).
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.prerequisites"></a><h6>
-<a name="id1102603"></a>
+<a name="id1137814"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -78,7 +78,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.defining_tokens"></a><h6>
-<a name="id1102848"></a>
+<a name="id1138059"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.defining_tokens">Defining
           Tokens</a>
         </h6>
@@ -133,7 +133,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.doing_the_useful_work"></a><h6>
-<a name="id1103156"></a>
+<a name="id1138368"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.doing_the_useful_work">Doing
           the Useful Work</a>
         </h6>
@@ -198,7 +198,7 @@
           as well.
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.pulling_everything_together"></a><h6>
-<a name="id1103655"></a>
+<a name="id1138867"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.pulling_everything_together">Pulling
           Everything Together</a>
         </h6>
@@ -251,7 +251,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.comparing__emphasis_spirit_lex__emphasis__with__ulink_url__http___flex_sourceforge_net___flex__ulink_"></a><h6>
-<a name="id1104873"></a>
+<a name="id1140091"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.comparing__emphasis_spirit_lex__emphasis__with__ulink_url__http___flex_sourceforge_net___flex__ulink_">Comparing
           <span class="emphasis"><em>Spirit.Lex</em></span> with Flex</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -40,7 +40,7 @@
           options along the lines (for the full example code see here: word_count_lexer.cpp).
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart2.prerequisites"></a><h6>
-<a name="id1105649"></a>
+<a name="id1140866"></a>
           <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -114,7 +114,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart2.semantic_actions_in__emphasis_spirit_lex__emphasis_"></a><h6>
-<a name="id1106298"></a>
+<a name="id1141515"></a>
           <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.semantic_actions_in__emphasis_spirit_lex__emphasis_">Semantic
           Actions in <span class="emphasis"><em>Spirit.Lex</em></span></a>
         </h6>
@@ -173,7 +173,7 @@
           Semantic Actions</a>.
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart2.associating_token_definitions_with_the_lexer"></a><h6>
-<a name="id1108706"></a>
+<a name="id1143844"></a>
           <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.associating_token_definitions_with_the_lexer">Associating
           Token Definitions with the Lexer</a>
         </h6>
@@ -209,7 +209,7 @@
           with the constant defined by <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">min_token_id</span></code>.
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart2.pulling_everything_together"></a><h6>
-<a name="id1108994"></a>
+<a name="id1144132"></a>
           <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.pulling_everything_together">Pulling
           everything together</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -65,7 +65,7 @@
           code see here: word_count.cpp).
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart3.prerequisites"></a><h6>
-<a name="id1109968"></a>
+<a name="id1145106"></a>
           <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -115,7 +115,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart3.defining_tokens"></a><h6>
-<a name="id1110399"></a>
+<a name="id1145537"></a>
           <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.defining_tokens">Defining
           Tokens</a>
         </h6>
@@ -168,7 +168,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart3.using_token_definition_instances_as_parsers"></a><h6>
-<a name="id1111051"></a>
+<a name="id1146148"></a>
           <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.using_token_definition_instances_as_parsers">Using
           Token Definition Instances as Parsers</a>
         </h6>
@@ -339,7 +339,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit.lex.tutorials.lexer_quickstart3.pulling_everything_together"></a><h6>
-<a name="id1111997"></a>
+<a name="id1147094"></a>
           <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.pulling_everything_together">Pulling
           Everything Together</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/preface.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/preface.html (original)
+++ trunk/libs/spirit/doc/html/spirit/preface.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -41,11 +41,11 @@
       </p>
 </blockquote></div>
 <a name="spirit.preface.history"></a><h4>
-<a name="id1022536"></a>
+<a name="id1058420"></a>
       <a class="link" href="preface.html#spirit.preface.history">History</a>
     </h4>
 <a name="spirit.preface._emphasis_80s__emphasis_"></a><h4>
-<a name="id1022549"></a>
+<a name="id1058433"></a>
       <a class="link" href="preface.html#spirit.preface._emphasis_80s__emphasis_"><span class="emphasis"><em>80s</em></span></a>
     </h4>
 <p>
@@ -59,7 +59,7 @@
       parser. This worked very well.
     </p>
 <a name="spirit.preface._emphasis_90s__emphasis_"></a><h4>
-<a name="id1022567"></a>
+<a name="id1058451"></a>
       <a class="link" href="preface.html#spirit.preface._emphasis_90s__emphasis_"><span class="emphasis"><em>90s</em></span></a>
     </h4>
 <p>
@@ -97,7 +97,7 @@
       here: pre-Spirit.
     </p>
 <a name="spirit.preface._emphasis_2001_to_2006__emphasis_"></a><h4>
-<a name="id1022609"></a>
+<a name="id1058493"></a>
       <a class="link" href="preface.html#spirit.preface._emphasis_2001_to_2006__emphasis_"><span class="emphasis"><em>2001
       to 2006</em></span></a>
     </h4>
@@ -127,7 +127,7 @@
       for design and implementation quality, robustness, and reusability.
     </p>
 <a name="spirit.preface._emphasis_2007__emphasis_"></a><h4>
-<a name="id1022644"></a>
+<a name="id1058528"></a>
       <a class="link" href="preface.html#spirit.preface._emphasis_2007__emphasis_"><span class="emphasis"><em>2007</em></span></a>
     </h4>
 <p>
@@ -164,7 +164,7 @@
       gives you the right ingredients to create a sledgehammer easily.
     </p>
 <a name="spirit.preface.new_ideas__spirit_v2"></a><h4>
-<a name="id1022719"></a>
+<a name="id1058603"></a>
       <a class="link" href="preface.html#spirit.preface.new_ideas__spirit_v2">New Ideas: Spirit V2</a>
     </h4>
 <p>
@@ -202,7 +202,7 @@
       same underlying component library as for the parser and generator libraries.
     </p>
 <a name="spirit.preface.how_to_use_this_manual"></a><h4>
-<a name="id1022770"></a>
+<a name="id1058654"></a>
       <a class="link" href="preface.html#spirit.preface.how_to_use_this_manual">How to use this manual</a>
     </h4>
 <p>
@@ -233,7 +233,7 @@
       icons precede some text to indicate:
     </p>
 <div class="table">
-<a name="id1022822"></a><p class="title"><b>Table 1. Icons</b></p>
+<a name="id1058706"></a><p class="title"><b>Table 1. Icons</b></p>
 <div class="table-contents"><table class="table" summary="Icons">
 <colgroup>
 <col>
@@ -354,7 +354,7 @@
       Tools</a>.
     </p>
 <a name="spirit.preface.support"></a><h4>
-<a name="id1023064"></a>
+<a name="id1058948"></a>
       <a class="link" href="preface.html#spirit.preface.support">Support</a>
     </h4>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -41,7 +41,7 @@
           <span class="identifier">b</span></code> will be <code class="computeroutput"><span class="identifier">tuple</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">&gt;</span></code>.
         </p>
 <div class="table">
-<a name="id1061115"></a><p class="title"><b>Table 4. compound parser attribute types</b></p>
+<a name="id1096334"></a><p class="title"><b>Table 4. compound parser attribute types</b></p>
 <div class="table-contents"><table class="table" summary="compound parser attribute types">
 <colgroup>
 <col>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.basics"></a><a class="link" href="basics.html" title="Basics">Basics</a>
 </h4></div></div></div>
 <a name="spirit.qi.reference.basics.lazy_argument"></a><h6>
-<a name="id1070495"></a>
+<a name="id1105714"></a>
           <a class="link" href="basics.html#spirit.qi.reference.basics.lazy_argument">Lazy Argument</a>
         </h6>
 <p>
@@ -51,7 +51,7 @@
           second argument. This is done for uniformity with Semantic Actions).
         </p>
 <a name="spirit.qi.reference.basics.character_encoding_namespace"></a><h6>
-<a name="id1070632"></a>
+<a name="id1105850"></a>
           <a class="link" href="basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
           Encoding Namespace</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/char_.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/char_.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/char_.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,21 +27,21 @@
 <a name="spirit.qi.reference.char_"></a><a class="link" href="char_.html" title="char_">char_</a>
 </h4></div></div></div>
 <a name="spirit.qi.reference.char_.description"></a><h6>
-<a name="id1070826"></a>
+<a name="id1106045"></a>
           <a class="link" href="char_.html#spirit.qi.reference.char_.description">Description</a>
         </h6>
 <p>
           The char_ parser matches any character.
         </p>
 <a name="spirit.qi.reference.char_.header"></a><h6>
-<a name="id1070844"></a>
+<a name="id1106063"></a>
           <a class="link" href="char_.html#spirit.qi.reference.char_.header">Header</a>
         </h6>
 <pre class="programlisting"><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">home</span><span class="special">/</span><span class="identifier">qi</span><span class="special">/</span><span class="keyword">char</span><span class="special">/</span><span class="keyword">char</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <span class="comment">// main include
 </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">include</span><span class="special">/</span><span class="identifier">qi_char</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <span class="comment">// or, forwarding header
 </span></pre>
 <a name="spirit.qi.reference.char_.module_headers"></a><h6>
-<a name="id1070974"></a>
+<a name="id1106192"></a>
           <a class="link" href="char_.html#spirit.qi.reference.char_.module_headers">Module Headers</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.binaryparser"></a><a class="link" href="binaryparser.html" title="BinaryParser">BinaryParser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.description"></a><h6>
-<a name="id1069097"></a>
+<a name="id1104316"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             following the Composite Design Pattern.
           </p>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.refinement_of"></a><h6>
-<a name="id1069148"></a>
+<a name="id1104367"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.refinement_of">Refinement
             of</a>
           </h6>
@@ -64,7 +64,7 @@
 </dl>
 </div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.valid_expressions"></a><h6>
-<a name="id1069228"></a>
+<a name="id1104446"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -133,7 +133,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.type_expressions"></a><h6>
-<a name="id1069388"></a>
+<a name="id1104607"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -198,7 +198,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.invariants"></a><h6>
-<a name="id1069589"></a>
+<a name="id1104808"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.invariants">Invariants</a>
           </h6>
 <p>
@@ -214,7 +214,7 @@
 </li>
 </ul></div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.models"></a><h6>
-<a name="id1069728"></a>
+<a name="id1104947"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.naryparser"></a><a class="link" href="naryparser.html" title="NaryParser">NaryParser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.description"></a><h6>
-<a name="id1069763"></a>
+<a name="id1104982"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             Design Pattern.
           </p>
 <a name="spirit.qi.reference.parser_concepts.naryparser.refinement_of"></a><h6>
-<a name="id1069799"></a>
+<a name="id1105018"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.refinement_of">Refinement
             of</a>
           </h6>
@@ -64,7 +64,7 @@
 </dl>
 </div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.valid_expressions"></a><h6>
-<a name="id1069878"></a>
+<a name="id1105097"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -115,7 +115,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.type_expressions"></a><h6>
-<a name="id1070000"></a>
+<a name="id1105219"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -168,7 +168,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.invariants"></a><h6>
-<a name="id1070171"></a>
+<a name="id1105390"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.invariants">Invariants</a>
           </h6>
 <p>
@@ -180,7 +180,7 @@
 <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special">&lt;</span><span class="identifier">E</span><span class="special">&gt;::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
 </li></ul></div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.models"></a><h6>
-<a name="id1070461"></a>
+<a name="id1105680"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.parser"></a><a class="link" href="parser.html" title="Parser">Parser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.parser.description"></a><h6>
-<a name="id1067371"></a>
+<a name="id1102043"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.description">Description</a>
           </h6>
 <p>
@@ -82,7 +82,7 @@
 </dl>
 </div>
 <a name="spirit.qi.reference.parser_concepts.parser.valid_expressions"></a><h6>
-<a name="id1067634"></a>
+<a name="id1102306"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -162,7 +162,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.parser.type_expressions"></a><h6>
-<a name="id1067901"></a>
+<a name="id1102574"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -215,7 +215,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.parser.postcondition"></a><h6>
-<a name="id1068103"></a>
+<a name="id1103322"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.postcondition">Postcondition</a>
           </h6>
 <p>
@@ -249,7 +249,7 @@
             </li>
 </ul></div>
 <a name="spirit.qi.reference.parser_concepts.parser.models"></a><h6>
-<a name="id1068230"></a>
+<a name="id1103449"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.primitiveparser"></a><a class="link" href="primitiveparser.html" title="PrimitiveParser">PrimitiveParser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.description"></a><h6>
-<a name="id1068265"></a>
+<a name="id1103484"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             that the client uses to build more complex parsers.
           </p>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.refinement_of"></a><h6>
-<a name="id1068288"></a>
+<a name="id1103507"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.refinement_of">Refinement
             of</a>
           </h6>
@@ -49,7 +49,7 @@
             </p>
 </blockquote></div>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.pre_skip"></a><h6>
-<a name="id1068324"></a>
+<a name="id1103543"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.pre_skip">Pre-skip</a>
           </h6>
 <p>
@@ -63,7 +63,7 @@
 <pre class="programlisting"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip_over</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">skip</span><span class="special">);</span>
 </pre>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.type_expressions"></a><h6>
-<a name="id1068415"></a>
+<a name="id1103634"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -102,7 +102,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.models"></a><h6>
-<a name="id1068551"></a>
+<a name="id1103770"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.unaryparser"></a><a class="link" href="unaryparser.html" title="UnaryParser">UnaryParser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.description"></a><h6>
-<a name="id1068592"></a>
+<a name="id1103810"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.description">Description</a>
           </h6>
 <p>
@@ -36,7 +36,7 @@
             the Delegate Design Pattern.
           </p>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.refinement_of"></a><h6>
-<a name="id1068617"></a>
+<a name="id1103836"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.refinement_of">Refinement
             of</a>
           </h6>
@@ -63,7 +63,7 @@
 </dl>
 </div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.valid_expressions"></a><h6>
-<a name="id1068696"></a>
+<a name="id1103915"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -113,7 +113,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.type_expressions"></a><h6>
-<a name="id1068810"></a>
+<a name="id1104029"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -166,7 +166,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.invariants"></a><h6>
-<a name="id1068977"></a>
+<a name="id1104196"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.invariants">Invariants</a>
           </h6>
 <p>
@@ -177,7 +177,7 @@
 <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">&gt;::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
 </li></ul></div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.models"></a><h6>
-<a name="id1069062"></a>
+<a name="id1104281"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/string.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/string.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/string.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -35,7 +35,7 @@
         the literal and string parsers and the symbol table.
       </p>
 <a name="spirit.qi.string.module_header"></a><h5>
-<a name="id1071011"></a>
+<a name="id1106230"></a>
         <a class="link" href="string.html#spirit.qi.string.module_header">Module Header</a>
       </h5>
 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/string.hpp&gt;

Modified: trunk/libs/spirit/doc/html/spirit/qi/string/lit_string.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/string/lit_string.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/string/lit_string.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -39,7 +39,7 @@
           </li>
 </ul></div>
 <a name="spirit.qi.string.lit_string.description"></a><h6>
-<a name="id1071174"></a>
+<a name="id1106393"></a>
           <a class="link" href="lit_string.html#spirit.qi.string.lit_string.description">Description</a>
         </h6>
 <p>
@@ -48,7 +48,7 @@
           parser is not applied in between characters of the string.
         </p>
 <a name="spirit.qi.string.lit_string.header"></a><h6>
-<a name="id1071198"></a>
+<a name="id1106417"></a>
           <a class="link" href="lit_string.html#spirit.qi.string.lit_string.header">Header</a>
         </h6>
 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/string/lit.hpp&gt;
@@ -58,7 +58,7 @@
           Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
         </p>
 <a name="spirit.qi.string.lit_string.model_of"></a><h6>
-<a name="id1071272"></a>
+<a name="id1106491"></a>
           <a class="link" href="lit_string.html#spirit.qi.string.lit_string.model_of">Model of</a>
         </h6>
 <div class="blockquote"><blockquote class="blockquote">
@@ -92,7 +92,7 @@
 </dl>
 </div>
 <a name="spirit.qi.string.lit_string.expression_semantics"></a><h6>
-<a name="id1071406"></a>
+<a name="id1106624"></a>
           <a class="link" href="lit_string.html#spirit.qi.string.lit_string.expression_semantics">Expression
           Semantics</a>
         </h6>
@@ -202,7 +202,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.string.lit_string.attributes"></a><h6>
-<a name="id1071754"></a>
+<a name="id1106972"></a>
           <a class="link" href="lit_string.html#spirit.qi.string.lit_string.attributes">Attributes</a>
         </h6>
 <div class="informaltable"><table class="table">
@@ -306,7 +306,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.string.lit_string.complexity"></a><h6>
-<a name="id1072175"></a>
+<a name="id1107394"></a>
           <a class="link" href="lit_string.html#spirit.qi.string.lit_string.complexity">Complexity</a>
         </h6>
 <div class="blockquote"><blockquote class="blockquote">
@@ -323,7 +323,7 @@
           characters in the string to be parsed.
         </p>
 <a name="spirit.qi.string.lit_string.example"></a><h6>
-<a name="id1072210"></a>
+<a name="id1107428"></a>
           <a class="link" href="lit_string.html#spirit.qi.string.lit_string.example">Example</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/string/symbols.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/string/symbols.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/string/symbols.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.string.symbols"></a><a class="link" href="symbols.html" title="symbols">symbols</a>
 </h4></div></div></div>
 <a name="spirit.qi.string.symbols.description"></a><h6>
-<a name="id1074960"></a>
+<a name="id1110179"></a>
           <a class="link" href="symbols.html#spirit.qi.string.symbols.description">Description</a>
         </h6>
 <p>
@@ -46,7 +46,7 @@
           At any time, symbols may be added, thus, dynamically altering its behavior.
         </p>
 <a name="spirit.qi.string.symbols.header"></a><h6>
-<a name="id1074995"></a>
+<a name="id1110213"></a>
           <a class="link" href="symbols.html#spirit.qi.string.symbols.header">Header</a>
         </h6>
 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/string/symbols.hpp&gt;
@@ -56,14 +56,14 @@
           Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
         </p>
 <a name="spirit.qi.string.symbols.synopsis"></a><h6>
-<a name="id1075069"></a>
+<a name="id1110288"></a>
           <a class="link" href="symbols.html#spirit.qi.string.symbols.synopsis">Synopsis</a>
         </h6>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Char</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">symbols</span><span class="special">;</span>
 </pre>
 <a name="spirit.qi.string.symbols.template_parameters"></a><h6>
-<a name="id1075134"></a>
+<a name="id1110353"></a>
           <a class="link" href="symbols.html#spirit.qi.string.symbols.template_parameters">Template parameters</a>
         </h6>
 <div class="informaltable"><table class="table">
@@ -127,7 +127,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.string.symbols.model_of"></a><h6>
-<a name="id1075261"></a>
+<a name="id1110480"></a>
           <a class="link" href="symbols.html#spirit.qi.string.symbols.model_of">Model of</a>
         </h6>
 <div class="blockquote"><blockquote class="blockquote">
@@ -189,7 +189,7 @@
 </dl>
 </div>
 <a name="spirit.qi.string.symbols.expression_semantics"></a><h6>
-<a name="id1075563"></a>
+<a name="id1110782"></a>
           <a class="link" href="symbols.html#spirit.qi.string.symbols.expression_semantics">Expression
           Semantics</a>
         </h6>
@@ -423,7 +423,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.string.symbols.attributes"></a><h6>
-<a name="id1076640"></a>
+<a name="id1111858"></a>
           <a class="link" href="symbols.html#spirit.qi.string.symbols.attributes">Attributes</a>
         </h6>
 <p>
@@ -431,7 +431,7 @@
           is <code class="computeroutput"><span class="identifier">T</span></code>.
         </p>
 <a name="spirit.qi.string.symbols.example"></a><h6>
-<a name="id1076690"></a>
+<a name="id1111909"></a>
           <a class="link" href="symbols.html#spirit.qi.string.symbols.example">Example</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -179,7 +179,7 @@
           has a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code> attribute.
         </p>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.lexeme"></a><h6>
-<a name="id1045936"></a>
+<a name="id1081138"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.lexeme">Lexeme</a>
         </h6>
 <pre class="programlisting"><span class="identifier">lexeme</span><span class="special">[</span><span class="char">'"'</span> <span class="special">&gt;&gt;</span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="char">'"'</span><span class="special">];</span>
@@ -196,7 +196,7 @@
           a double quote.
         </p>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.difference"></a><h6>
-<a name="id1046049"></a>
+<a name="id1081250"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.difference">Difference</a>
         </h6>
 <p>
@@ -215,7 +215,7 @@
           is just <code class="computeroutput"><span class="keyword">char</span></code>.
         </p>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.plus"></a><h6>
-<a name="id1046157"></a>
+<a name="id1081358"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.plus">Plus</a>
         </h6>
 <pre class="programlisting"><span class="special">+</span><span class="identifier">a</span>
@@ -234,7 +234,7 @@
 <pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.sequence_attribute"></a><h6>
-<a name="id1046283"></a>
+<a name="id1081484"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.sequence_attribute">Sequence
           Attribute</a>
         </h6>
@@ -275,7 +275,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.attribute_collapsing"></a><h6>
-<a name="id1046505"></a>
+<a name="id1081706"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.attribute_collapsing">Attribute
           Collapsing</a>
         </h6>
@@ -307,7 +307,7 @@
 <pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.auto_rules"></a><h6>
-<a name="id1046743"></a>
+<a name="id1081945"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.auto_rules">Auto
           Rules</a>
         </h6>
@@ -345,7 +345,7 @@
           directly into the rule's attribute, in-situ.
         </p>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.finally"></a><h6>
-<a name="id1047063"></a>
+<a name="id1082264"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.finally">Finally</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -69,7 +69,7 @@
           for testing purposes. "4.toyxml" has an error in it.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.first_cut"></a><h6>
-<a name="id1048052"></a>
+<a name="id1083271"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.first_cut">First Cut</a>
         </h6>
 <p>
@@ -145,7 +145,7 @@
           by the placeholder <code class="computeroutput"><span class="identifier">_val</span></code>).
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.alternates"></a><h6>
-<a name="id1049233"></a>
+<a name="id1084452"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.alternates">Alternates</a>
         </h6>
 <pre class="programlisting"><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml_node</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>
@@ -175,7 +175,7 @@
 <span class="special">;</span>
 </pre>
 <a name="spirit.qi.tutorials.mini_xml___asts_.not_predicate"></a><h6>
-<a name="id1049561"></a>
+<a name="id1084780"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.not_predicate">Not
           Predicate</a>
         </h6>
@@ -202,7 +202,7 @@
           at this point.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.inherited_attribute"></a><h6>
-<a name="id1049716"></a>
+<a name="id1084934"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.inherited_attribute">Inherited
           Attribute</a>
         </h6>
@@ -228,7 +228,7 @@
           <code class="computeroutput"><span class="identifier">_r3</span></code>, etc. if you have more).
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.a_lazy_lit"></a><h6>
-<a name="id1049910"></a>
+<a name="id1085129"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.a_lazy_lit">A Lazy
           Lit</a>
         </h6>
@@ -262,7 +262,7 @@
           accessors, provided by Phoenix.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.how_it_all_works"></a><h6>
-<a name="id1051888"></a>
+<a name="id1086561"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.how_it_all_works">How
           it all works</a>
         </h6>
@@ -309,7 +309,7 @@
           as <code class="computeroutput"><span class="identifier">_r1</span></code>.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.the_structures"></a><h6>
-<a name="id1052185"></a>
+<a name="id1086858"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.the_structures">The
           Structures</a>
         </h6>
@@ -342,7 +342,7 @@
 <p>
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.of_alternates_and_variants"></a><h6>
-<a name="id1052380"></a>
+<a name="id1087053"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.of_alternates_and_variants">Of
           Alternates and Variants</a>
         </h6>
@@ -369,7 +369,7 @@
           of <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">B</span></code> is the attribute of <code class="computeroutput"><span class="identifier">b</span></code>.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.adapting_structs_again"></a><h6>
-<a name="id1052560"></a>
+<a name="id1087233"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.adapting_structs_again">Adapting
           structs again</a>
         </h6>
@@ -395,7 +395,7 @@
 <p>
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.one_more_take"></a><h6>
-<a name="id1052701"></a>
+<a name="id1087374"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.one_more_take">One
           More Take</a>
         </h6>
@@ -464,7 +464,7 @@
           in the <code class="computeroutput"><span class="identifier">xml</span></code> rule:
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.local_variables"></a><h6>
-<a name="id1053616"></a>
+<a name="id1088289"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.local_variables">Local
           Variables</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -44,7 +44,7 @@
           What's new?
         </p>
 <a name="spirit.qi.tutorials.mini_xml___error_handling.readable_names"></a><h6>
-<a name="id1054474"></a>
+<a name="id1089693"></a>
           <a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.readable_names">Readable
           Names</a>
         </h6>
@@ -63,7 +63,7 @@
 <span class="identifier">end_tag</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="string">"end_tag"</span><span class="special">);</span>
 </pre>
 <a name="spirit.qi.tutorials.mini_xml___error_handling.on_error"></a><h6>
-<a name="id1054654"></a>
+<a name="id1089873"></a>
           <a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.on_error">On
           Error</a>
         </h6>
@@ -241,7 +241,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.tutorials.mini_xml___error_handling.expectation_points"></a><h6>
-<a name="id1055163"></a>
+<a name="id1090382"></a>
           <a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.expectation_points">Expectation
           Points</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.tutorials.quick_start"></a><a class="link" href="quick_start.html" title="Quick Start">Quick Start</a>
 </h4></div></div></div>
 <a name="spirit.qi.tutorials.quick_start.why_would_you_want_to_use_spirit_qi_"></a><h6>
-<a name="id1032884"></a>
+<a name="id1067903"></a>
           <a class="link" href="quick_start.html#spirit.qi.tutorials.quick_start.why_would_you_want_to_use_spirit_qi_">Why
           would you want to use Spirit.Qi?</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -41,7 +41,7 @@
           </li>
 </ul></div>
 <a name="spirit.qi.tutorials.roman_numerals.symbol_table"></a><h6>
-<a name="id1040425"></a>
+<a name="id1075171"></a>
           <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.symbol_table">Symbol
           Table</a>
         </h6>
@@ -173,7 +173,7 @@
           They are all parsers.
         </p>
 <a name="spirit.qi.tutorials.roman_numerals.rules"></a><h6>
-<a name="id1041917"></a>
+<a name="id1077124"></a>
           <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.rules">Rules</a>
         </h6>
 <p>
@@ -253,7 +253,7 @@
 <pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">double_</span> <span class="special">&gt;&gt;</span> <span class="special">*(</span><span class="char">','</span> <span class="special">&gt;&gt;</span> <span class="identifier">double_</span><span class="special">);</span>
 </pre>
 <a name="spirit.qi.tutorials.roman_numerals.grammars"></a><h6>
-<a name="id1042310"></a>
+<a name="id1077517"></a>
           <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.grammars">Grammars</a>
         </h6>
 <p>
@@ -358,7 +358,7 @@
           </li>
 </ul></div>
 <a name="spirit.qi.tutorials.roman_numerals.let_s_parse_"></a><h6>
-<a name="id1043037"></a>
+<a name="id1078244"></a>
           <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.let_s_parse_">Let's Parse!</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -233,7 +233,7 @@
           The examples above can be found here: ../../example/qi/actions.cpp
         </p>
 <a name="spirit.qi.tutorials.semantic_actions.phoenix"></a><h6>
-<a name="id1035074"></a>
+<a name="id1070093"></a>
           <a class="link" href="semantic_actions.html#spirit.qi.tutorials.semantic_actions.phoenix">Phoenix</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -31,7 +31,7 @@
           on how to build parsers from the simplest parser, building up as we go.
         </p>
 <a name="spirit.qi.tutorials.warming_up.trivial_example__1_parsing_a_number"></a><h6>
-<a name="id1032929"></a>
+<a name="id1067948"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__1_parsing_a_number">Trivial
           Example #1 Parsing a number</a>
         </h6>
@@ -46,7 +46,7 @@
           parsers and consistent naming conventions help you keep from going insane!
         </p>
 <a name="spirit.qi.tutorials.warming_up.trivial_example__2_parsing_two_numbers"></a><h6>
-<a name="id1032958"></a>
+<a name="id1067977"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__2_parsing_two_numbers">Trivial
           Example #2 Parsing two numbers</a>
         </h6>
@@ -79,7 +79,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit.qi.tutorials.warming_up.trivial_example__3_parsing_one_or_more_numbers"></a><h6>
-<a name="id1033019"></a>
+<a name="id1068038"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__3_parsing_one_or_more_numbers">Trivial
           Example #3 Parsing one or more numbers</a>
         </h6>
@@ -103,7 +103,7 @@
           in most places.
         </p>
 <a name="spirit.qi.tutorials.warming_up.trivial_example__4_parsing_a_comma_delimited_list_of_numbers"></a><h6>
-<a name="id1033064"></a>
+<a name="id1068083"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__4_parsing_a_comma_delimited_list_of_numbers">Trivial
           Example #4 Parsing a comma-delimited list of numbers</a>
         </h6>
@@ -126,7 +126,7 @@
           star encloses the complete expression above.
         </p>
 <a name="spirit.qi.tutorials.warming_up.let_s_parse_"></a><h6>
-<a name="id1033195"></a>
+<a name="id1068214"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.let_s_parse_">Let's Parse!</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/support/multi_pass.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/support/multi_pass.html (original)
+++ trunk/libs/spirit/doc/html/spirit/support/multi_pass.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -61,7 +61,7 @@
         iterator was created.
       </p>
 <a name="spirit.support.multi_pass.using_the_multi_pass"></a><h5>
-<a name="id1127249"></a>
+<a name="id1162479"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.using_the_multi_pass">Using the
         multi_pass</a>
       </h5>
@@ -209,7 +209,7 @@
 <p>
       </p>
 <a name="spirit.support.multi_pass.using_the_flush_multi_pass_parser"></a><h5>
-<a name="id1129645"></a>
+<a name="id1165489"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.using_the_flush_multi_pass_parser">Using
         the flush_multi_pass parser</a>
       </h5>
@@ -231,7 +231,7 @@
         thrown.
       </p>
 <a name="spirit.support.multi_pass.the_multi_pass_policies"></a><h5>
-<a name="id1129738"></a>
+<a name="id1165583"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.the_multi_pass_policies">The multi_pass
         Policies</a>
       </h5>
@@ -272,7 +272,7 @@
         the functionality groups:
       </p>
 <div class="table">
-<a name="id1129844"></a><p class="title"><b>Table 12. Policies needed for default_policy template</b></p>
+<a name="id1165688"></a><p class="title"><b>Table 12. Policies needed for default_policy template</b></p>
 <div class="table-contents"><table class="table" summary="Policies needed for default_policy template">
 <colgroup>
 <col>
@@ -355,7 +355,7 @@
         implementations.
       </p>
 <a name="spirit.support.multi_pass.predefined_policies"></a><h5>
-<a name="id1130036"></a>
+<a name="id1165880"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.predefined_policies">Predefined
         policies</a>
       </h5>
@@ -364,7 +364,7 @@
         policies are defined in the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">iterator_policies</span></code>.
       </p>
 <div class="table">
-<a name="id1130078"></a><p class="title"><b>Table 13. Predefined policy classes</b></p>
+<a name="id1165922"></a><p class="title"><b>Table 13. Predefined policy classes</b></p>
 <div class="table-contents"><table class="table" summary="Predefined policy classes">
 <colgroup>
 <col>
@@ -601,7 +601,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="spirit.support.multi_pass.combinations__how_to_specify_your_own_custom_multi_pass"></a><h5>
-<a name="id1130743"></a>
+<a name="id1166587"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.combinations__how_to_specify_your_own_custom_multi_pass">Combinations:
         How to specify your own custom multi_pass</a>
       </h5>
@@ -647,7 +647,7 @@
         behaviors while wrapping an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;</span></code>.
       </p>
 <a name="spirit.support.multi_pass.dealing_with_constant_look_ahead"></a><h5>
-<a name="id1131165"></a>
+<a name="id1167009"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.dealing_with_constant_look_ahead">Dealing
         with constant look ahead</a>
       </h5>
@@ -666,7 +666,7 @@
         StoragePolicy.
       </p>
 <a name="spirit.support.multi_pass.how_to_write_a_functor_for_use_with_the__code__phrase_role__identifier__functor_input__phrase___code__inputpolicy"></a><h5>
-<a name="id1131297"></a>
+<a name="id1167141"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.how_to_write_a_functor_for_use_with_the__code__phrase_role__identifier__functor_input__phrase___code__inputpolicy">How
         to write a functor for use with the <code class="computeroutput"><span class="identifier">functor_input</span></code>
         InputPolicy</a>
@@ -725,7 +725,7 @@
 <span class="special">}</span>
 </pre>
 <a name="spirit.support.multi_pass.how_to_write_policies_for_use_with_multi_pass"></a><h5>
-<a name="id1131981"></a>
+<a name="id1167765"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.how_to_write_policies_for_use_with_multi_pass">How
         to write policies for use with multi_pass</a>
       </h5>
@@ -742,7 +742,7 @@
         copies of a particular <code class="computeroutput"><span class="identifier">multi_pass</span></code>.
       </p>
 <a name="spirit.support.multi_pass.inputpolicy"></a><h5>
-<a name="id1132055"></a>
+<a name="id1167839"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.inputpolicy">InputPolicy</a>
       </h5>
 <p>
@@ -838,7 +838,7 @@
         constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
       </p>
 <a name="spirit.support.multi_pass.ownershippolicy"></a><h5>
-<a name="id1132935"></a>
+<a name="id1168719"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.ownershippolicy">OwnershipPolicy</a>
       </h5>
 <p>
@@ -905,7 +905,7 @@
         constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
       </p>
 <a name="spirit.support.multi_pass.checkingpolicy"></a><h5>
-<a name="id1133469"></a>
+<a name="id1169253"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.checkingpolicy">CheckingPolicy</a>
       </h5>
 <p>
@@ -964,7 +964,7 @@
         constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
       </p>
 <a name="spirit.support.multi_pass.storagepolicy"></a><h5>
-<a name="id1133920"></a>
+<a name="id1169704"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.storagepolicy">StoragePolicy</a>
       </h5>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/what_s_new.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/what_s_new.html (original)
+++ trunk/libs/spirit/doc/html/spirit/what_s_new.html 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.what_s_new"></a><a class="link" href="what_s_new.html" title="What's New">What's New</a>
 </h2></div></div></div>
 <a name="spirit.what_s_new.spirit_classic"></a><h4>
-<a name="id1023116"></a>
+<a name="id1059000"></a>
       <a class="link" href="what_s_new.html#spirit.what_s_new.spirit_classic">Spirit Classic</a>
     </h4>
 <p>
@@ -66,11 +66,11 @@
       for existing applications.
     </p>
 <a name="spirit.what_s_new.spirit_v2_1"></a><h4>
-<a name="id1023307"></a>
+<a name="id1059191"></a>
       <a class="link" href="what_s_new.html#spirit.what_s_new.spirit_v2_1">Spirit V2.1</a>
     </h4>
 <a name="spirit.what_s_new.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_0_to_2_x"></a><h4>
-<a name="id1023320"></a>
+<a name="id1059204"></a>
       <a class="link" href="what_s_new.html#spirit.what_s_new.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_0_to_2_x">What's
       changed in <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span>
       from V2.0 to 2.x</a>
@@ -159,7 +159,7 @@
       </li>
 </ul></div>
 <a name="spirit.what_s_new.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_0_to_2_x"></a><h4>
-<a name="id1023872"></a>
+<a name="id1059756"></a>
       <a class="link" href="what_s_new.html#spirit.what_s_new.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_0_to_2_x">What's
       changed in <span class="emphasis"><em>Spirit.Lex</em></span> from V2.0 to 2.x</a>
     </h4>

Modified: trunk/libs/spirit/doc/karma/numeric_performance.qbk
==============================================================================
--- trunk/libs/spirit/doc/karma/numeric_performance.qbk (original)
+++ trunk/libs/spirit/doc/karma/numeric_performance.qbk 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -16,11 +16,11 @@
 using `sprintf`, C++ iostreams, __boost_format__, and __karma__.
 
 For the full source code of the performance test please see here:
-[@../../example/karma/double_performance.cpp double_performance.cpp]). All the
+[@../../benchmarks/karma/double_performance.cpp double_performance.cpp]). All the
 measurements have been done by executing 1000000 iterations for each
 formatting type (NUMITERATIONS is set to 1000000 in the code shown below).
 
-[import ../example/karma/double_performance.cpp]
+[import ../benchmarks/karma/double_performance.cpp]
 
 Code used to measure the performance for `sprintf`:
 
@@ -71,11 +71,11 @@
 and __karma__.
 
 For the full source code of the performance test please see here:
-[@../../example/karma/format_performance.cpp format_performance.cpp]). All the
+[@../../benchmarks/karma/format_performance.cpp format_performance.cpp]). All the
 measurements have been done by doing 1000000 iterations for each formatting
 type (NUMITERATIONS is set to 1000000).
 
-[import ../example/karma/format_performance.cpp]
+[import ../benchmarks/karma/format_performance.cpp]
 
 Code used to measure the performance for sprintf:
 

Modified: trunk/libs/spirit/example/karma/CMakeLists.txt
==============================================================================
--- trunk/libs/spirit/example/karma/CMakeLists.txt (original)
+++ trunk/libs/spirit/example/karma/CMakeLists.txt 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -8,8 +8,5 @@
 boost_add_executable(calc2_ast_vm)
 boost_add_executable(mini_xml_karma)
 
-# performance tests
-boost_add_executable(double_performance)
-boost_add_executable(format_performance)
 
 

Modified: trunk/libs/spirit/example/karma/Jamfile
==============================================================================
--- trunk/libs/spirit/example/karma/Jamfile (original)
+++ trunk/libs/spirit/example/karma/Jamfile 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
@@ -20,6 +20,3 @@
 # not ported yet:
 # exe functor_facilities : functor_facilities.cpp ;
 
-# performance tests
-exe double_performance : double_performance.cpp ;
-exe format_performance : format_performance.cpp ;

Deleted: trunk/libs/spirit/example/karma/double_performance.cpp
==============================================================================
--- trunk/libs/spirit/example/karma/double_performance.cpp 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
+++ (empty file)
@@ -1,169 +0,0 @@
-// Copyright (c) 2002-2009 Joel Hartmut Kaiser
-// Copyright (c) 2002-2009 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)
-
-#include <boost/config/warning_disable.hpp>
-#include <boost/spirit/include/karma.hpp>
-#include <boost/format.hpp>
-
-#include <iostream>
-
-#include "high_resolution_timer.hpp"
-
-#define NUMITERATIONS 1000000
-
-///////////////////////////////////////////////////////////////////////////////
-// We generate plain floating point numbers in this test
-//[karma_double_performance_definitions
-using boost::spirit::karma::double_;
-//]
-
-void format_performance_karma()
-{
- using boost::spirit::karma::generate;
-
- //[karma_double_performance_plain
- char buffer[256];
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i) {
- char *p = buffer;
- generate(p, double_, 12345.12345);
- *p = '\0';
- }
- //]
-
- std::cout << "karma: " << t.elapsed() << std::endl;
-// std::cout << buffer << std::endl;
-}
-
-void format_performance_rule()
-{
- using boost::spirit::karma::generate;
-
- boost::spirit::karma::rule<char*, double()> r;
-
- //[karma_double_performance_rule
- char buffer[256];
- r %= double_;
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i) {
- char *p = buffer;
- generate(p, r, 12345.12345);
- *p = '\0';
- }
- //]
-
- std::cout << "karma (rule): " << t.elapsed() << std::endl;
-// std::cout << buffer << std::endl;
-}
-
-void format_performance_direct()
-{
- using boost::spirit::karma::generate;
- using boost::spirit::karma::real_inserter;
-
- //[karma_double_performance_direct
- typedef real_inserter<double> inserter;
- char buffer[256];
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i) {
- char *p = buffer;
- inserter::call(p, 12345.12345);
- *p = '\0';
- }
- //]
-
- std::cout << "karma (direct): " << t.elapsed() << std::endl;
-// std::cout << buffer << std::endl;
-}
-
-void format_performance_string()
-{
- using boost::spirit::karma::generate;
-
- //[karma_double_performance_string
- std::string generated;
- std::back_insert_iterator<std::string> sink(generated);
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i) {
- generated.clear();
- generate(sink, double_, 12345.12345);
- }
- //]
-
- std::cout << "karma (string): " << t.elapsed() << std::endl;
-// std::cout << generated << std::endl;
-}
-
-// Boost.Format
-void format_performance_boost_format()
-{
- //[karma_double_performance_format
- std::string generated;
- boost::format double_format("%f");
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i)
- generated = boost::str(double_format % 12345.12345);
- //]
-
- std::cout << "format: " << t.elapsed() << std::endl;
-// std::cout << strm.str() << std::endl;
-}
-
-void format_performance_printf()
-{
- util::high_resolution_timer t;
-
- //[karma_double_performance_printf
- char buffer[256];
- for (int i = 0; i < NUMITERATIONS; ++i) {
- sprintf(buffer, "%f", 12345.12345);
- }
- //]
-
- std::cout << "printf: " << t.elapsed() << std::endl;
-// std::cout << buffer << std::endl;
-}
-
-void format_performance_iostreams()
-{
- //[karma_double_performance_iostreams
- std::stringstream strm;
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i) {
- strm.str("");
- strm << 12345.12345;
- }
- //]
-
- std::cout << "iostreams: " << t.elapsed() << std::endl;
-// std::cout << strm.str() << std::endl;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-int main()
-{
- format_performance_printf();
- format_performance_iostreams();
- format_performance_boost_format();
- format_performance_karma();
- format_performance_string();
- format_performance_rule();
- format_performance_direct();
- return 0;
-}
-

Deleted: trunk/libs/spirit/example/karma/format_performance.cpp
==============================================================================
--- trunk/libs/spirit/example/karma/format_performance.cpp 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
+++ (empty file)
@@ -1,172 +0,0 @@
-// Copyright (c) 2002-2009 Joel Hartmut Kaiser
-// Copyright (c) 2002-2009 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)
-
-#include <boost/config/warning_disable.hpp>
-#include <boost/spirit/include/karma.hpp>
-#include <boost/format.hpp>
-
-#include <iostream>
-
-#include "high_resolution_timer.hpp"
-
-#define NUMITERATIONS 1000000
-
-///////////////////////////////////////////////////////////////////////////////
-// policy for real_generator, which forces to output trailing zeros in the
-// fractional part
-//[karma_format_performance_definitions
-template <typename T>
-struct double3_policy : boost::spirit::karma::real_policies<T>
-{
- // we want to generate up to 3 fractional digits
- static unsigned int precision(T) { return 3; }
-};
-
-typedef boost::spirit::karma::real_generator<double, double3_policy<double> >
- double3_type;
-double3_type const double3 = double3_type();
-//]
-
-void format_performance_karma()
-{
- using boost::spirit::karma::left_align;
- using boost::spirit::karma::generate;
-
- //[karma_format_performance_plain
- char buffer[256];
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i) {
- char *p = buffer;
- generate(p
- , '[' << left_align(14)[double3] << left_align(14)[double3] << ']'
- , 12345.12345, 12345.12345);
- *p = '\0';
- }
- //]
-
- std::cout << "karma: " << t.elapsed() << std::endl;
-// std::cout << buffer << std::endl;
-}
-
-void format_performance_rule()
-{
- using boost::spirit::karma::left_align;
- using boost::spirit::karma::generate;
-
- typedef boost::fusion::vector<double, double> rtype;
- boost::spirit::karma::rule<char*, rtype()> r;
-
- //[karma_format_performance_rule
- char buffer[256];
- r %= '[' << left_align(14)[double3] << left_align(14)[double3] << ']';
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i) {
- char *p = buffer;
- generate(p, r, 12345.12345, 12345.12345);
- *p = '\0';
- }
- //]
-
- std::cout << "karma (rule): " << t.elapsed() << std::endl;
-// std::cout << buffer << std::endl;
-}
-
-void format_performance_string()
-{
- using boost::spirit::karma::left_align;
- using boost::spirit::karma::generate;
-
- //[karma_format_performance_string
- std::string generated;
- std::back_insert_iterator<std::string> sink(generated);
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i) {
- generated.clear();
- generate(sink
- , '[' << left_align(14)[double3] << left_align(14)[double3] << ']'
- , 12345.12345, 12345.12345);
- }
- //]
-
- std::cout << "karma (string): " << t.elapsed() << std::endl;
-// std::cout << generated << std::endl;
-}
-
-// Boost.Format
-void format_performance_boost_format()
-{
- //[karma_format_performance_format
- std::string generated;
- boost::format outformat("[%-14.3f%-14.3f]");
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i)
- generated = boost::str(outformat % 12345.12345 % 12345.12345);
- //]
-
- std::cout << "format: " << t.elapsed() << std::endl;
-// std::cout << strm.str() << std::endl;
-}
-
-void format_performance_printf()
-{
- util::high_resolution_timer t;
-
- //[karma_format_performance_printf
- char buffer[256];
- for (int i = 0; i < NUMITERATIONS; ++i) {
- sprintf(buffer, "[%-14.3f%-14.3f]", 12345.12345, 12345.12345);
- }
- //]
-
- std::cout << "printf: " << t.elapsed() << std::endl;
-// std::cout << buffer << std::endl;
-}
-
-void format_performance_iostreams()
-{
- //[karma_format_performance_iostreams
- std::stringstream strm;
- //<-
- util::high_resolution_timer t;
- //->
- for (int i = 0; i < NUMITERATIONS; ++i) {
- strm.str("");
- strm << '['
- << std::setiosflags(std::ios::fixed)
- << std::left
- << std::setprecision(3)
- << std::setw(14)
- << 12345.12345
- << std::setw(14)
- << 12345.12345
- << ']';
- }
- //]
-
- std::cout << "iostreams: " << t.elapsed() << std::endl;
-// std::cout << strm.str() << std::endl;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-int main()
-{
- format_performance_printf();
- format_performance_iostreams();
- format_performance_boost_format();
- format_performance_karma();
- format_performance_string();
- format_performance_rule();
- return 0;
-}
-

Deleted: trunk/libs/spirit/example/karma/high_resolution_timer.hpp
==============================================================================
--- trunk/libs/spirit/example/karma/high_resolution_timer.hpp 2009-07-17 23:30:28 EDT (Fri, 17 Jul 2009)
+++ (empty file)
@@ -1,320 +0,0 @@
-// Copyright (c) 2005-2009 Hartmut Kaiser
-//
-// 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)
-
-#if !defined(HIGH_RESOLUTION_TIMER_MAR_24_2008_1222PM)
-#define HIGH_RESOLUTION_TIMER_MAR_24_2008_1222PM
-
-#include <boost/config.hpp>
-#include <boost/throw_exception.hpp>
-
-#if defined(BOOST_HAS_UNISTD_H)
-#include <unistd.h>
-#endif
-#include <time.h>
-
-#if defined(BOOST_WINDOWS)
-
-#include <stdexcept>
-#include <limits>
-#include <windows.h>
-
-namespace util
-{
- ///////////////////////////////////////////////////////////////////////////////
- //
- // high_resolution_timer
- // A timer object measures elapsed time.
- // CAUTION: Windows only!
- //
- ///////////////////////////////////////////////////////////////////////////////
- class high_resolution_timer
- {
- public:
- high_resolution_timer()
- {
- restart();
- }
-
- high_resolution_timer(double t)
- {
- LARGE_INTEGER frequency;
- if (!QueryPerformanceFrequency(&frequency))
- boost::throw_exception(std::runtime_error("Couldn't acquire frequency"));
-
- start_time.QuadPart = (LONGLONG)(t * frequency.QuadPart);
- }
-
- high_resolution_timer(high_resolution_timer const& rhs)
- : start_time(rhs.start_time)
- {
- }
-
- static double now()
- {
- SYSTEMTIME st;
- GetSystemTime(&st);
-
- FILETIME ft;
- SystemTimeToFileTime(&st, &ft);
-
- LARGE_INTEGER now;
- now.LowPart = ft.dwLowDateTime;
- now.HighPart = ft.dwHighDateTime;
-
- // FileTime is in 100ns increments, result needs to be in [s]
- return now.QuadPart * 1e-7;
- }
-
- void restart()
- {
- if (!QueryPerformanceCounter(&start_time))
- boost::throw_exception(std::runtime_error("Couldn't initialize start_time"));
- }
- double elapsed() const // return elapsed time in seconds
- {
- LARGE_INTEGER now;
- if (!QueryPerformanceCounter(&now))
- boost::throw_exception(std::runtime_error("Couldn't get current time"));
-
- LARGE_INTEGER frequency;
- if (!QueryPerformanceFrequency(&frequency))
- boost::throw_exception(std::runtime_error("Couldn't acquire frequency"));
-
- return double(now.QuadPart - start_time.QuadPart) / frequency.QuadPart;
- }
-
- double elapsed_max() const // return estimated maximum value for elapsed()
- {
- LARGE_INTEGER frequency;
- if (!QueryPerformanceFrequency(&frequency))
- boost::throw_exception(std::runtime_error("Couldn't acquire frequency"));
-
- return double((std::numeric_limits<LONGLONG>::max)() - start_time.QuadPart) /
- double(frequency.QuadPart);
- }
-
- double elapsed_min() const // return minimum value for elapsed()
- {
- LARGE_INTEGER frequency;
- if (!QueryPerformanceFrequency(&frequency))
- boost::throw_exception(std::runtime_error("Couldn't acquire frequency"));
-
- return 1.0 / frequency.QuadPart;
- }
-
- private:
- LARGE_INTEGER start_time;
- };
-
-} // namespace util
-
-#elif defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0 && defined(_POSIX_THREAD_CPUTIME)
-
-#if _POSIX_THREAD_CPUTIME > 0 // timer always supported
-
-namespace util
-{
-
- ///////////////////////////////////////////////////////////////////////////////
- //
- // high_resolution_timer
- // A timer object measures elapsed time.
- //
- ///////////////////////////////////////////////////////////////////////////////
- class high_resolution_timer
- {
- public:
- high_resolution_timer()
- {
- start_time.tv_sec = 0;
- start_time.tv_nsec = 0;
-
- restart();
- }
-
- high_resolution_timer(double t)
- {
- start_time.tv_sec = time_t(t);
- start_time.tv_nsec = (t - start_time.tv_sec) * 1e9;
- }
-
- high_resolution_timer(high_resolution_timer const& rhs)
- : start_time(rhs.start_time)
- {
- }
-
- static double now()
- {
- timespec now;
- if (-1 == clock_gettime(CLOCK_REALTIME, &now))
- boost::throw_exception(std::runtime_error("Couldn't get current time"));
- return double(now.tv_sec) + double(now.tv_nsec) * 1e-9;
- }
-
- void restart()
- {
- if (-1 == clock_gettime(CLOCK_REALTIME, &start_time))
- boost::throw_exception(std::runtime_error("Couldn't initialize start_time"));
- }
- double elapsed() const // return elapsed time in seconds
- {
- timespec now;
- if (-1 == clock_gettime(CLOCK_REALTIME, &now))
- boost::throw_exception(std::runtime_error("Couldn't get current time"));
-
- if (now.tv_sec == start_time.tv_sec)
- return double(now.tv_nsec - start_time.tv_nsec) * 1e-9;
-
- return double(now.tv_sec - start_time.tv_sec) +
- (double(now.tv_nsec - start_time.tv_nsec) * 1e-9);
- }
-
- double elapsed_max() const // return estimated maximum value for elapsed()
- {
- return double((std::numeric_limits<time_t>::max)() - start_time.tv_sec);
- }
-
- double elapsed_min() const // return minimum value for elapsed()
- {
- timespec resolution;
- if (-1 == clock_getres(CLOCK_REALTIME, &resolution))
- boost::throw_exception(std::runtime_error("Couldn't get resolution"));
- return double(resolution.tv_sec + resolution.tv_nsec * 1e-9);
- }
-
- private:
- timespec start_time;
- };
-
-} // namespace util
-
-#else // _POSIX_THREAD_CPUTIME > 0
-
-#include <boost/timer.hpp>
-
-// availability of high performance timers must be checked at runtime
-namespace util
-{
- ///////////////////////////////////////////////////////////////////////////////
- //
- // high_resolution_timer
- // A timer object measures elapsed time.
- //
- ///////////////////////////////////////////////////////////////////////////////
- class high_resolution_timer
- {
- public:
- high_resolution_timer()
- : use_backup(sysconf(_SC_THREAD_CPUTIME) <= 0)
- {
- if (!use_backup) {
- start_time.tv_sec = 0;
- start_time.tv_nsec = 0;
- }
- restart();
- }
-
- high_resolution_timer(double t)
- : use_backup(sysconf(_SC_THREAD_CPUTIME) <= 0)
- {
- if (!use_backup) {
- start_time.tv_sec = time_t(t);
- start_time.tv_nsec = (t - start_time.tv_sec) * 1e9;
- }
- }
-
- high_resolution_timer(high_resolution_timer const& rhs)
- : use_backup(sysconf(_SC_THREAD_CPUTIME) <= 0),
- start_time(rhs.start_time)
- {
- }
-
- static double now()
- {
- if (sysconf(_SC_THREAD_CPUTIME) <= 0)
- return double(std::clock());
-
- timespec now;
- if (-1 == clock_gettime(CLOCK_REALTIME, &now))
- boost::throw_exception(std::runtime_error("Couldn't get current time"));
- return double(now.tv_sec) + double(now.tv_nsec) * 1e-9;
- }
-
- void restart()
- {
- if (use_backup)
- start_time_backup.restart();
- else if (-1 == clock_gettime(CLOCK_REALTIME, &start_time))
- boost::throw_exception(std::runtime_error("Couldn't initialize start_time"));
- }
- double elapsed() const // return elapsed time in seconds
- {
- if (use_backup)
- return start_time_backup.elapsed();
-
- timespec now;
- if (-1 == clock_gettime(CLOCK_REALTIME, &now))
- boost::throw_exception(std::runtime_error("Couldn't get current time"));
-
- if (now.tv_sec == start_time.tv_sec)
- return double(now.tv_nsec - start_time.tv_nsec) * 1e-9;
-
- return double(now.tv_sec - start_time.tv_sec) +
- (double(now.tv_nsec - start_time.tv_nsec) * 1e-9);
- }
-
- double elapsed_max() const // return estimated maximum value for elapsed()
- {
- if (use_backup)
- start_time_backup.elapsed_max();
-
- return double((std::numeric_limits<time_t>::max)() - start_time.tv_sec);
- }
-
- double elapsed_min() const // return minimum value for elapsed()
- {
- if (use_backup)
- start_time_backup.elapsed_min();
-
- timespec resolution;
- if (-1 == clock_getres(CLOCK_REALTIME, &resolution))
- boost::throw_exception(std::runtime_error("Couldn't get resolution"));
- return double(resolution.tv_sec + resolution.tv_nsec * 1e-9);
- }
-
- private:
- bool use_backup;
- timespec start_time;
- boost::timer start_time_backup;
- };
-
-} // namespace util
-
-#endif // _POSIX_THREAD_CPUTIME > 0
-
-#else // !defined(BOOST_WINDOWS) && (!defined(_POSIX_TIMERS)
- // || _POSIX_TIMERS <= 0
- // || !defined(_POSIX_THREAD_CPUTIME)
- // || _POSIX_THREAD_CPUTIME <= 0)
-
-// For platforms other than Windows or Linux, simply fall back to boost::timer
-#include <boost/timer.hpp>
-
-namespace util
-{
- struct high_resolution_timer
- : boost::timer
- {
- static double now()
- {
- return double(std::clock());
- }
- };
-}
-
-#endif
-
-#endif
-


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