From cac7d02dd8fa595722faace8aa84be54b49e554b Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sun, 1 Feb 2009 01:47:54 -0400 Subject: Added a streaming object for outputting XML strings (convenience wrapper). --- src/utils.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/utils.h') diff --git a/src/utils.h b/src/utils.h index 319d6126..39a8dc0e 100644 --- a/src/utils.h +++ b/src/utils.h @@ -548,6 +548,30 @@ inline void xml_print(std::ostream& out, out << str; } +struct xml_str +{ + const string& str; + const std::size_t depth; + + xml_str(const string& _str, const std::size_t _depth) + : str(_str), depth(_depth) { + TRACE_CTOR(xml_str, "const string&, const std::size_t"); + } + xml_str(const xml_str& other) + : str(other.str), depth(other.depth) { + TRACE_CTOR(xml_str, "copy"); + } + ~xml_str() throw() { + TRACE_DTOR(xml_str); + } +}; + +inline std::ostream& operator<<(std::ostream& out, const xml_str& obj) { + xml_space(out, obj.depth); + out << obj.str; + return out; +} + #define READ_INTO(str, targ, size, var, cond) { \ char * _p = targ; \ var = str.peek(); \ -- cgit v1.2.3