diff options
Diffstat (limited to 'TAO/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp')
-rw-r--r-- | TAO/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp | 61 |
1 files changed, 57 insertions, 4 deletions
diff --git a/TAO/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp b/TAO/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp index 04532665d51..d647b630a33 100644 --- a/TAO/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp +++ b/TAO/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp @@ -12,6 +12,8 @@ #include <XMLSchema/Types.hpp> #include <XMLSchema/Traversal.hpp> +#include <iostream> + namespace XMLSchema { namespace Writer @@ -26,8 +28,8 @@ namespace XMLSchema } using XSCRT::Writer<C>::top_; - using XSCRT::Writer<C>::attr_; - + using XSCRT::Writer<C>::attr_; + virtual void traverse (T const& o) { @@ -59,6 +61,57 @@ namespace XMLSchema } }; + template<typename C> + struct FundamentalType <XSCRT::FundamentalType<bool>, C> : + Traversal::Traverser<XSCRT::FundamentalType<bool> >, + virtual XSCRT::Writer<C> + { + FundamentalType (XSCRT::XML::Element<C> &e) + : XSCRT::Writer<C> (e) + { + } + + using XSCRT::Writer<C>::top_; + using XSCRT::Writer<C>::attr_; + + virtual void + traverse (XSCRT::FundamentalType<bool> const &o) + { + using namespace XSCRT::XML; + + std::basic_ostringstream<C> os; + + if (o) + { + os << "true"; + } + else + { + os << "false"; + } + + if (Attribute<C>* a = attr_ ()) + { + a->value (os.str ()); + } + else + { + top_().value (os.str ()); + } + } + + protected: + virtual void + traverse (XSCRT::FundamentalType<bool> &t) + { + Traversal::Traverser<XSCRT::FundamentalType<bool> >::traverse (t); + } + + FundamentalType () + { + } + }; + template <typename C> struct IDREF : Traversal::Traverser<XMLSchema::IDREF<C> >, @@ -89,13 +142,13 @@ namespace XMLSchema } protected: - + virtual void traverse (typename Traversal::Traverser<XMLSchema::IDREF<C> >::Type &o) { Traversal::Traverser<XMLSchema::IDREF<C> >::traverse (o); } - + IDREF () { } |