|
Boost-Commit : |
From: hartmut.kaiser_at_[hidden]
Date: 2008-01-29 09:49:13
Author: hkaiser
Date: 2008-01-29 09:49:12 EST (Tue, 29 Jan 2008)
New Revision: 43010
URL: http://svn.boost.org/trac/boost/changeset/43010
Log:
Fixed failing Spirit test tree_to_xml.
Text files modified:
branches/release/boost/spirit/tree/impl/tree_to_xml.ipp | 56 ++++++++++++++++++++++++---------------
1 files changed, 34 insertions(+), 22 deletions(-)
Modified: branches/release/boost/spirit/tree/impl/tree_to_xml.ipp
==============================================================================
--- branches/release/boost/spirit/tree/impl/tree_to_xml.ipp (original)
+++ branches/release/boost/spirit/tree/impl/tree_to_xml.ipp 2008-01-29 09:49:12 EST (Tue, 29 Jan 2008)
@@ -14,19 +14,20 @@
#include <cstdio>
#include <cstdarg>
#include <locale>
-#include <string.h> // for strlen()
#include <string>
#include <map>
#include <iostream>
#include <boost/config.hpp>
+#include <boost/assert.hpp>
+
#ifdef BOOST_NO_STRINGSTREAM
#include <strstream>
#define BOOST_SPIRIT_OSSTREAM std::ostrstream
inline
std::string BOOST_SPIRIT_GETSTRING(std::ostrstream& ss)
{
- ss << ends;
+ ss << std::ends;
std::string rval = ss.str();
ss.freeze(false);
return rval;
@@ -60,16 +61,19 @@
typedef std::ctype<wchar_t> ctype_t;
return std::use_facet<ctype_t>(std::locale()).widen(c);
}
- static std::wstring get(char const* source = "")
+ static std::basic_string<wchar_t> get(char const* source = "")
{
- typedef std::ctype<wchar_t> ctype_t;
-
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]);
- std::use_facet<ctype_t>(std::locale())
- .widen(source, source + len, result.get());
+ result.get()[len] = '\0';
+ // 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()));
+
+ std::use_facet<std::ctype<wchar_t> >(std::locale())
+ .widen(source, source + len, result.get());
return result.get();
}
};
@@ -120,8 +124,9 @@
{
}
- attribute (CharT const *key_, CharT const *value_) :
- key (key_), value(value_)
+ attribute (std::basic_string<CharT> const& key_,
+ std::basic_string<CharT> const& value_)
+ : key (key_), value(value_)
{
}
@@ -185,8 +190,8 @@
class node : public element<CharT>
{
public:
- node (std::basic_ostream<CharT> &ostrm_, 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();
@@ -194,7 +199,8 @@
<< impl::string_lit<CharT>::get("<") << tag_ << attr
<< impl::string_lit<CharT>::get(">\n");
}
- node (std::basic_ostream<CharT> &ostrm_, CharT const *tag_)
+ node (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag_)
: element<CharT>(ostrm_), tag(tag_)
{
this->output_space();
@@ -218,8 +224,9 @@
class text : public element<CharT>
{
public:
- text (std::basic_ostream<CharT> &ostrm_, CharT const *tag,
- 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();
@@ -230,8 +237,10 @@
<< impl::string_lit<CharT>::get(">\n");
}
- text (std::basic_ostream<CharT> &ostrm_, CharT const *tag,
- 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();
@@ -242,9 +251,10 @@
<< impl::string_lit<CharT>::get(">\n");
}
- text (std::basic_ostream<CharT> &ostrm_, CharT const *tag,
- 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();
@@ -261,7 +271,8 @@
class comment : public element<CharT>
{
public:
- comment (std::basic_ostream<CharT> &ostrm_, CharT const *commentlit)
+ comment (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& commentlit)
: element<CharT>(ostrm_, false)
{
if ('\0' != commentlit[0])
@@ -287,8 +298,9 @@
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
}
- document (std::basic_ostream<CharT> &ostrm_, CharT const *mainnode,
- 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;
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