Boost logo

Boost-Commit :

From: joel_at_[hidden]
Date: 2008-07-08 08:23:04


Author: djowel
Date: 2008-07-08 08:23:03 EDT (Tue, 08 Jul 2008)
New Revision: 47215
URL: http://svn.boost.org/trac/boost/changeset/47215

Log:
Fix ticket #1997
Text files modified:
   trunk/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp | 151 ++++++++++++++++++++-------------------
   1 files changed, 76 insertions(+), 75 deletions(-)

Modified: trunk/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp
==============================================================================
--- trunk/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp (original)
+++ trunk/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp 2008-07-08 08:23:03 EDT (Tue, 08 Jul 2008)
@@ -15,6 +15,7 @@
 #include <cstdarg>
 #include <locale>
 #include <string>
+#include <cstring>
 
 #include <map>
 #include <iostream>
@@ -24,7 +25,7 @@
 #ifdef BOOST_NO_STRINGSTREAM
 #include <strstream>
 #define BOOST_SPIRIT_OSSTREAM std::ostrstream
-inline
+inline
 std::string BOOST_SPIRIT_GETSTRING(std::ostrstream& ss)
 {
     ss << std::ends;
@@ -45,32 +46,32 @@
 namespace impl {
 
     ///////////////////////////////////////////////////////////////////////////
- template <typename CharT>
+ template <typename CharT>
     struct string_lit;
-
- template <>
+
+ template <>
     struct string_lit<char>
     {
         static char get(char c) { return c; }
         static std::string get(char const* str = "") { return str; }
     };
 
- template <>
+ template <>
     struct string_lit<wchar_t>
     {
- static wchar_t get(char c)
- {
+ static wchar_t get(char c)
+ {
             typedef std::ctype<wchar_t> ctype_t;
- return std::use_facet<ctype_t>(std::locale()).widen(c);
+ return std::use_facet<ctype_t>(std::locale()).widen(c);
         }
- static std::basic_string<wchar_t> get(char const* source = "")
- {
+ static std::basic_string<wchar_t> get(char const* source = "")
+ {
             using namespace std; // some systems have size_t in ns std
             size_t len = strlen(source);
             std::auto_ptr<wchar_t> result (new wchar_t[len+1]);
             result.get()[len] = '\0';
 
- // working with wide character streams is supported only if the
+ // working with wide character streams is supported only if the
             // platform provides the std::ctype<wchar_t> facet
             BOOST_ASSERT(std::has_facet<std::ctype<wchar_t> >(std::locale()));
 
@@ -126,8 +127,8 @@
         {
         }
 
- attribute (std::basic_string<CharT> const& key_,
- std::basic_string<CharT> const& value_)
+ attribute (std::basic_string<CharT> const& key_,
+ std::basic_string<CharT> const& value_)
           : key (key_), value(value_)
         {
         }
@@ -147,8 +148,8 @@
     {
         if (0 == attr.key.size())
             return ostrm;
- ostrm << impl::string_lit<CharT>::get(" ") << encode(attr.key)
- << impl::string_lit<CharT>::get("=\"") << encode(attr.value)
+ ostrm << impl::string_lit<CharT>::get(" ") << encode(attr.key)
+ << impl::string_lit<CharT>::get("=\"") << encode(attr.value)
               << impl::string_lit<CharT>::get("\"");
         return ostrm;
     }
@@ -158,7 +159,7 @@
     class element
     {
     protected:
- element(std::basic_ostream<CharT> &ostrm_, bool incr_indent_ = true)
+ element(std::basic_ostream<CharT> &ostrm_, bool incr_indent_ = true)
         : ostrm(ostrm_), incr_indent(incr_indent_)
         {
             if (incr_indent) ++get_indent();
@@ -192,29 +193,29 @@
     class node : public element<CharT>
     {
     public:
- node (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag_, attribute<CharT> &attr)
+ node (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag_, attribute<CharT> &attr)
         : element<CharT>(ostrm_), tag(tag_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag_ << attr
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag_ << attr
                   << impl::string_lit<CharT>::get(">\n");
         }
- node (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag_)
+ node (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag_)
         : element<CharT>(ostrm_), tag(tag_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag_
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag_
                   << impl::string_lit<CharT>::get(">\n");
         }
         ~node()
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("</") << tag
+ this->ostrm
+ << impl::string_lit<CharT>::get("</") << tag
                   << impl::string_lit<CharT>::get(">\n");
         }
 
@@ -226,44 +227,44 @@
     class text : public element<CharT>
     {
     public:
- text (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag,
- std::basic_string<CharT> const& textlit)
+ text (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag,
+ std::basic_string<CharT> const& textlit)
         : element<CharT>(ostrm_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag
                   << impl::string_lit<CharT>::get(">") << encode(textlit)
- << impl::string_lit<CharT>::get("</") << tag
+ << impl::string_lit<CharT>::get("</") << tag
                   << impl::string_lit<CharT>::get(">\n");
         }
 
- text (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag,
- std::basic_string<CharT> const& textlit,
- attribute<CharT> &attr)
+ text (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag,
+ std::basic_string<CharT> const& textlit,
+ attribute<CharT> &attr)
         : element<CharT>(ostrm_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag << attr
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag << attr
                   << impl::string_lit<CharT>::get(">") << encode(textlit)
- << impl::string_lit<CharT>::get("</") << tag
+ << impl::string_lit<CharT>::get("</") << tag
                   << impl::string_lit<CharT>::get(">\n");
         }
 
- text (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag,
- std::basic_string<CharT> const& textlit,
- attribute<CharT> &attr1, attribute<CharT> &attr2)
+ text (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag,
+ std::basic_string<CharT> const& textlit,
+ attribute<CharT> &attr1, attribute<CharT> &attr2)
         : element<CharT>(ostrm_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag << attr1 << attr2
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag << attr1 << attr2
                   << impl::string_lit<CharT>::get(">") << encode(textlit)
- << impl::string_lit<CharT>::get("</") << tag
+ << impl::string_lit<CharT>::get("</") << tag
                   << impl::string_lit<CharT>::get(">\n");
         }
     };
@@ -273,15 +274,15 @@
     class comment : public element<CharT>
     {
     public:
- comment (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& commentlit)
+ comment (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& commentlit)
         : element<CharT>(ostrm_, false)
         {
             if ('\0' != commentlit[0])
             {
                 this->output_space();
- this->ostrm << impl::string_lit<CharT>::get("<!-- ")
- << encode(commentlit)
+ this->ostrm << impl::string_lit<CharT>::get("<!-- ")
+ << encode(commentlit)
                       << impl::string_lit<CharT>::get(" -->\n");
             }
         }
@@ -292,7 +293,7 @@
     class document : public element<CharT>
     {
     public:
- document (std::basic_ostream<CharT> &ostrm_)
+ document (std::basic_ostream<CharT> &ostrm_)
         : element<CharT>(ostrm_)
         {
             this->get_indent() = -1;
@@ -300,9 +301,9 @@
                 "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
         }
 
- document (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& mainnode,
- std::basic_string<CharT> const& dtd)
+ document (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& mainnode,
+ std::basic_string<CharT> const& dtd)
         : element<CharT>(ostrm_)
         {
             this->get_indent() = -1;
@@ -310,7 +311,7 @@
                 "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
 
             this->output_space();
- this->ostrm << impl::string_lit<CharT>::get("<!DOCTYPE ") << mainnode
+ this->ostrm << impl::string_lit<CharT>::get("<!DOCTYPE ") << mainnode
                   << impl::string_lit<CharT>::get(" SYSTEM \"") << dtd
                   << impl::string_lit<CharT>::get("\">\n");
         }
@@ -324,7 +325,7 @@
 
 namespace impl {
 
- ///////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////////////
     // look up the rule name from the given parser_id
     template <typename AssocContainerT>
     inline typename AssocContainerT::value_type::second_type
@@ -343,23 +344,23 @@
         typename CharT, typename IteratorT, typename GetIdT, typename GetValueT
>
     inline void
- token_to_xml (std::basic_ostream<CharT> &ostrm, IteratorT const &it,
+ token_to_xml (std::basic_ostream<CharT> &ostrm, IteratorT const &it,
         bool is_root, GetIdT const &get_token_id, GetValueT const &get_token_value)
     {
         BOOST_SPIRIT_OSSTREAM stream;
 
         stream << get_token_id(*it) << std::ends;
         xml::attribute<CharT> token_id (
- impl::string_lit<CharT>::get("id"),
+ impl::string_lit<CharT>::get("id"),
                 BOOST_SPIRIT_GETSTRING(stream).c_str());
         xml::attribute<CharT> is_root_attr (
- impl::string_lit<CharT>::get("is_root"),
+ impl::string_lit<CharT>::get("is_root"),
                 impl::string_lit<CharT>::get(is_root ? "1" : ""));
         xml::attribute<CharT> nil;
- xml::text<CharT>(ostrm,
- impl::string_lit<CharT>::get("token"),
+ xml::text<CharT>(ostrm,
+ impl::string_lit<CharT>::get("token"),
                 get_token_value(*it).c_str(),
- token_id,
+ token_id,
                 is_root_attr.has_value() ? is_root_attr : nil);
     }
 
@@ -385,7 +386,7 @@
             xml::attribute<CharT> id (
                 impl::string_lit<CharT>::get("rule"),
                 get_rulename(id_to_name_map, (*it).value.id()).c_str());
- xml::node<CharT> currnode (ostrm,
+ xml::node<CharT> currnode (ostrm,
                 impl::string_lit<CharT>::get("parsenode"),
                 (*it).value.id() != 0 && id.has_value() ? id : nil);
 
@@ -399,7 +400,7 @@
             }
             else if (cnt > 1)
             {
- xml::node<CharT> value (ostrm,
+ xml::node<CharT> value (ostrm,
                         impl::string_lit<CharT>::get("value"));
                 bool is_root = (*it).value.is_root();
 
@@ -431,7 +432,7 @@
             xml::attribute<CharT> id (
                 impl::string_lit<CharT>::get("rule"),
                 get_rulename(id_to_name_map, (*it).value.id()).c_str());
- xml::node<CharT> currnode (ostrm,
+ xml::node<CharT> currnode (ostrm,
                 impl::string_lit<CharT>::get("parsenode"),
                 (*it).value.id() != parser_id() && id.has_value() ? id : nil);
 
@@ -446,7 +447,7 @@
                     xml::attribute<CharT> is_root (
                         impl::string_lit<CharT>::get("is_root"),
                         impl::string_lit<CharT>::get((*it).value.is_root() ? "1" : ""));
- xml::text<CharT>(ostrm,
+ xml::text<CharT>(ostrm,
                         impl::string_lit<CharT>::get("value"), tokens.c_str(),
                         is_root.has_value() ? is_root : nil);
                 }
@@ -471,14 +472,14 @@
         GetIdT const &get_token_id, GetValueT const &get_token_value)
 {
     // generate xml dump
- xml::document<CharT> doc (ostrm,
- impl::string_lit<CharT>::get("parsetree"),
+ xml::document<CharT> doc (ostrm,
+ impl::string_lit<CharT>::get("parsetree"),
             impl::string_lit<CharT>::get("parsetree.dtd"));
     xml::comment<CharT> input (ostrm, input_line.c_str());
     xml::attribute<CharT> ver (
- impl::string_lit<CharT>::get("version"),
+ impl::string_lit<CharT>::get("version"),
             impl::string_lit<CharT>::get("1.0"));
- xml::node<CharT> mainnode (ostrm,
+ xml::node<CharT> mainnode (ostrm,
             impl::string_lit<CharT>::get("parsetree"), ver);
 
     impl::tree_node_to_xml (ostrm, tree, id_to_name, get_token_id,
@@ -489,18 +490,18 @@
 template <typename CharT, typename TreeNodeT, typename AssocContainerT>
 inline void
 basic_tree_to_xml (std::basic_ostream<CharT> &ostrm, TreeNodeT const &tree,
- std::basic_string<CharT> const &input_line,
+ std::basic_string<CharT> const &input_line,
         AssocContainerT const& id_to_name)
 {
     // generate xml dump
- xml::document<CharT> doc (ostrm,
- impl::string_lit<CharT>::get("parsetree"),
+ xml::document<CharT> doc (ostrm,
+ impl::string_lit<CharT>::get("parsetree"),
             impl::string_lit<CharT>::get("parsetree.dtd"));
     xml::comment<CharT> input (ostrm, input_line.c_str());
     xml::attribute<CharT> ver (
- impl::string_lit<CharT>::get("version"),
+ impl::string_lit<CharT>::get("version"),
             impl::string_lit<CharT>::get("1.0"));
- xml::node<CharT> mainnode (ostrm,
+ xml::node<CharT> mainnode (ostrm,
             impl::string_lit<CharT>::get("parsetree"), ver);
 
     impl::tree_node_to_xml(ostrm, tree, id_to_name);


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