From 7965ec7125e1c1a5f99d4100119ee432c761e5e3 Mon Sep 17 00:00:00 2001 From: Johnny Willemsen Date: Thu, 31 May 2012 12:37:36 +0000 Subject: Thu May 31 12:31:31 UTC 2012 Johnny Willemsen Migrated more files from DAnCE to ACE, updated code that uses it --- ACE/ace/XML_Utils/XMLSchema/Writer.hpp | 159 +++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 ACE/ace/XML_Utils/XMLSchema/Writer.hpp (limited to 'ACE/ace/XML_Utils/XMLSchema/Writer.hpp') diff --git a/ACE/ace/XML_Utils/XMLSchema/Writer.hpp b/ACE/ace/XML_Utils/XMLSchema/Writer.hpp new file mode 100644 index 00000000000..753a941e75e --- /dev/null +++ b/ACE/ace/XML_Utils/XMLSchema/Writer.hpp @@ -0,0 +1,159 @@ +// file : XMLSchema/Writer.hpp +// author : Boris Kolpackov +// cvs-id : $Id$ + +#ifndef XMLSCHEMA_WRITER_HPP +#define XMLSCHEMA_WRITER_HPP + +#include + +#include + +#include +#include + +#include + +namespace XMLSchema +{ + namespace Writer + { + template + struct FundamentalType : Traversal::Traverser, + virtual XSCRT::Writer + { + FundamentalType (XSCRT::XML::Element& e) + : XSCRT::Writer (e) + { + } + + using XSCRT::Writer::top_; + using XSCRT::Writer::attr_; + + virtual void + traverse (T const& o) + { + using namespace XSCRT::XML; + + std::basic_ostringstream os; + + os << o; + + if (Attribute* a = attr_ ()) + { + a->value (os.str ()); + } + else + { + top_().value (os.str ()); + } + } + + protected: + virtual void + traverse (T &t) + { + Traversal::Traverser::traverse (t); + } + + FundamentalType () + { + } + }; + + template + struct FundamentalType , C> : + Traversal::Traverser >, + virtual XSCRT::Writer + { + FundamentalType (XSCRT::XML::Element &e) + : XSCRT::Writer (e) + { + } + + using XSCRT::Writer::top_; + using XSCRT::Writer::attr_; + + virtual void + traverse (XSCRT::FundamentalType const &o) + { + using namespace XSCRT::XML; + + std::basic_ostringstream os; + + if (o) + { + os << "true"; + } + else + { + os << "false"; + } + + if (Attribute* a = attr_ ()) + { + a->value (os.str ()); + } + else + { + top_().value (os.str ()); + } + } + + protected: + virtual void + traverse (XSCRT::FundamentalType &t) + { + Traversal::Traverser >::traverse (t); + } + + FundamentalType () + { + } + }; + + + template + struct IDREF : Traversal::Traverser >, + virtual XSCRT::Writer + { + IDREF (XSCRT::XML::Element& e) + : XSCRT::Writer (e) + { + } + + virtual void + traverse ( + typename Traversal::Traverser >::Type const& o) + { + using namespace XSCRT::XML; + + if (Attribute* a = XSCRT::Writer::attr_ ()) + { + a->value (o.id ()); + } + else + { + XSCRT::Writer::top_().value (o.id ()); + } + } + + protected: + + virtual void + traverse (typename Traversal::Traverser >::Type &o) + { + Traversal::Traverser >::traverse (o); + } + + IDREF () + { + } + }; + } +} + +#include +#include + +#endif // XMLSCHEMA_WRITER_HPP -- cgit v1.2.1