Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68745 - in trunk/boost/spirit/home: karma/auto karma/binary karma/numeric qi/auto qi/auxiliary qi/binary qi/char qi/directive qi/numeric qi/stream qi/string support
From: joel_at_[hidden]
Date: 2011-02-09 05:48:00


Author: djowel
Date: 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
New Revision: 68745
URL: http://svn.boost.org/trac/boost/changeset/68745

Log:
added option to have no predefined terminals
Text files modified:
   trunk/boost/spirit/home/karma/auto/auto.hpp | 18 +-
   trunk/boost/spirit/home/karma/auto/meta_create.hpp | 224 ++++++++++++++++++++--------------------
   trunk/boost/spirit/home/karma/binary/binary.hpp | 33 +++--
   trunk/boost/spirit/home/karma/numeric/bool.hpp | 48 ++++----
   trunk/boost/spirit/home/karma/numeric/int.hpp | 59 +++++----
   trunk/boost/spirit/home/karma/numeric/real.hpp | 51 ++++----
   trunk/boost/spirit/home/karma/numeric/uint.hpp | 88 ++++++++-------
   trunk/boost/spirit/home/qi/auto/auto.hpp | 5
   trunk/boost/spirit/home/qi/auto/meta_create.hpp | 52 ++++----
   trunk/boost/spirit/home/qi/auxiliary/attr.hpp | 7
   trunk/boost/spirit/home/qi/auxiliary/eoi.hpp | 2
   trunk/boost/spirit/home/qi/auxiliary/eol.hpp | 2
   trunk/boost/spirit/home/qi/auxiliary/eps.hpp | 2
   trunk/boost/spirit/home/qi/binary/binary.hpp | 23 ++-
   trunk/boost/spirit/home/qi/char/char.hpp | 4
   trunk/boost/spirit/home/qi/directive/as.hpp | 16 +-
   trunk/boost/spirit/home/qi/directive/hold.hpp | 2
   trunk/boost/spirit/home/qi/directive/lexeme.hpp | 2
   trunk/boost/spirit/home/qi/directive/matches.hpp | 2
   trunk/boost/spirit/home/qi/directive/no_skip.hpp | 2
   trunk/boost/spirit/home/qi/directive/omit.hpp | 2
   trunk/boost/spirit/home/qi/directive/raw.hpp | 2
   trunk/boost/spirit/home/qi/directive/repeat.hpp | 8
   trunk/boost/spirit/home/qi/directive/skip.hpp | 2
   trunk/boost/spirit/home/qi/numeric/bool.hpp | 29 ++--
   trunk/boost/spirit/home/qi/numeric/int.hpp | 38 +++---
   trunk/boost/spirit/home/qi/numeric/real.hpp | 35 +++--
   trunk/boost/spirit/home/qi/numeric/uint.hpp | 47 +++++---
   trunk/boost/spirit/home/qi/stream/stream.hpp | 4
   trunk/boost/spirit/home/qi/string/lit.hpp | 4
   trunk/boost/spirit/home/support/common_terminals.hpp | 149 +++++++++++++++-----------
   trunk/boost/spirit/home/support/terminal.hpp | 70 +++++++++---
   32 files changed, 587 insertions(+), 445 deletions(-)

Modified: trunk/boost/spirit/home/karma/auto/auto.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/auto/auto.hpp (original)
+++ trunk/boost/spirit/home/karma/auto/auto.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -47,8 +47,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit { namespace karma
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::auto_;
- using spirit::auto__type;
+#endif
+ using spirit::auto_type;
 
     ///////////////////////////////////////////////////////////////////////////
     template <typename Modifiers>
@@ -66,7 +68,7 @@
         auto_generator(Modifiers const& modifiers)
           : modifiers_(modifiers) {}
 
- // auto_generator has an attached attribute
+ // auto_generator has an attached attribute
         template <
             typename OutputIterator, typename Context, typename Delimiter
           , typename Attribute>
@@ -84,8 +86,8 @@
         static bool
         generate(OutputIterator&, Context&, Delimiter const&, unused_type)
         {
- // It is not possible (doesn't make sense) to use auto_ generators
- // without providing any attribute, as the generator doesn't 'know'
+ // It is not possible (doesn't make sense) to use auto_ generators
+ // without providing any attribute, as the generator doesn't 'know'
             // what to output. The following assertion fires if this situation
             // is detected in your code.
             BOOST_SPIRIT_ASSERT_MSG(false, auto_not_usable_without_attribute, ());
@@ -116,10 +118,10 @@
 
         lit_auto_generator(typename add_reference<T>::type t, Modifiers const& modifiers)
           : t_(t)
- , generator_(compile<karma::domain>(create_generator<T>(), modifiers))
+ , generator_(compile<karma::domain>(create_generator<T>(), modifiers))
         {}
 
- // auto_generator has an attached attribute
+ // auto_generator has an attached attribute
         template <
             typename OutputIterator, typename Context, typename Delimiter
           , typename Attribute>
@@ -135,7 +137,7 @@
             return info("auto_");
         }
 
- typedef typename spirit::result_of::create_generator<T>::type
+ typedef typename spirit::result_of::create_generator<T>::type
             generator_type;
 
         typedef typename spirit::result_of::compile<
@@ -155,7 +157,7 @@
 
     // auto_
     template <typename Modifiers>
- struct make_primitive<tag::auto_, Modifiers>
+ struct make_primitive<tag::auto_, Modifiers>
     {
         typedef auto_generator<Modifiers> result_type;
 

Modified: trunk/boost/spirit/home/karma/auto/meta_create.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/auto/meta_create.hpp (original)
+++ trunk/boost/spirit/home/karma/auto/meta_create.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -30,8 +30,8 @@
 {
     ///////////////////////////////////////////////////////////////////////////
     // compatible STL containers
- template <typename Container>
- struct meta_create_container
+ template <typename Container>
+ struct meta_create_container
     {
         typedef make_unary_proto_expr<
             typename Container::value_type
@@ -48,71 +48,71 @@
 
     ///////////////////////////////////////////////////////////////////////////
     // String types
- template <typename String>
- struct meta_create_string
+ template <typename String>
+ struct meta_create_string
     {
- typedef spirit::standard::string_type type;
+ typedef spirit::standard::string_type type;
         static type const& call() { return spirit::standard::string; }
     };
 
- template <>
+ template <>
     struct meta_create_string<wchar_t*>
     {
- typedef spirit::standard_wide::string_type type;
+ typedef spirit::standard_wide::string_type type;
         static type const& call() { return spirit::standard_wide::string; }
     };
 
- template <>
+ template <>
     struct meta_create_string<wchar_t const*>
     {
- typedef spirit::standard_wide::string_type type;
+ typedef spirit::standard_wide::string_type type;
         static type const& call() { return spirit::standard_wide::string; }
     };
 
- template <int N>
+ template <int N>
     struct meta_create_string<wchar_t[N]>
     {
- typedef spirit::standard_wide::string_type type;
+ typedef spirit::standard_wide::string_type type;
         static type const& call() { return spirit::standard_wide::string; }
     };
 
- template <int N>
+ template <int N>
     struct meta_create_string<wchar_t const[N]>
     {
- typedef spirit::standard_wide::string_type type;
+ typedef spirit::standard_wide::string_type type;
         static type const& call() { return spirit::standard_wide::string; }
     };
 
- template <int N>
+ template <int N>
     struct meta_create_string<wchar_t(&)[N]>
     {
- typedef spirit::standard_wide::string_type type;
+ typedef spirit::standard_wide::string_type type;
         static type const& call() { return spirit::standard_wide::string; }
     };
 
- template <int N>
+ template <int N>
     struct meta_create_string<wchar_t const(&)[N]>
     {
- typedef spirit::standard_wide::string_type type;
+ typedef spirit::standard_wide::string_type type;
         static type const& call() { return spirit::standard_wide::string; }
     };
 
- template <typename Traits, typename Allocator>
+ template <typename Traits, typename Allocator>
     struct meta_create_string<std::basic_string<wchar_t, Traits, Allocator> >
     {
- typedef spirit::standard_wide::string_type type;
+ typedef spirit::standard_wide::string_type type;
         static type const& call() { return spirit::standard_wide::string; }
     };
 
     ///////////////////////////////////////////////////////////////////////////
     // Fusion sequences
- template <typename Sequence>
- struct meta_create_sequence
+ template <typename Sequence>
+ struct meta_create_sequence
     {
         // create a mpl sequence from the given fusion sequence
         typedef typename mpl::fold<
             typename fusion::result_of::as_vector<Sequence>::type
- , mpl::vector<>, mpl::push_back<mpl::_, mpl::_>
+ , mpl::vector<>, mpl::push_back<mpl::_, mpl::_>
>::type sequence_type;
 
         typedef make_nary_proto_expr<
@@ -128,10 +128,10 @@
     };
 
     ///////////////////////////////////////////////////////////////////////////
- // the default is to use the standard streaming operator unless it's a
+ // the default is to use the standard streaming operator unless it's a
     // STL container or a fusion sequence
 
- // The default implementation will be chosen if no predefined mapping of
+ // The default implementation will be chosen if no predefined mapping of
     // the data type T to a Karma component is defined.
     struct no_auto_mapping_exists {};
 
@@ -142,9 +142,9 @@
     struct meta_create_impl<T
           , typename enable_if<
                 mpl::and_<
- traits::is_container<T>
+ traits::is_container<T>
                   , mpl::not_<traits::is_string<T> >
- , mpl::not_<fusion::traits::is_sequence<T> >
+ , mpl::not_<fusion::traits::is_sequence<T> >
> >::type>
       : meta_create_container<T> {};
 
@@ -155,7 +155,7 @@
 
     template <typename T>
     struct meta_create_impl<T, typename enable_if<
- spirit::detail::is_fusion_sequence_but_not_proto_expr<T>
+ spirit::detail::is_fusion_sequence_but_not_proto_expr<T>
>::type>
       : meta_create_sequence<T> {};
 
@@ -164,8 +164,8 @@
 
     ///////////////////////////////////////////////////////////////////////////
     // optional
- template <typename T>
- struct meta_create<boost::optional<T> >
+ template <typename T>
+ struct meta_create<boost::optional<T> >
     {
         typedef make_unary_proto_expr<
             T, proto::tag::negate, karma::domain
@@ -181,8 +181,8 @@
 
     ///////////////////////////////////////////////////////////////////////////
     // alternatives
- template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
- struct meta_create<boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
+ template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
+ struct meta_create<boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
     {
         typedef make_nary_proto_expr<
             typename boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>::types
@@ -201,113 +201,113 @@
     // predefined specializations for primitive components
 
     // character generator
- template <>
- struct meta_create<char>
- {
+ template <>
+ struct meta_create<char>
+ {
         typedef spirit::standard::char_type type;
         static type const& call() { return spirit::standard::char_; }
     };
- template <>
- struct meta_create<signed char>
- {
+ template <>
+ struct meta_create<signed char>
+ {
         typedef spirit::standard::char_type type;
         static type const& call() { return spirit::standard::char_; }
     };
- template <>
- struct meta_create<wchar_t>
- {
+ template <>
+ struct meta_create<wchar_t>
+ {
         typedef spirit::standard_wide::char_type type;
         static type const& call() { return spirit::standard_wide::char_; }
     };
 
- template <>
- struct meta_create<unsigned char>
- {
+ template <>
+ struct meta_create<unsigned char>
+ {
         typedef spirit::standard::char_type type;
         static type const& call() { return spirit::standard::char_; }
     };
 
     // boolean generator
- template <>
- struct meta_create<bool>
- {
- typedef spirit::bool__type type;
- static type const& call() { return spirit::bool_; }
+ template <>
+ struct meta_create<bool>
+ {
+ typedef spirit::bool_type type;
+ static type call() { return type(); }
     };
 
     // integral generators
- template <>
- struct meta_create<int>
- {
- typedef spirit::int__type type;
- static type const& call() { return spirit::int_; }
- };
- template <>
- struct meta_create<short>
- {
- typedef spirit::short__type type;
- static type const& call() { return spirit::short_; }
- };
- template <>
- struct meta_create<long>
- {
- typedef spirit::long__type type;
- static type const& call() { return spirit::long_; }
- };
- template <>
- struct meta_create<unsigned int>
- {
- typedef spirit::uint__type type;
- static type const& call() { return spirit::uint_; }
+ template <>
+ struct meta_create<int>
+ {
+ typedef spirit::int_type type;
+ static type call() { return type(); }
+ };
+ template <>
+ struct meta_create<short>
+ {
+ typedef spirit::short_type type;
+ static type call() { return type(); }
+ };
+ template <>
+ struct meta_create<long>
+ {
+ typedef spirit::long_type type;
+ static type call() { return type(); }
+ };
+ template <>
+ struct meta_create<unsigned int>
+ {
+ typedef spirit::uint_type type;
+ static type call() { return type(); }
     };
 #if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
- template <>
- struct meta_create<unsigned short>
- {
- typedef spirit::ushort__type type;
- static type const& call() { return spirit::ushort_; }
+ template <>
+ struct meta_create<unsigned short>
+ {
+ typedef spirit::ushort_type type;
+ static type call() { return type(); }
     };
 #endif
- template <>
- struct meta_create<unsigned long>
- {
- typedef spirit::ulong__type type;
- static type const& call() { return spirit::ulong_; }
+ template <>
+ struct meta_create<unsigned long>
+ {
+ typedef spirit::ulong_type type;
+ static type call() { return type(); }
     };
 
 #ifdef BOOST_HAS_LONG_LONG
- template <>
- struct meta_create<boost::long_long_type>
- {
- typedef spirit::long_long_type type;
- static type const& call() { return spirit::long_long; }
- };
- template <>
- struct meta_create<boost::ulong_long_type>
- {
- typedef spirit::ulong_long_type type;
- static type const& call() { return spirit::ulong_long; }
+ template <>
+ struct meta_create<boost::long_long_type>
+ {
+ typedef spirit::long_long_type type;
+ static type call() { return type(); }
+ };
+ template <>
+ struct meta_create<boost::ulong_long_type>
+ {
+ typedef spirit::ulong_long_type type;
+ static type call() { return type(); }
     };
 #endif
 
     // floating point generators
- template <>
- struct meta_create<float>
- {
- typedef spirit::float__type type;
- static type const& call() { return spirit::float_; }
- };
- template <>
- struct meta_create<double>
- {
- typedef spirit::double__type type;
- static type const& call() { return spirit::double_; }
- };
- template <>
- struct meta_create<long double>
- {
- typedef spirit::long_double_type type;
- static type const& call() { return spirit::long_double; }
+ template <>
+ struct meta_create<float>
+ {
+ typedef spirit::float_type type;
+ static type call() { return type(); }
+ };
+ template <>
+ struct meta_create<double>
+ {
+ typedef spirit::double_type type;
+ static type call() { return type(); }
+ };
+ template <>
+ struct meta_create<long double>
+ {
+ typedef spirit::long_double_type type;
+ static type call() { return type(); }
     };
 }}}
 
@@ -326,10 +326,10 @@
       : create_generator<typename spirit::detail::remove_const_ref<T>::type> {};
 
     ///////////////////////////////////////////////////////////////////////////
- // Check whether a valid mapping exits for the given data type to a Karma
- // component
+ // Check whether a valid mapping exits for the given data type to a Karma
+ // component
     template <typename T>
- struct meta_create_exists<karma::domain, T>
+ struct meta_create_exists<karma::domain, T>
       : mpl::not_<is_same<
             karma::no_auto_mapping_exists
           , typename meta_create<karma::domain, T>::type

Modified: trunk/boost/spirit/home/karma/binary/binary.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/binary/binary.hpp (original)
+++ trunk/boost/spirit/home/karma/binary/binary.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -71,26 +71,31 @@
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit { namespace karma
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using boost::spirit::byte_;
- using boost::spirit::byte__type;
     using boost::spirit::word;
- using boost::spirit::word_type;
     using boost::spirit::big_word;
- using boost::spirit::big_word_type;
     using boost::spirit::little_word;
- using boost::spirit::little_word_type;
     using boost::spirit::dword;
- using boost::spirit::dword_type;
     using boost::spirit::big_dword;
- using boost::spirit::big_dword_type;
     using boost::spirit::little_dword;
- using boost::spirit::little_dword_type;
 #ifdef BOOST_HAS_LONG_LONG
     using boost::spirit::qword;
- using boost::spirit::qword_type;
     using boost::spirit::big_qword;
- using boost::spirit::big_qword_type;
     using boost::spirit::little_qword;
+#endif
+#endif
+
+ using boost::spirit::byte_type;
+ using boost::spirit::word_type;
+ using boost::spirit::big_word_type;
+ using boost::spirit::little_word_type;
+ using boost::spirit::dword_type;
+ using boost::spirit::big_dword_type;
+ using boost::spirit::little_dword_type;
+#ifdef BOOST_HAS_LONG_LONG
+ using boost::spirit::qword_type;
+ using boost::spirit::big_qword_type;
     using boost::spirit::little_qword_type;
 #endif
 
@@ -170,11 +175,11 @@
 
     ///////////////////////////////////////////////////////////////////////////
     template <BOOST_SCOPED_ENUM(boost::integer::endianness) endian, int bits>
- struct any_binary_generator
+ struct any_binary_generator
       : primitive_generator<any_binary_generator<endian, bits> >
     {
         template <typename Context, typename Unused = unused_type>
- struct attribute
+ struct attribute
           : karma::detail::integer<bits>
         {};
 
@@ -208,7 +213,7 @@
             unsigned char const* bytes =
                 reinterpret_cast<unsigned char const*>(&p);
 
- for (unsigned int i = 0; i < sizeof(p); ++i)
+ for (unsigned int i = 0; i < sizeof(p); ++i)
             {
                 if (!detail::generate_to(sink, *bytes++))
                     return false;
@@ -223,8 +228,8 @@
         static bool generate(OutputIterator& sink, Context&, Delimiter const& d
           , unused_type)
         {
- // It is not possible (doesn't make sense) to use binary generators
- // without providing any attribute, as the generator doesn't 'know'
+ // It is not possible (doesn't make sense) to use binary generators
+ // without providing any attribute, as the generator doesn't 'know'
             // what to output. The following assertion fires if this situation
             // is detected in your code.
             BOOST_SPIRIT_ASSERT_MSG(false,

Modified: trunk/boost/spirit/home/karma/numeric/bool.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/bool.hpp (original)
+++ trunk/boost/spirit/home/karma/numeric/bool.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -40,7 +40,7 @@
         struct bool_policies;
 
         ///////////////////////////////////////////////////////////////////////
- // This is the class that the user can instantiate directly in
+ // This is the class that the user can instantiate directly in
         // order to create a customized bool generator
         template <typename T = bool, typename Policies = bool_policies<T> >
         struct bool_generator
@@ -79,7 +79,7 @@
> : mpl::true_ {};
 
     template <> // enables *lazy* bool_(...)
- struct use_lazy_terminal<karma::domain, tag::bool_, 1>
+ struct use_lazy_terminal<karma::domain, tag::bool_, 1>
       : mpl::true_ {};
 
     ///////////////////////////////////////////////////////////////////////////
@@ -99,7 +99,7 @@
     // enables *lazy* custom bool_generator
     template <typename Policies, typename T>
     struct use_lazy_terminal<karma::domain
- , tag::stateful_tag<Policies, tag::bool_, T>, 1>
+ , tag::stateful_tag<Policies, tag::bool_, T>, 1>
       : mpl::true_ {};
 
     // enables lit(bool)
@@ -113,19 +113,21 @@
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit { namespace karma
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::bool_;
- using spirit::bool__type;
     using spirit::true_;
- using spirit::true__type;
     using spirit::false_;
- using spirit::false__type;
-
     using spirit::lit; // lit(true) is equivalent to true
+#endif
+
+ using spirit::bool_type;
+ using spirit::true_type;
+ using spirit::false_type;
     using spirit::lit_type;
 
     ///////////////////////////////////////////////////////////////////////////
     // This specialization is used for bool generators not having a direct
- // initializer: bool_. These generators must be used in conjunction with
+ // initializer: bool_. These generators must be used in conjunction with
     // an Attribute.
     ///////////////////////////////////////////////////////////////////////////
     template <typename T, typename CharEncoding, typename Tag, typename Policies>
@@ -165,8 +167,8 @@
         static bool
         generate(OutputIterator&, Context&, Delimiter const&, unused_type)
         {
- // It is not possible (doesn't make sense) to use boolean generators
- // without providing any attribute, as the generator doesn't 'know'
+ // It is not possible (doesn't make sense) to use boolean generators
+ // without providing any attribute, as the generator doesn't 'know'
             // what to output. The following assertion fires if this situation
             // is detected in your code.
             BOOST_SPIRIT_ASSERT_MSG(false, bool_not_usable_without_attribute, ());
@@ -213,7 +215,7 @@
           , Delimiter const& d, Attribute const& attr) const
         {
             typedef typename attribute<Context>::type attribute_type;
- if (!traits::has_optional_value(attr) ||
+ if (!traits::has_optional_value(attr) ||
                 bool(n_) != bool(traits::extract_from<attribute_type>(attr, context)))
             {
                 return false;
@@ -222,7 +224,7 @@
                       call(sink, n_, p_) && delimit_out(sink, d);
         }
 
- // A bool_() without any associated attribute just emits its
+ // A bool_() without any associated attribute just emits its
         // immediate literal
         template <typename OutputIterator, typename Context, typename Delimiter>
         bool generate(OutputIterator& sink, Context&, Delimiter const& d
@@ -251,9 +253,9 @@
           , typename Policies = bool_policies<T> >
         struct make_bool
         {
- static bool const lower =
+ static bool const lower =
                 has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
+ static bool const upper =
                 has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
 
             typedef any_bool_generator<
@@ -276,9 +278,9 @@
         template <typename Modifiers, bool b>
         struct make_bool_literal
         {
- static bool const lower =
+ static bool const lower =
                 has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
+ static bool const upper =
                 has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
 
             typedef literal_bool_generator<
@@ -298,15 +300,15 @@
 
     ///////////////////////////////////////////////////////////////////////////
     template <typename Modifiers>
- struct make_primitive<tag::bool_, Modifiers>
+ struct make_primitive<tag::bool_, Modifiers>
       : detail::make_bool<Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::true_, Modifiers>
+ struct make_primitive<tag::true_, Modifiers>
       : detail::make_bool_literal<Modifiers, true> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::false_, Modifiers>
+ struct make_primitive<tag::false_, Modifiers>
       : detail::make_bool_literal<Modifiers, false> {};
 
     template <typename T, typename Policies, typename Modifiers>
@@ -322,9 +324,9 @@
           , typename Policies = bool_policies<T> >
         struct make_bool_direct
         {
- static bool const lower =
+ static bool const lower =
                 has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
+ static bool const upper =
                 has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
 
             typedef literal_bool_generator<
@@ -388,7 +390,7 @@
     }
 
     template <typename Modifiers>
- struct make_primitive<bool, Modifiers>
+ struct make_primitive<bool, Modifiers>
       : detail::basic_bool_literal<Modifiers> {};
 
     template <typename Modifiers, typename A0>
@@ -396,7 +398,7 @@
             terminal_ex<tag::lit, fusion::vector1<A0> >
           , Modifiers
           , typename enable_if<traits::is_bool<A0> >::type>
- : detail::basic_bool_literal<Modifiers>
+ : detail::basic_bool_literal<Modifiers>
     {
         static bool const lower =
             has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;

Modified: trunk/boost/spirit/home/karma/numeric/int.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/int.hpp (original)
+++ trunk/boost/spirit/home/karma/numeric/int.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -46,11 +46,11 @@
     namespace karma
     {
         ///////////////////////////////////////////////////////////////////////
- // This one is the class that the user can instantiate directly in
+ // This one is the class that the user can instantiate directly in
         // order to create a customized int generator
         template <typename T = int, unsigned Radix = 10, bool force_sign = false>
         struct int_generator
- : spirit::terminal<tag::int_generator<T, Radix, force_sign> >
+ : spirit::terminal<tag::int_generator<T, Radix, force_sign> >
         {};
     }
 
@@ -119,20 +119,20 @@
 
     ///////////////////////////////////////////////////////////////////////////
     template <> // enables *lazy* short_(...)
- struct use_lazy_terminal<karma::domain, tag::short_, 1>
+ struct use_lazy_terminal<karma::domain, tag::short_, 1>
       : mpl::true_ {};
 
     template <> // enables *lazy* int_(...)
- struct use_lazy_terminal<karma::domain, tag::int_, 1>
+ struct use_lazy_terminal<karma::domain, tag::int_, 1>
       : mpl::true_ {};
 
     template <> // enables *lazy* long_(...)
- struct use_lazy_terminal<karma::domain, tag::long_, 1>
+ struct use_lazy_terminal<karma::domain, tag::long_, 1>
       : mpl::true_ {};
 
 #ifdef BOOST_HAS_LONG_LONG
     template <> // enables *lazy* long_long(...)
- struct use_lazy_terminal<karma::domain, tag::long_long, 1>
+ struct use_lazy_terminal<karma::domain, tag::long_long, 1>
       : mpl::true_ {};
 #endif
 
@@ -163,23 +163,28 @@
           , terminal_ex<tag::lit, fusion::vector1<A0> >
           , typename enable_if<traits::is_int<A0> >::type>
       : mpl::true_ {};
-}}
+}}
 
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit { namespace karma
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::short_;
- using spirit::short__type;
     using spirit::int_;
- using spirit::int__type;
     using spirit::long_;
- using spirit::long__type;
 #ifdef BOOST_HAS_LONG_LONG
     using spirit::long_long;
+#endif
+ using spirit::lit; // lit(1) is equivalent to 1
+#endif
+
+ using spirit::short_type;
+ using spirit::int_type;
+ using spirit::long_type;
+#ifdef BOOST_HAS_LONG_LONG
     using spirit::long_long_type;
 #endif
 
- using spirit::lit; // lit(1) is equivalent to 1
     using spirit::lit_type;
 
     ///////////////////////////////////////////////////////////////////////////
@@ -239,8 +244,8 @@
         static bool
         generate(OutputIterator&, Context&, Delimiter const&, unused_type)
         {
- // It is not possible (doesn't make sense) to use numeric generators
- // without providing any attribute, as the generator doesn't 'know'
+ // It is not possible (doesn't make sense) to use numeric generators
+ // without providing any attribute, as the generator doesn't 'know'
             // what to output. The following assertion fires if this situation
             // is detected in your code.
             BOOST_SPIRIT_ASSERT_MSG(false, int_not_usable_without_attribute, ());
@@ -301,7 +306,7 @@
           , Delimiter const& d, Attribute const& attr) const
         {
             typedef typename attribute<Context>::type attribute_type;
- if (!traits::has_optional_value(attr) ||
+ if (!traits::has_optional_value(attr) ||
                 n_ != traits::extract_from<attribute_type>(attr, context))
             {
                 return false;
@@ -309,7 +314,7 @@
             return insert_int(sink, n_) && delimit_out(sink, d);
         }
 
- // A int_(1) without any associated attribute just emits its
+ // A int_(1) without any associated attribute just emits its
         // immediate literal
         template <typename OutputIterator, typename Context, typename Delimiter>
         bool generate(OutputIterator& sink, Context&, Delimiter const& d
@@ -336,9 +341,9 @@
           , bool force_sign = false>
         struct make_int
         {
- static bool const lower =
+ static bool const lower =
                 has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
+ static bool const upper =
                 has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
 
             typedef any_int_generator<
@@ -359,20 +364,20 @@
 
     ///////////////////////////////////////////////////////////////////////////
     template <typename Modifiers>
- struct make_primitive<tag::short_, Modifiers>
+ struct make_primitive<tag::short_, Modifiers>
       : detail::make_int<short, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::int_, Modifiers>
+ struct make_primitive<tag::int_, Modifiers>
       : detail::make_int<int, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::long_, Modifiers>
+ struct make_primitive<tag::long_, Modifiers>
       : detail::make_int<long, Modifiers> {};
 
 #ifdef BOOST_HAS_LONG_LONG
     template <typename Modifiers>
- struct make_primitive<tag::long_long, Modifiers>
+ struct make_primitive<tag::long_long, Modifiers>
       : detail::make_int<boost::long_long_type, Modifiers> {};
 #endif
 
@@ -388,9 +393,9 @@
           , bool force_sign = false>
         struct make_int_direct
         {
- static bool const lower =
+ static bool const lower =
                 has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
+ static bool const upper =
                 has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
 
             typedef literal_int_generator<
@@ -468,20 +473,20 @@
     }
 
     template <typename Modifiers>
- struct make_primitive<short, Modifiers>
+ struct make_primitive<short, Modifiers>
       : detail::basic_int_literal<short, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<int, Modifiers>
+ struct make_primitive<int, Modifiers>
       : detail::basic_int_literal<int, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<long, Modifiers>
+ struct make_primitive<long, Modifiers>
       : detail::basic_int_literal<long, Modifiers> {};
 
 #ifdef BOOST_HAS_LONG_LONG
     template <typename Modifiers>
- struct make_primitive<boost::long_long_type, Modifiers>
+ struct make_primitive<boost::long_long_type, Modifiers>
       : detail::basic_int_literal<boost::long_long_type, Modifiers> {};
 #endif
 

Modified: trunk/boost/spirit/home/karma/numeric/real.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/real.hpp (original)
+++ trunk/boost/spirit/home/karma/numeric/real.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -35,7 +35,7 @@
 #include <boost/fusion/include/value_at.hpp>
 #include <boost/fusion/include/vector.hpp>
 
-namespace boost { namespace spirit
+namespace boost { namespace spirit
 {
     namespace karma
     {
@@ -45,11 +45,11 @@
         struct real_policies;
 
         ///////////////////////////////////////////////////////////////////////
- // This is the class that the user can instantiate directly in
+ // This is the class that the user can instantiate directly in
         // order to create a customized real generator
         template <typename T = double, typename Policies = real_policies<T> >
         struct real_generator
- : spirit::terminal<tag::stateful_tag<Policies, tag::double_, T> >
+ : spirit::terminal<tag::stateful_tag<Policies, tag::double_, T> >
         {
             typedef tag::stateful_tag<Policies, tag::double_, T> tag_type;
 
@@ -105,15 +105,15 @@
 
     // lazy float_(...), double_(...), long_double(...)
     template <>
- struct use_lazy_terminal<karma::domain, tag::float_, 1>
+ struct use_lazy_terminal<karma::domain, tag::float_, 1>
       : mpl::true_ {};
 
     template <>
- struct use_lazy_terminal<karma::domain, tag::double_, 1>
+ struct use_lazy_terminal<karma::domain, tag::double_, 1>
       : mpl::true_ {};
 
     template <>
- struct use_lazy_terminal<karma::domain, tag::long_double, 1>
+ struct use_lazy_terminal<karma::domain, tag::long_double, 1>
       : mpl::true_ {};
 
     ///////////////////////////////////////////////////////////////////////////
@@ -148,11 +148,14 @@
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit { namespace karma
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::float_;
- using spirit::float__type;
     using spirit::double_;
- using spirit::double__type;
     using spirit::long_double;
+#endif
+
+ using spirit::float_type;
+ using spirit::double_type;
     using spirit::long_double_type;
 
     ///////////////////////////////////////////////////////////////////////////
@@ -194,10 +197,10 @@
         // been initialized from a direct literal
         template <typename OutputIterator, typename Context, typename Delimiter>
         static bool generate(OutputIterator&, Context&, Delimiter const&
- , unused_type)
+ , unused_type)
         {
- // It is not possible (doesn't make sense) to use numeric generators
- // without providing any attribute, as the generator doesn't 'know'
+ // It is not possible (doesn't make sense) to use numeric generators
+ // without providing any attribute, as the generator doesn't 'know'
             // what to output. The following assertion fires if this situation
             // is detected in your code.
             BOOST_SPIRIT_ASSERT_MSG(false, real_not_usable_without_attribute, ()); return false;
@@ -243,7 +246,7 @@
           , Delimiter const& d, Attribute const& attr) const
         {
             typedef typename attribute<Context>::type attribute_type;
- if (!traits::has_optional_value(attr) ||
+ if (!traits::has_optional_value(attr) ||
                 n_ != traits::extract_from<attribute_type>(attr, context))
             {
                 return false;
@@ -254,7 +257,7 @@
                    karma::delimit_out(sink, d); // always do post-delimiting
         }
 
- // A double_(1.0) without any associated attribute just emits its
+ // A double_(1.0) without any associated attribute just emits its
         // immediate literal
         template <typename OutputIterator, typename Context, typename Delimiter>
         bool generate(OutputIterator& sink, Context&, Delimiter const& d
@@ -284,9 +287,9 @@
           , typename Policies = real_policies<T> >
         struct make_real
         {
- static bool const lower =
+ static bool const lower =
                 has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
+ static bool const upper =
                 has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
 
             typedef any_real_generator<
@@ -307,21 +310,21 @@
     }
 
     template <typename Modifiers>
- struct make_primitive<tag::float_, Modifiers>
+ struct make_primitive<tag::float_, Modifiers>
       : detail::make_real<float, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::double_, Modifiers>
+ struct make_primitive<tag::double_, Modifiers>
       : detail::make_real<double, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::long_double, Modifiers>
+ struct make_primitive<tag::long_double, Modifiers>
       : detail::make_real<long double, Modifiers> {};
 
     ///////////////////////////////////////////////////////////////////////////
     template <typename T, typename Policies, typename Modifiers>
     struct make_primitive<
- tag::stateful_tag<Policies, tag::double_, T>, Modifiers>
+ tag::stateful_tag<Policies, tag::double_, T>, Modifiers>
       : detail::make_real<typename remove_const<T>::type
           , Modifiers, Policies> {};
 
@@ -332,9 +335,9 @@
           , typename Policies = real_policies<T> >
         struct make_real_direct
         {
- static bool const lower =
+ static bool const lower =
                 has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
+ static bool const upper =
                 has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
 
             typedef literal_real_generator<
@@ -408,15 +411,15 @@
     }
 
     template <typename Modifiers>
- struct make_primitive<float, Modifiers>
+ struct make_primitive<float, Modifiers>
       : detail::basic_real_literal<float, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<double, Modifiers>
+ struct make_primitive<double, Modifiers>
       : detail::basic_real_literal<double, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<long double, Modifiers>
+ struct make_primitive<long double, Modifiers>
       : detail::basic_real_literal<long double, Modifiers> {};
 
     // lit(double)

Modified: trunk/boost/spirit/home/karma/numeric/uint.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/uint.hpp (original)
+++ trunk/boost/spirit/home/karma/numeric/uint.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -34,7 +34,7 @@
 #include <boost/fusion/include/value_at.hpp>
 #include <boost/fusion/include/vector.hpp>
 
-namespace boost { namespace spirit
+namespace boost { namespace spirit
 {
     namespace tag
     {
@@ -45,11 +45,11 @@
     namespace karma
     {
         ///////////////////////////////////////////////////////////////////////
- // This one is the class that the user can instantiate directly in
+ // This one is the class that the user can instantiate directly in
         // order to create a customized int generator
         template <typename T = unsigned int, unsigned Radix = 10>
         struct uint_generator
- : spirit::terminal<tag::uint_generator<T, Radix> >
+ : spirit::terminal<tag::uint_generator<T, Radix> >
         {};
     }
 
@@ -103,7 +103,7 @@
 
 #ifdef BOOST_HAS_LONG_LONG
     template <> // enables lit(0ULL)
- struct use_terminal<karma::domain, boost::ulong_long_type>
+ struct use_terminal<karma::domain, boost::ulong_long_type>
       : mpl::true_ {};
 #endif
 
@@ -147,32 +147,32 @@
 
     ///////////////////////////////////////////////////////////////////////////
     template <> // enables *lazy* ushort_(...)
- struct use_lazy_terminal<karma::domain, tag::ushort_, 1>
+ struct use_lazy_terminal<karma::domain, tag::ushort_, 1>
       : mpl::true_ {};
 
     template <> // enables *lazy* uint_(...)
- struct use_lazy_terminal<karma::domain, tag::uint_, 1>
+ struct use_lazy_terminal<karma::domain, tag::uint_, 1>
       : mpl::true_ {};
 
     template <> // enables *lazy* ulong_(...)
- struct use_lazy_terminal<karma::domain, tag::ulong_, 1>
+ struct use_lazy_terminal<karma::domain, tag::ulong_, 1>
       : mpl::true_ {};
 
     template <> // enables *lazy* bin(...)
- struct use_lazy_terminal<karma::domain, tag::bin, 1>
+ struct use_lazy_terminal<karma::domain, tag::bin, 1>
       : mpl::true_ {};
 
     template <> // enables *lazy* oct(...)
- struct use_lazy_terminal<karma::domain, tag::oct, 1>
+ struct use_lazy_terminal<karma::domain, tag::oct, 1>
       : mpl::true_ {};
 
     template <> // enables *lazy* hex(...)
- struct use_lazy_terminal<karma::domain, tag::hex, 1>
+ struct use_lazy_terminal<karma::domain, tag::hex, 1>
       : mpl::true_ {};
 
 #ifdef BOOST_HAS_LONG_LONG
     template <> // enables *lazy* ulong_long(...)
- struct use_lazy_terminal<karma::domain, tag::ulong_long, 1>
+ struct use_lazy_terminal<karma::domain, tag::ulong_long, 1>
       : mpl::true_ {};
 #endif
 
@@ -202,33 +202,39 @@
           , terminal_ex<tag::lit, fusion::vector1<A0> >
           , typename enable_if<traits::is_uint<A0> >::type>
       : mpl::true_ {};
-}}
+}}
 
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit { namespace karma
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::ushort_;
- using spirit::ushort__type;
     using spirit::uint_;
- using spirit::uint__type;
     using spirit::ulong_;
- using spirit::ulong__type;
 #ifdef BOOST_HAS_LONG_LONG
     using spirit::ulong_long;
- using spirit::ulong_long_type;
 #endif
     using spirit::bin;
- using spirit::bin_type;
     using spirit::oct;
- using spirit::oct_type;
     using spirit::hex;
- using spirit::hex_type;
 
     using spirit::lit; // lit(1U) is equivalent to 1U
+#endif
+
+ using spirit::ushort_type;
+ using spirit::uint_type;
+ using spirit::ulong_type;
+#ifdef BOOST_HAS_LONG_LONG
+ using spirit::ulong_long_type;
+#endif
+ using spirit::bin_type;
+ using spirit::oct_type;
+ using spirit::hex_type;
+
     using spirit::lit_type;
 
     ///////////////////////////////////////////////////////////////////////////
- // This specialization is used for unsigned int generators not having a
+ // This specialization is used for unsigned int generators not having a
     // direct initializer: uint_, ulong_ etc. These generators must be used in
     // conjunction with an Attribute.
     ///////////////////////////////////////////////////////////////////////////
@@ -247,7 +253,7 @@
             Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16,
             not_supported_radix, ());
 
- BOOST_SPIRIT_ASSERT_MSG(
+ BOOST_SPIRIT_ASSERT_MSG(
             // the following is a workaround for STLPort, where the simpler
             // `!std::numeric_limits<T>::is_signed` wouldn't compile
             mpl::not_<mpl::bool_<std::numeric_limits<T>::is_signed> >::value,
@@ -274,8 +280,8 @@
         static bool
         generate(OutputIterator&, Context&, Delimiter const&, unused_type)
         {
- // It is not possible (doesn't make sense) to use numeric generators
- // without providing any attribute, as the generator doesn't 'know'
+ // It is not possible (doesn't make sense) to use numeric generators
+ // without providing any attribute, as the generator doesn't 'know'
             // what to output. The following assertion fires if this situation
             // is detected in your code.
             BOOST_SPIRIT_ASSERT_MSG(false, uint_not_usable_without_attribute, ());
@@ -328,7 +334,7 @@
           , Delimiter const& d, Attribute const& attr) const
         {
             typedef typename attribute<Context>::type attribute_type;
- if (!traits::has_optional_value(attr) ||
+ if (!traits::has_optional_value(attr) ||
                 n_ != traits::extract_from<attribute_type>(attr, context))
             {
                 return false;
@@ -337,7 +343,7 @@
                    delimit_out(sink, d); // always do post-delimiting
         }
 
- // A uint(1U) without any associated attribute just emits its
+ // A uint(1U) without any associated attribute just emits its
         // immediate literal
         template <typename OutputIterator, typename Context, typename Delimiter>
         bool generate(OutputIterator& sink, Context&, Delimiter const& d
@@ -364,9 +370,9 @@
         template <typename T, typename Modifiers, unsigned Radix = 10>
         struct make_uint
         {
- static bool const lower =
+ static bool const lower =
                 has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
+ static bool const upper =
                 has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
 
             typedef any_uint_generator<
@@ -386,32 +392,32 @@
 
     ///////////////////////////////////////////////////////////////////////////
     template <typename Modifiers>
- struct make_primitive<tag::ushort_, Modifiers>
+ struct make_primitive<tag::ushort_, Modifiers>
       : detail::make_uint<unsigned short, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::uint_, Modifiers>
+ struct make_primitive<tag::uint_, Modifiers>
       : detail::make_uint<unsigned int, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::ulong_, Modifiers>
+ struct make_primitive<tag::ulong_, Modifiers>
       : detail::make_uint<unsigned long, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::bin, Modifiers>
+ struct make_primitive<tag::bin, Modifiers>
       : detail::make_uint<unsigned, Modifiers, 2> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::oct, Modifiers>
+ struct make_primitive<tag::oct, Modifiers>
       : detail::make_uint<unsigned, Modifiers, 8> {};
 
     template <typename Modifiers>
- struct make_primitive<tag::hex, Modifiers>
+ struct make_primitive<tag::hex, Modifiers>
       : detail::make_uint<unsigned, Modifiers, 16> {};
 
 #ifdef BOOST_HAS_LONG_LONG
     template <typename Modifiers>
- struct make_primitive<tag::ulong_long, Modifiers>
+ struct make_primitive<tag::ulong_long, Modifiers>
       : detail::make_uint<boost::ulong_long_type, Modifiers> {};
 #endif
 
@@ -425,9 +431,9 @@
         template <typename T, typename Modifiers, unsigned Radix = 10>
         struct make_uint_direct
         {
- static bool const lower =
+ static bool const lower =
                 has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
+ static bool const upper =
                 has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
 
             typedef literal_uint_generator<
@@ -487,7 +493,7 @@
     struct make_primitive<
         terminal_ex<tag::uint_generator<T, Radix>, fusion::vector1<A0> >
           , Modifiers>
- : detail::make_uint_direct<typename remove_const<T>::type, Modifiers, Radix>
+ : detail::make_uint_direct<typename remove_const<T>::type, Modifiers, Radix>
     {};
 
     ///////////////////////////////////////////////////////////////////////////
@@ -519,21 +525,21 @@
 
 #if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
     template <typename Modifiers>
- struct make_primitive<unsigned short, Modifiers>
+ struct make_primitive<unsigned short, Modifiers>
       : detail::basic_uint_literal<unsigned short, Modifiers> {};
 #endif
 
     template <typename Modifiers>
- struct make_primitive<unsigned int, Modifiers>
+ struct make_primitive<unsigned int, Modifiers>
       : detail::basic_uint_literal<unsigned int, Modifiers> {};
 
     template <typename Modifiers>
- struct make_primitive<unsigned long, Modifiers>
+ struct make_primitive<unsigned long, Modifiers>
       : detail::basic_uint_literal<unsigned long, Modifiers> {};
 
 #ifdef BOOST_HAS_LONG_LONG
     template <typename Modifiers>
- struct make_primitive<boost::ulong_long_type, Modifiers>
+ struct make_primitive<boost::ulong_long_type, Modifiers>
       : detail::basic_uint_literal<boost::ulong_long_type, Modifiers> {};
 #endif
 

Modified: trunk/boost/spirit/home/qi/auto/auto.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auto/auto.hpp (original)
+++ trunk/boost/spirit/home/qi/auto/auto.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -35,7 +35,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::auto_;
+#endif
+ using spirit::auto_type;
 
     ///////////////////////////////////////////////////////////////////////////
     template <typename Modifiers>
@@ -73,7 +76,7 @@
     // Generator generators: make_xxx function (objects)
     ///////////////////////////////////////////////////////////////////////////
     template <typename Modifiers>
- struct make_primitive<tag::auto_, Modifiers>
+ struct make_primitive<tag::auto_, Modifiers>
     {
         typedef auto_parser<Modifiers> result_type;
 

Modified: trunk/boost/spirit/home/qi/auto/meta_create.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auto/meta_create.hpp (original)
+++ trunk/boost/spirit/home/qi/auto/meta_create.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -90,7 +90,7 @@
 
     template <typename T>
     struct meta_create_impl<T, typename enable_if<
- spirit::detail::is_fusion_sequence_but_not_proto_expr<T>
+ spirit::detail::is_fusion_sequence_but_not_proto_expr<T>
>::type>
       : meta_create_sequence<T> {};
 
@@ -140,74 +140,74 @@
     struct meta_create<char>
     {
         typedef spirit::standard::char_type type;
- static type const& call() { return spirit::standard::char_; }
+ static type call() { return type(); }
     };
     template <>
     struct meta_create<signed char>
     {
         typedef spirit::standard::char_type type;
- static type const& call() { return spirit::standard::char_; }
+ static type call() { return type(); }
     };
     template <>
     struct meta_create<wchar_t>
     {
         typedef spirit::standard_wide::char_type type;
- static type const& call() { return spirit::standard_wide::char_; }
+ static type call() { return type(); }
     };
 
     template <>
     struct meta_create<unsigned char>
     {
         typedef spirit::standard::char_type type;
- static type const& call() { return spirit::standard::char_; }
+ static type call() { return type(); }
     };
 
     // boolean generator
     template <>
     struct meta_create<bool>
     {
- typedef spirit::bool__type type;
- static type const& call() { return spirit::bool_; }
+ typedef spirit::bool_type type;
+ static type call() { return type(); }
     };
 
     // integral generators
     template <>
     struct meta_create<int>
     {
- typedef spirit::int__type type;
- static type const& call() { return spirit::int_; }
+ typedef spirit::int_type type;
+ static type call() { return type(); }
     };
     template <>
     struct meta_create<short>
     {
- typedef spirit::short__type type;
- static type const& call() { return spirit::short_; }
+ typedef spirit::short_type type;
+ static type call() { return type(); }
     };
     template <>
     struct meta_create<long>
     {
- typedef spirit::long__type type;
- static type const& call() { return spirit::long_; }
+ typedef spirit::long_type type;
+ static type call() { return type(); }
     };
     template <>
     struct meta_create<unsigned int>
     {
- typedef spirit::uint__type type;
- static type const& call() { return spirit::uint_; }
+ typedef spirit::uint_type type;
+ static type call() { return type(); }
     };
 #if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
     template <>
     struct meta_create<unsigned short>
     {
- typedef spirit::ushort__type type;
- static type const& call() { return spirit::ushort_; }
+ typedef spirit::ushort_type type;
+ static type call() { return type(); }
     };
 #endif
     template <>
     struct meta_create<unsigned long>
     {
- typedef spirit::ulong__type type;
- static type const& call() { return spirit::ulong_; }
+ typedef spirit::ulong_type type;
+ static type call() { return type(); }
     };
 
 #ifdef BOOST_HAS_LONG_LONG
@@ -215,13 +215,13 @@
     struct meta_create<boost::long_long_type>
     {
         typedef spirit::long_long_type type;
- static type const& call() { return spirit::long_long; }
+ static type call() { return type(); }
     };
     template <>
     struct meta_create<boost::ulong_long_type>
     {
         typedef spirit::ulong_long_type type;
- static type const& call() { return spirit::ulong_long; }
+ static type call() { return type(); }
     };
 #endif
 
@@ -229,20 +229,20 @@
     template <>
     struct meta_create<float>
     {
- typedef spirit::float__type type;
- static type const& call() { return spirit::float_; }
+ typedef spirit::float_type type;
+ static type call() { return type(); }
     };
     template <>
     struct meta_create<double>
     {
- typedef spirit::double__type type;
- static type const& call() { return spirit::double_; }
+ typedef spirit::double_type type;
+ static type call() { return type(); }
     };
     template <>
     struct meta_create<long double>
     {
         typedef spirit::long_double_type type;
- static type const& call() { return spirit::long_double; }
+ static type call() { return type(); }
     };
 }}}
 

Modified: trunk/boost/spirit/home/qi/auxiliary/attr.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auxiliary/attr.hpp (original)
+++ trunk/boost/spirit/home/qi/auxiliary/attr.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -29,18 +29,21 @@
     ///////////////////////////////////////////////////////////////////////////
     template <typename A0> // enables attr()
     struct use_terminal<
- qi::domain, terminal_ex<tag::attr, fusion::vector1<A0> > >
+ qi::domain, terminal_ex<tag::attr, fusion::vector1<A0> > >
       : mpl::true_ {};
 
     template <> // enables *lazy* attr()
- struct use_lazy_terminal<qi::domain, tag::attr, 1>
+ struct use_lazy_terminal<qi::domain, tag::attr, 1>
       : mpl::true_ {};
 
 }}
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::attr;
+#endif
+ using spirit::attr_type;
 
     template <typename Value>
     struct attr_parser : primitive_parser<attr_parser<Value> >

Modified: trunk/boost/spirit/home/qi/auxiliary/eoi.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auxiliary/eoi.hpp (original)
+++ trunk/boost/spirit/home/qi/auxiliary/eoi.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -31,7 +31,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::eoi;
+#endif
     using spirit::eoi_type;
 
     struct eoi_parser : primitive_parser<eoi_parser>

Modified: trunk/boost/spirit/home/qi/auxiliary/eol.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auxiliary/eol.hpp (original)
+++ trunk/boost/spirit/home/qi/auxiliary/eol.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -31,7 +31,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::eol;
+#endif
     using spirit::eol_type;
 
     struct eol_parser : primitive_parser<eol_parser>

Modified: trunk/boost/spirit/home/qi/auxiliary/eps.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auxiliary/eps.hpp (original)
+++ trunk/boost/spirit/home/qi/auxiliary/eps.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -42,7 +42,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::eps;
+#endif
     using spirit::eps_type;
 
     struct eps_parser : primitive_parser<eps_parser>

Modified: trunk/boost/spirit/home/qi/binary/binary.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/binary/binary.hpp (original)
+++ trunk/boost/spirit/home/qi/binary/binary.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -65,26 +65,31 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using boost::spirit::byte_;
- using boost::spirit::byte__type;
     using boost::spirit::word;
- using boost::spirit::word_type;
     using boost::spirit::big_word;
- using boost::spirit::big_word_type;
     using boost::spirit::little_word;
- using boost::spirit::little_word_type;
     using boost::spirit::dword;
- using boost::spirit::dword_type;
     using boost::spirit::big_dword;
- using boost::spirit::big_dword_type;
     using boost::spirit::little_dword;
- using boost::spirit::little_dword_type;
 #ifdef BOOST_HAS_LONG_LONG
     using boost::spirit::qword;
- using boost::spirit::qword_type;
     using boost::spirit::big_qword;
- using boost::spirit::big_qword_type;
     using boost::spirit::little_qword;
+#endif
+#endif
+
+ using boost::spirit::byte_type;
+ using boost::spirit::word_type;
+ using boost::spirit::big_word_type;
+ using boost::spirit::little_word_type;
+ using boost::spirit::dword_type;
+ using boost::spirit::big_dword_type;
+ using boost::spirit::little_dword_type;
+#ifdef BOOST_HAS_LONG_LONG
+ using boost::spirit::qword_type;
+ using boost::spirit::big_qword_type;
     using boost::spirit::little_qword_type;
 #endif
 

Modified: trunk/boost/spirit/home/qi/char/char.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/char/char.hpp (original)
+++ trunk/boost/spirit/home/qi/char/char.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -96,14 +96,16 @@
     // enables lit(...)
     template <typename A0>
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
           , typename enable_if<traits::is_char<A0> >::type>
       : mpl::true_ {};
 }}
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::lit; // lit('x') is equivalent to 'x'
+#endif
     using spirit::lit_type;
 
     ///////////////////////////////////////////////////////////////////////////

Modified: trunk/boost/spirit/home/qi/directive/as.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/as.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/as.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -48,26 +48,28 @@
     ///////////////////////////////////////////////////////////////////////////
     // enables as_string[...]
     template <>
- struct use_directive<qi::domain, tag::as_string>
+ struct use_directive<qi::domain, tag::as_string>
       : mpl::true_ {};
 
     // enables as_wstring[...]
     template <>
- struct use_directive<qi::domain, tag::as_wstring>
+ struct use_directive<qi::domain, tag::as_wstring>
       : mpl::true_ {};
 
     // enables as<T>[...]
     template <typename T>
- struct use_directive<qi::domain, tag::stateful_tag<T, tag::as> >
- : mpl::true_
+ struct use_directive<qi::domain, tag::stateful_tag<T, tag::as> >
+ : mpl::true_
     {};
 }}
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::as_string;
- using spirit::as_string_type;
     using spirit::as_wstring;
+#endif
+ using spirit::as_string_type;
     using spirit::as_wstring_type;
 
     template <typename Subject, typename T>
@@ -132,7 +134,7 @@
             return result_type(subject);
         }
     };
-
+
     template <typename T, typename Subject, typename Modifiers>
     struct make_directive<tag::stateful_tag<T, tag::as>, Subject, Modifiers>
     {
@@ -157,7 +159,7 @@
         , typename Context, typename Iterator>
     struct handles_container<qi::as_directive<Subject, T>, Attribute
         , Context, Iterator>
- : mpl::false_ {};
+ : mpl::false_ {};
 }}}
 
 #endif

Modified: trunk/boost/spirit/home/qi/directive/hold.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/hold.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/hold.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -33,7 +33,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::hold;
+#endif
     using spirit::hold_type;
 
     template <typename Subject>

Modified: trunk/boost/spirit/home/qi/directive/lexeme.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/lexeme.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/lexeme.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -33,7 +33,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::lexeme;
+#endif
     using spirit::lexeme_type;
 
     template <typename Subject>

Modified: trunk/boost/spirit/home/qi/directive/matches.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/matches.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/matches.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -32,7 +32,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::matches;
+#endif
     using spirit::matches_type;
 
     ///////////////////////////////////////////////////////////////////////////

Modified: trunk/boost/spirit/home/qi/directive/no_skip.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/no_skip.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/no_skip.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -35,7 +35,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::no_skip;
+#endif
     using spirit::no_skip_type;
 
     // same as lexeme[], but does not pre-skip

Modified: trunk/boost/spirit/home/qi/directive/omit.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/omit.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/omit.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -32,7 +32,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::omit;
+#endif
     using spirit::omit_type;
 
     ///////////////////////////////////////////////////////////////////////////

Modified: trunk/boost/spirit/home/qi/directive/raw.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/raw.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/raw.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -35,7 +35,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::raw;
+#endif
     using spirit::raw_type;
 
     template <typename Subject>

Modified: trunk/boost/spirit/home/qi/directive/repeat.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/repeat.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/repeat.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -71,9 +71,11 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::repeat;
- using spirit::repeat_type;
     using spirit::inf;
+#endif
+ using spirit::repeat_type;
     using spirit::inf_type;
 
     template <typename T>
@@ -158,7 +160,7 @@
         bool parse_container(F f) const
         {
             typename LoopIter::type i = iter.start();
- for (/**/; !iter.got_min(i); ++i)
+ for (/**/; !iter.got_min(i); ++i)
             {
                 if (f (subject))
                     return false;
@@ -166,7 +168,7 @@
 
             // parse some more up to the maximum specified
             typename F::iterator_type save = f.f.first;
- for (/**/; !iter.got_max(i); ++i)
+ for (/**/; !iter.got_max(i); ++i)
             {
                 if (f (subject))
                     break;

Modified: trunk/boost/spirit/home/qi/directive/skip.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/skip.hpp (original)
+++ trunk/boost/spirit/home/qi/directive/skip.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -52,7 +52,9 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::skip;
+#endif
     using spirit::skip_type;
 
     template <typename Subject>

Modified: trunk/boost/spirit/home/qi/numeric/bool.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/numeric/bool.hpp (original)
+++ trunk/boost/spirit/home/qi/numeric/bool.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -32,7 +32,7 @@
         struct bool_policies;
 
         ///////////////////////////////////////////////////////////////////////
- // This is the class that the user can instantiate directly in
+ // This is the class that the user can instantiate directly in
         // order to create a customized bool parser
         template <typename T, typename BoolPolicies = bool_policies<T> >
         struct bool_parser
@@ -64,7 +64,7 @@
     ///////////////////////////////////////////////////////////////////////////
     template <typename A0> // enables lit(...)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, bool> >::type>
       : mpl::true_ {};
 
@@ -75,7 +75,7 @@
> : mpl::true_ {};
 
     template <> // enables *lazy* bool_(...)
- struct use_lazy_terminal<qi::domain, tag::bool_, 1>
+ struct use_lazy_terminal<qi::domain, tag::bool_, 1>
       : mpl::true_ {};
 
     ///////////////////////////////////////////////////////////////////////////
@@ -103,14 +103,15 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::bool_;
- using spirit::bool__type;
     using spirit::true_;
- using spirit::true__type;
     using spirit::false_;
- using spirit::false__type;
-
     using spirit::lit; // lit(true) is equivalent to true
+#endif
+ using spirit::bool_type;
+ using spirit::true_type;
+ using spirit::false_type;
     using spirit::lit_type;
 
     namespace detail
@@ -121,7 +122,7 @@
             template <typename Iterator, typename Attribute>
             static bool parse(Iterator& first, Iterator const& last
               , Attribute& attr, BoolPolicies const& p, bool allow_true = true
- , bool disallow_false = false)
+ , bool disallow_false = false)
             {
                 if (first == last)
                     return false;
@@ -214,7 +215,7 @@
                 no_case
               , is_same<bool_policies<T>, Policies>
>
- , any_bool_parser<T, no_case_bool_policies<T> >
+ , any_bool_parser<T, no_case_bool_policies<T> >
           , any_bool_parser<T, Policies> >::type
         result_type;
 
@@ -236,7 +237,7 @@
                 no_case
               , is_same<bool_policies<T>, Policies>
>
- , literal_bool_parser<T, no_case_bool_policies<T>, false>
+ , literal_bool_parser<T, no_case_bool_policies<T>, false>
           , literal_bool_parser<T, Policies, false> >::type
         result_type;
 
@@ -247,7 +248,7 @@
         }
     };
 
- template <typename T, typename Modifiers, bool b
+ template <typename T, typename Modifiers, bool b
             , typename Policies = bool_policies<T> >
     struct make_predefined_direct_bool
     {
@@ -259,7 +260,7 @@
                 no_case
               , is_same<bool_policies<T>, Policies>
>
- , literal_bool_parser<T, no_case_bool_policies<T>, false>
+ , literal_bool_parser<T, no_case_bool_policies<T>, false>
           , literal_bool_parser<T, Policies, false> >::type
         result_type;
 
@@ -281,7 +282,7 @@
                 no_case
               , is_same<bool_policies<T>, Policies>
>
- , literal_bool_parser<T, no_case_bool_policies<T> >
+ , literal_bool_parser<T, no_case_bool_policies<T> >
           , literal_bool_parser<T, Policies> >::type
         result_type;
 
@@ -313,7 +314,7 @@
     ///////////////////////////////////////////////////////////////////////////
     template <typename T, typename Policies, typename Modifiers>
     struct make_primitive<
- tag::stateful_tag<Policies, tag::bool_, T>, Modifiers>
+ tag::stateful_tag<Policies, tag::bool_, T>, Modifiers>
       : make_bool<T, Modifiers, Policies> {};
 
     template <typename T, typename Policies, typename A0, typename Modifiers>

Modified: trunk/boost/spirit/home/qi/numeric/int.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/numeric/int.hpp (original)
+++ trunk/boost/spirit/home/qi/numeric/int.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -27,19 +27,19 @@
     namespace tag
     {
         template <typename T, unsigned Radix, unsigned MinDigits
- , int MaxDigits>
+ , int MaxDigits>
         struct int_parser {};
     }
 
     namespace qi
     {
         ///////////////////////////////////////////////////////////////////////
- // This one is the class that the user can instantiate directly in
+ // This one is the class that the user can instantiate directly in
         // order to create a customized int parser
         template <typename T = int, unsigned Radix = 10, unsigned MinDigits = 1
                 , int MaxDigits = -1>
         struct int_parser
- : spirit::terminal<tag::int_parser<T, Radix, MinDigits, MaxDigits> >
+ : spirit::terminal<tag::int_parser<T, Radix, MinDigits, MaxDigits> >
         {};
     }
 
@@ -53,7 +53,7 @@
 
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, signed short> >::type>
       : mpl::true_ {};
 
@@ -73,7 +73,7 @@
 
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, signed> >::type>
       : mpl::true_ {};
 
@@ -93,7 +93,7 @@
 
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, signed long> >::type>
       : mpl::true_ {};
 
@@ -114,7 +114,7 @@
 
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, boost::long_long_type> >::type>
       : mpl::true_ {};
 
@@ -130,14 +130,14 @@
     ///////////////////////////////////////////////////////////////////////////
     // enables any custom int_parser
     template <typename T, unsigned Radix, unsigned MinDigits
- , int MaxDigits>
+ , int MaxDigits>
     struct use_terminal<qi::domain
         , tag::int_parser<T, Radix, MinDigits, MaxDigits> >
       : mpl::true_ {};
 
     // enables any custom int_parser(n)
     template <typename T, unsigned Radix, unsigned MinDigits
- , int MaxDigits, typename A0>
+ , int MaxDigits, typename A0>
     struct use_terminal<qi::domain
         , terminal_ex<tag::int_parser<T, Radix, MinDigits, MaxDigits>
                   , fusion::vector1<A0> >
@@ -145,7 +145,7 @@
 
     // enables *lazy* custom int_parser(n)
     template <typename T, unsigned Radix, unsigned MinDigits
- , int MaxDigits>
+ , int MaxDigits>
     struct use_lazy_terminal<qi::domain
       , tag::int_parser<T, Radix, MinDigits, MaxDigits>, 1
> : mpl::true_ {};
@@ -153,18 +153,22 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::short_;
- using spirit::short__type;
     using spirit::int_;
- using spirit::int__type;
     using spirit::long_;
- using spirit::long__type;
 #ifdef BOOST_HAS_LONG_LONG
     using spirit::long_long;
- using spirit::long_long_type;
 #endif
-
     using spirit::lit; // lit(1) is equivalent to 1
+#endif
+ using spirit::short_type;
+ using spirit::int_type;
+ using spirit::long_type;
+ using spirit::lit_type;
+#ifdef BOOST_HAS_LONG_LONG
+ using spirit::long_long_type;
+#endif
     using spirit::lit_type;
 
     ///////////////////////////////////////////////////////////////////////////
@@ -237,7 +241,7 @@
             typedef extract_int<T, Radix, MinDigits, MaxDigits> extract;
             qi::skip_over(first, last, skipper);
 
- Iterator save = first;
+ Iterator save = first;
             T attr_;
 
             if (extract::call(first, last, attr_) && (attr_ == n_))
@@ -386,7 +390,7 @@
 
     ///////////////////////////////////////////////////////////////////////////
 #ifdef BOOST_HAS_LONG_LONG
- //[primitive_parsers_long_long_primitive
+ //[primitive_parsers_long_long_primitive
     template <typename Modifiers>
     struct make_primitive<tag::long_long, Modifiers>
       : make_int<boost::long_long_type> {};

Modified: trunk/boost/spirit/home/qi/numeric/real.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/numeric/real.hpp (original)
+++ trunk/boost/spirit/home/qi/numeric/real.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -32,11 +32,11 @@
         struct real_policies;
 
         ///////////////////////////////////////////////////////////////////////
- // This is the class that the user can instantiate directly in
+ // This is the class that the user can instantiate directly in
         // order to create a customized real parser
         template <typename T = double, typename Policies = real_policies<T> >
         struct real_parser
- : spirit::terminal<tag::stateful_tag<Policies, tag::double_, T> >
+ : spirit::terminal<tag::stateful_tag<Policies, tag::double_, T> >
         {
             typedef tag::stateful_tag<Policies, tag::double_, T> tag_type;
 
@@ -64,19 +64,19 @@
     ///////////////////////////////////////////////////////////////////////////
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, float> >::type>
       : mpl::true_ {};
-
+
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, double> >::type>
       : mpl::true_ {};
-
+
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, long double> >::type>
       : mpl::true_ {};
 
@@ -97,15 +97,15 @@
> : mpl::true_ {};
 
     template <> // enables *lazy* float_(...)
- struct use_lazy_terminal<qi::domain, tag::float_, 1>
+ struct use_lazy_terminal<qi::domain, tag::float_, 1>
       : mpl::true_ {};
 
     template <> // enables *lazy* double_(...)
- struct use_lazy_terminal<qi::domain, tag::double_, 1>
+ struct use_lazy_terminal<qi::domain, tag::double_, 1>
       : mpl::true_ {};
 
     template <> // enables *lazy* long_double_(...)
- struct use_lazy_terminal<qi::domain, tag::long_double, 1>
+ struct use_lazy_terminal<qi::domain, tag::long_double, 1>
       : mpl::true_ {};
 
     ///////////////////////////////////////////////////////////////////////////
@@ -133,14 +133,17 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::float_;
- using spirit::float__type;
     using spirit::double_;
- using spirit::double__type;
     using spirit::long_double;
- using spirit::long_double_type;
-
     using spirit::lit; // lit(1.0) is equivalent to 1.0
+#endif
+
+ using spirit::float_type;
+ using spirit::double_type;
+ using spirit::long_double_type;
+ using spirit::lit_type;
 
     ///////////////////////////////////////////////////////////////////////////
     // This is the actual real number parser
@@ -277,7 +280,7 @@
           terminal_ex<tag::lit, fusion::vector1<A0> >
         , Modifiers, typename enable_if<is_same<A0, float> >::type>
       : make_literal_real<float> {};
-
+
     template <typename Modifiers, typename A0>
     struct make_primitive<
           terminal_ex<tag::lit, fusion::vector1<A0> >
@@ -293,7 +296,7 @@
     ///////////////////////////////////////////////////////////////////////////
     template <typename T, typename Policies, typename Modifiers>
     struct make_primitive<
- tag::stateful_tag<Policies, tag::double_, T>, Modifiers>
+ tag::stateful_tag<Policies, tag::double_, T>, Modifiers>
       : make_real<T, Policies> {};
 
     template <typename T, typename Policies, typename A0, typename Modifiers>

Modified: trunk/boost/spirit/home/qi/numeric/uint.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/numeric/uint.hpp (original)
+++ trunk/boost/spirit/home/qi/numeric/uint.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -27,19 +27,19 @@
     namespace tag
     {
         template <typename T, unsigned Radix, unsigned MinDigits
- , int MaxDigits>
+ , int MaxDigits>
         struct uint_parser {};
     }
 
     namespace qi
     {
         ///////////////////////////////////////////////////////////////////////
- // This one is the class that the user can instantiate directly in
+ // This one is the class that the user can instantiate directly in
         // order to create a customized int parser
         template <typename T = int, unsigned Radix = 10, unsigned MinDigits = 1
                 , int MaxDigits = -1>
         struct uint_parser
- : spirit::terminal<tag::uint_parser<T, Radix, MinDigits, MaxDigits> >
+ : spirit::terminal<tag::uint_parser<T, Radix, MinDigits, MaxDigits> >
         {};
     }
 
@@ -51,7 +51,7 @@
 
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, unsigned short> >::type>
       : mpl::true_ {};
 
@@ -69,7 +69,7 @@
 
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, unsigned> >::type>
       : mpl::true_ {};
 
@@ -80,14 +80,14 @@
 
     template <> // enables *lazy* uint_(n)
     struct use_lazy_terminal<qi::domain, tag::uint_, 1> : mpl::true_ {};
-
+
     ///////////////////////////////////////////////////////////////////////////
     template <> // enables ulong_
     struct use_terminal<qi::domain, tag::ulong_> : mpl::true_ {};
 
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, unsigned long> >::type>
       : mpl::true_ {};
 
@@ -106,7 +106,7 @@
 
     template <typename A0> // enables lit(n)
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
         , typename enable_if<is_same<A0, boost::ulong_long_type> >::type>
       : mpl::true_ {};
 
@@ -158,14 +158,14 @@
     ///////////////////////////////////////////////////////////////////////////
     // enables any custom uint_parser
     template <typename T, unsigned Radix, unsigned MinDigits
- , int MaxDigits>
+ , int MaxDigits>
     struct use_terminal<qi::domain
         , tag::uint_parser<T, Radix, MinDigits, MaxDigits> >
       : mpl::true_ {};
 
     // enables any custom uint_parser(n)
     template <typename T, unsigned Radix, unsigned MinDigits
- , int MaxDigits, typename A0>
+ , int MaxDigits, typename A0>
     struct use_terminal<qi::domain
         , terminal_ex<tag::uint_parser<T, Radix, MinDigits, MaxDigits>
                   , fusion::vector1<A0> >
@@ -173,7 +173,7 @@
 
     // enables *lazy* custom uint_parser(n)
     template <typename T, unsigned Radix, unsigned MinDigits
- , int MaxDigits>
+ , int MaxDigits>
     struct use_lazy_terminal<qi::domain
       , tag::uint_parser<T, Radix, MinDigits, MaxDigits>, 1
> : mpl::true_ {};
@@ -181,22 +181,31 @@
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::bin;
     using spirit::oct;
     using spirit::hex;
 
     using spirit::ushort_;
- using spirit::ushort__type;
     using spirit::uint_;
- using spirit::uint__type;
     using spirit::ulong_;
- using spirit::ulong__type;
 #ifdef BOOST_HAS_LONG_LONG
     using spirit::ulong_long;
- using spirit::ulong_long_type;
 #endif
-
     using spirit::lit; // lit(1) is equivalent to 1
+#endif
+
+ using spirit::bin_type;
+ using spirit::oct_type;
+ using spirit::hex_type;
+
+ using spirit::ushort_type;
+ using spirit::uint_type;
+ using spirit::ulong_type;
+#ifdef BOOST_HAS_LONG_LONG
+ using spirit::ulong_long_type;
+#endif
+ using spirit::lit_type;
 
     ///////////////////////////////////////////////////////////////////////////
     // This is the actual uint parser
@@ -263,8 +272,8 @@
         {
             typedef extract_uint<T, Radix, MinDigits, MaxDigits> extract;
             qi::skip_over(first, last, skipper);
-
- Iterator save = first;
+
+ Iterator save = first;
             T attr_;
 
             if (extract::call(first, last, attr_) && (attr_ == n_))
@@ -359,7 +368,7 @@
         tag::uint_parser<T, Radix, MinDigits, MaxDigits>
       , Modifiers>
       : make_uint<T, Radix, MinDigits, MaxDigits> {};
-
+
     template <typename T, unsigned Radix, unsigned MinDigits, int MaxDigits
             , typename A0, typename Modifiers>
     struct make_primitive<

Modified: trunk/boost/spirit/home/qi/stream/stream.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/stream/stream.hpp (original)
+++ trunk/boost/spirit/home/qi/stream/stream.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -37,8 +37,12 @@
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::stream;
     using spirit::wstream;
+#endif
+ using spirit::stream_type;
+ using spirit::wstream_type;
 
     template <typename Char = char, typename T = spirit::basic_hold_any<char> >
     struct stream_parser

Modified: trunk/boost/spirit/home/qi/string/lit.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/string/lit.hpp (original)
+++ trunk/boost/spirit/home/qi/string/lit.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -65,14 +65,16 @@
     // enables lit(...)
     template <typename A0>
     struct use_terminal<qi::domain
- , terminal_ex<tag::lit, fusion::vector1<A0> >
+ , terminal_ex<tag::lit, fusion::vector1<A0> >
           , typename enable_if<traits::is_string<A0> >::type>
       : mpl::true_ {};
 }}
 
 namespace boost { namespace spirit { namespace qi
 {
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
     using spirit::lit;
+#endif
     using spirit::lit_type;
 
     ///////////////////////////////////////////////////////////////////////////

Modified: trunk/boost/spirit/home/support/common_terminals.hpp
==============================================================================
--- trunk/boost/spirit/home/support/common_terminals.hpp (original)
+++ trunk/boost/spirit/home/support/common_terminals.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -64,73 +64,73 @@
 
     // Our basic terminals
     BOOST_SPIRIT_DEFINE_TERMINALS(
- ( verbatim )
- ( no_delimit )
- ( lexeme )
- ( no_skip )
- ( omit )
- ( raw )
- ( as_string )
- ( as_wstring )
- ( inf )
- ( eol )
- ( eoi )
- ( buffer )
- ( true_ )
- ( false_ )
- ( matches )
- ( hold )
- ( strict )
- ( relaxed )
- ( duplicate )
+ ( verbatim, verbatim_type )
+ ( no_delimit, no_delimit_type )
+ ( lexeme, lexeme_type )
+ ( no_skip, no_skip_type )
+ ( omit, omit_type )
+ ( raw, raw_type )
+ ( as_string, as_string_type )
+ ( as_wstring, as_wstring_type )
+ ( inf, inf_type )
+ ( eol, eol_type )
+ ( eoi, eoi_type )
+ ( buffer, buffer_type )
+ ( true_, true_type )
+ ( false_, false_type )
+ ( matches, matches_type )
+ ( hold, hold_type )
+ ( strict, strict_type )
+ ( relaxed, relaxed_type )
+ ( duplicate, duplicate_type )
     )
 
     // Our extended terminals
     BOOST_SPIRIT_DEFINE_TERMINALS_EX(
- ( lit )
- ( bin )
- ( oct )
- ( hex )
- ( bool_ )
- ( ushort_ )
- ( ulong_ )
- ( uint_ )
- ( short_ )
- ( long_ )
- ( int_ )
- ( ulong_long )
- ( long_long )
- ( float_ )
- ( double_ )
- ( long_double )
- ( repeat )
- ( eps )
- ( pad )
- ( byte_ )
- ( word )
- ( big_word )
- ( little_word )
- ( dword )
- ( big_dword )
- ( little_dword )
- ( qword )
- ( big_qword )
- ( little_qword )
- ( skip )
- ( delimit )
- ( stream )
- ( wstream )
- ( left_align )
- ( right_align )
- ( center )
- ( maxwidth )
- ( set_state )
- ( in_state )
- ( token )
- ( tokenid )
- ( attr )
- ( columns )
- ( auto_ )
+ ( lit, lit_type )
+ ( bin, bin_type )
+ ( oct, oct_type )
+ ( hex, hex_type )
+ ( bool_, bool_type )
+ ( ushort_, ushort_type )
+ ( ulong_, ulong_type )
+ ( uint_, uint_type )
+ ( short_, short_type )
+ ( long_, long_type )
+ ( int_, int_type )
+ ( ulong_long, ulong_long_type )
+ ( long_long, long_long_type )
+ ( float_, float_type )
+ ( double_, double_type )
+ ( long_double, long_double_type )
+ ( repeat, repeat_type )
+ ( eps, eps_type )
+ ( pad, pad_type )
+ ( byte_, byte_type )
+ ( word, word_type )
+ ( big_word, big_word_type )
+ ( little_word, little_word_type )
+ ( dword, dword_type )
+ ( big_dword, big_dword_type )
+ ( little_dword, little_dword_type )
+ ( qword, qword_type )
+ ( big_qword, big_qword_type )
+ ( little_qword, little_qword_type )
+ ( skip, skip_type )
+ ( delimit, delimit_type )
+ ( stream, stream_type )
+ ( wstream, wstream_type )
+ ( left_align, left_align_type )
+ ( right_align, right_align_type )
+ ( center, center_type )
+ ( maxwidth, maxwidth_type )
+ ( set_state, set_state_type )
+ ( in_state, in_state_type )
+ ( token, token_type )
+ ( tokenid, tokenid_type )
+ ( attr, attr_type )
+ ( columns, columns_type )
+ ( auto_, auto_type )
     )
 
     // special tags (used mainly for stateful tag types)
@@ -152,6 +152,15 @@
     typedef tag::char_code<tag::string, charset> string; \
     /***/
 
+#ifdef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
+
+#define BOOST_SPIRIT_CHAR_SPEC(charset) \
+ typedef spirit::terminal<tag::charset::char_> char_type; \
+ typedef spirit::terminal<tag::charset::string> string_type; \
+ /***/
+
+#else
+
 #define BOOST_SPIRIT_CHAR_SPEC(charset) \
     typedef spirit::terminal<tag::charset::char_> char_type; \
     char_type const char_ = char_type(); \
@@ -164,6 +173,17 @@
     inline void silence_unused_warnings_##string() { (void) string; } \
     /***/
 
+#endif
+
+#ifdef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
+
+#define BOOST_SPIRIT_CHAR_CODE(name, charset) \
+ typedef proto::terminal<tag::char_code<tag::name, charset> >::type \
+ name##_type; \
+ /***/
+
+#else
+
 #define BOOST_SPIRIT_CHAR_CODE(name, charset) \
     typedef proto::terminal<tag::char_code<tag::name, charset> >::type \
         name##_type; \
@@ -172,6 +192,9 @@
     inline void silence_unused_warnings_##name() { (void) name; } \
     /***/
 
+
+#endif
+
 #define BOOST_SPIRIT_DEFINE_CHAR_CODES(charset) \
     namespace boost { namespace spirit { namespace tag { namespace charset \
     { \

Modified: trunk/boost/spirit/home/support/terminal.hpp
==============================================================================
--- trunk/boost/spirit/home/support/terminal.hpp (original)
+++ trunk/boost/spirit/home/support/terminal.hpp 2011-02-09 05:47:49 EST (Wed, 09 Feb 2011)
@@ -18,6 +18,7 @@
 #include <boost/spirit/home/support/meta_compiler.hpp>
 #include <boost/spirit/home/support/detail/make_vector.hpp>
 #include <boost/spirit/home/support/unused.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
 
 namespace boost { namespace spirit
 {
@@ -404,7 +405,7 @@
     ///////////////////////////////////////////////////////////////////////////
     namespace result_of
     {
- // Calculate the type of the compound terminal if generated by one of
+ // Calculate the type of the compound terminal if generated by one of
         // the spirit::terminal::operator() overloads above
 
         // The terminal type itself is passed through without modification
@@ -442,7 +443,7 @@
     {
         template <typename Data, typename Tag
           , typename DataTag1 = unused_type, typename DataTag2 = unused_type>
- struct stateful_tag
+ struct stateful_tag
         {
             typedef Data data_type;
 
@@ -460,7 +461,7 @@
     template <typename Data, typename Tag
       , typename DataTag1 = unused_type, typename DataTag2 = unused_type>
     struct stateful_tag_type
- : spirit::terminal<tag::stateful_tag<Data, Tag, DataTag1, DataTag2> >
+ : spirit::terminal<tag::stateful_tag<Data, Tag, DataTag1, DataTag2> >
     {
         typedef tag::stateful_tag<Data, Tag, DataTag1, DataTag2> tag_type;
 
@@ -496,38 +497,73 @@
 // Common placeholders are placed in the main boost::spirit namespace
 // (see common_terminals.hpp)
 
-#define BOOST_SPIRIT_TERMINAL(name) \
+#define BOOST_SPIRIT_TERMINAL_X(x, y) ((x, y)) BOOST_SPIRIT_TERMINAL_Y
+#define BOOST_SPIRIT_TERMINAL_Y(x, y) ((x, y)) BOOST_SPIRIT_TERMINAL_X
+#define BOOST_SPIRIT_TERMINAL_X0
+#define BOOST_SPIRIT_TERMINAL_Y0
+
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
+
+#define BOOST_SPIRIT_TERMINAL(name, type_name) \
+ namespace tag { struct name {}; } \
+ typedef boost::proto::terminal<tag::name>::type type_name; \
+ type_name const name = {{}}; \
+ inline void BOOST_PP_CAT(silence_unused_warnings_, name)() { (void) name; } \
+ /***/
+
+#else
+
+#define BOOST_SPIRIT_TERMINAL(name, type_name) \
     namespace tag { struct name {}; } \
- typedef boost::proto::terminal<tag::name>::type name##_type; \
- name##_type const name = {{}}; \
- inline void silence_unused_warnings__##name() { (void) name; } \
+ typedef boost::proto::terminal<tag::name>::type type_name; \
     /***/
 
-#define BOOST_SPIRIT_DEFINE_TERMINALS_A(r, _, name) \
- BOOST_SPIRIT_TERMINAL(name) \
+#endif
+
+#define BOOST_SPIRIT_DEFINE_TERMINALS_A(r, _, names) \
+ BOOST_SPIRIT_TERMINAL( \
+ BOOST_PP_TUPLE_ELEM(2, 0, names), \
+ BOOST_PP_TUPLE_ELEM(2, 1, names) \
+ ) \
     /***/
 
 #define BOOST_SPIRIT_DEFINE_TERMINALS(seq) \
- BOOST_PP_SEQ_FOR_EACH(BOOST_SPIRIT_DEFINE_TERMINALS_A, _, seq) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_SPIRIT_DEFINE_TERMINALS_A, _, \
+ BOOST_PP_CAT(BOOST_SPIRIT_TERMINAL_X seq, 0)) \
     /***/
 
 // Define a spirit extended terminal. This macro may be placed in any namespace.
 // Common placeholders are placed in the main boost::spirit namespace
 // (see common_terminals.hpp)
 
-#define BOOST_SPIRIT_TERMINAL_EX(name) \
+#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
+
+#define BOOST_SPIRIT_TERMINAL_EX(name, type_name) \
     namespace tag { struct name {}; } \
- typedef boost::spirit::terminal<tag::name> name##_type; \
- name##_type const name = name##_type(); \
- inline void silence_unused_warnings__##name() { (void) name; } \
+ typedef boost::spirit::terminal<tag::name> type_name; \
+ type_name const name = type_name(); \
+ inline void BOOST_PP_CAT(silence_unused_warnings_, name)() { (void) name; } \
     /***/
 
-#define BOOST_SPIRIT_DEFINE_TERMINALS_EX_A(r, _, name) \
- BOOST_SPIRIT_TERMINAL_EX(name) \
+#else
+
+#define BOOST_SPIRIT_TERMINAL_EX(name, type_name) \
+ namespace tag { struct name {}; } \
+ typedef boost::spirit::terminal<tag::name> type_name; \
+ /***/
+
+#endif
+
+#define BOOST_SPIRIT_DEFINE_TERMINALS_EX_A(r, _, names) \
+ BOOST_SPIRIT_TERMINAL_EX( \
+ BOOST_PP_TUPLE_ELEM(2, 0, names), \
+ BOOST_PP_TUPLE_ELEM(2, 1, names) \
+ ) \
     /***/
 
 #define BOOST_SPIRIT_DEFINE_TERMINALS_EX(seq) \
- BOOST_PP_SEQ_FOR_EACH(BOOST_SPIRIT_DEFINE_TERMINALS_EX_A, _, seq) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_SPIRIT_DEFINE_TERMINALS_EX_A, _, \
+ BOOST_PP_CAT(BOOST_SPIRIT_TERMINAL_X seq, 0)) \
     /***/
 
 #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