diff options
Diffstat (limited to 'libxsd/libxsd/cxx/tree/serialization/boolean.hxx')
-rw-r--r-- | libxsd/libxsd/cxx/tree/serialization/boolean.hxx | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/libxsd/libxsd/cxx/tree/serialization/boolean.hxx b/libxsd/libxsd/cxx/tree/serialization/boolean.hxx new file mode 100644 index 0000000..9e389aa --- /dev/null +++ b/libxsd/libxsd/cxx/tree/serialization/boolean.hxx @@ -0,0 +1,50 @@ +// file : libxsd/cxx/tree/serialization/boolean.hxx +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#ifndef LIBXSD_CXX_TREE_SERIALIZATION_BOOLEAN_HXX +#define LIBXSD_CXX_TREE_SERIALIZATION_BOOLEAN_HXX + +#include <sstream> + +namespace XERCES_CPP_NAMESPACE +{ + inline void + operator<< (xercesc::DOMElement& e, bool b) + { + std::basic_ostringstream<char> os; + os.setf (std::ios_base::boolalpha); + os << b; + e << os.str (); + } + + inline void + operator<< (xercesc::DOMAttr& a, bool b) + { + std::basic_ostringstream<char> os; + os.setf (std::ios_base::boolalpha); + os << b; + a << os.str (); + } +} + +namespace xsd +{ + namespace cxx + { + namespace tree + { + template <typename C> + inline void + operator<< (list_stream<C>& ls, bool b) + { + // We don't need to restore the original bool format flag + // since items in the list are all of the same type. + // + ls.os_.setf (std::ios_base::boolalpha); + ls.os_ << b; + } + } + } +} + +#endif // LIBXSD_CXX_TREE_SERIALIZATION_BOOLEAN_HXX |