summaryrefslogtreecommitdiff
path: root/libxsd/xsd/cxx/tree/types.txx
diff options
context:
space:
mode:
Diffstat (limited to 'libxsd/xsd/cxx/tree/types.txx')
-rw-r--r--libxsd/xsd/cxx/tree/types.txx528
1 files changed, 0 insertions, 528 deletions
diff --git a/libxsd/xsd/cxx/tree/types.txx b/libxsd/xsd/cxx/tree/types.txx
deleted file mode 100644
index c2a461c..0000000
--- a/libxsd/xsd/cxx/tree/types.txx
+++ /dev/null
@@ -1,528 +0,0 @@
-// file : xsd/cxx/tree/types.txx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xercesc/util/Base64.hpp>
-#include <xercesc/util/XMLString.hpp>
-
-#include <xsd/cxx/config.hxx> // XSD_CXX11
-
-#ifdef XSD_CXX11
-# include <memory> // std::unique_ptr
-#else
-# include <xsd/cxx/auto-array.hxx>
-#endif
-
-#include <xsd/cxx/xml/std-memory-manager.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
-
- // string
- //
- template <typename C, typename B>
- string<C, B>* string<C, B>::
- _clone (flags f, container* c) const
- {
- return new string (*this, f, c);
- }
-
-
- // normalized_string
- //
- template <typename C, typename B>
- normalized_string<C, B>* normalized_string<C, B>::
- _clone (flags f, container* c) const
- {
- return new normalized_string (*this, f, c);
- }
-
-
- // token
- //
- template <typename C, typename B>
- token<C, B>* token<C, B>::
- _clone (flags f, container* c) const
- {
- return new token (*this, f, c);
- }
-
-
- // nmtoken
- //
- template <typename C, typename B>
- nmtoken<C, B>* nmtoken<C, B>::
- _clone (flags f, container* c) const
- {
- return new nmtoken (*this, f, c);
- }
-
-
- // nmtokens
- //
- template <typename C, typename B, typename nmtoken>
- nmtokens<C, B, nmtoken>* nmtokens<C, B, nmtoken>::
- _clone (flags f, container* c) const
- {
- return new nmtokens (*this, f, c);
- }
-
-
- // name
- //
- template <typename C, typename B>
- name<C, B>* name<C, B>::
- _clone (flags f, container* c) const
- {
- return new name (*this, f, c);
- }
-
-
- // ncname
- //
- template <typename C, typename B>
- ncname<C, B>* ncname<C, B>::
- _clone (flags f, container* c) const
- {
- return new ncname (*this, f, c);
- }
-
-
- // language
- //
- template <typename C, typename B>
- language<C, B>* language<C, B>::
- _clone (flags f, container* c) const
- {
- return new language (*this, f, c);
- }
-
-
- // identity_impl
- //
- template <typename C, typename ncname>
- bool identity_impl<C, ncname>::
- before (const identity& y) const
- {
- return id_ < static_cast<const identity_impl&> (y).id_;
- }
-
- template <typename C, typename ncname>
- void identity_impl<C, ncname>::
- throw_duplicate_id () const
- {
- throw duplicate_id<C> (id_);
- }
-
-
- // id
- //
- template <typename C, typename B>
- id<C, B>* id<C, B>::
- _clone (flags f, container* c) const
- {
- return new id (*this, f, c);
- }
-
- template <typename C, typename B>
- id<C, B>& id<C, B>::
- operator= (C c)
- {
- unregister_id ();
- base () = c;
- register_id ();
-
- return *this;
- }
-
- template <typename C, typename B>
- id<C, B>& id<C, B>::
- operator= (const C* s)
- {
- unregister_id ();
- base () = s;
- register_id ();
-
- return *this;
- }
-
- template <typename C, typename B>
- id<C, B>& id<C, B>::
- operator= (const std::basic_string<C>& s)
- {
- unregister_id ();
- base () = s;
- register_id ();
-
- return *this;
- }
-
- template <typename C, typename B>
- id<C, B>& id<C, B>::
- operator= (const id& x)
- {
- unregister_id ();
- base () = x;
- register_id ();
-
- return *this;
- }
-
- template <typename C, typename B>
- void id<C, B>::
- _container (container* c)
- {
- B::_container (c);
- register_id ();
- }
-
- template <typename C, typename B>
- void id<C, B>::
- register_id ()
- {
- container* r (this->_root ());
-
- if (r != 0 && !this->empty ())
- r->_register_id (identity_, this->_container ());
- }
-
- template <typename C, typename B>
- void id<C, B>::
- unregister_id ()
- {
- container* r (this->_root ());
-
- if (r != 0 && !this->empty ())
- r->_unregister_id (identity_);
- }
-
-
- // idref
- //
- template <typename C, typename B, typename T>
- idref<C, B, T>* idref<C, B, T>::
- _clone (flags f, container* c) const
- {
- return new idref (*this, f, c);
- }
-
- template <typename C, typename B, typename T>
- const _type* idref<C, B, T>::
- get_ () const
- {
- if (!this->empty () && this->_container () != 0)
- {
- return this->_root ()->_lookup_id (identity_);
- }
- else
- return 0;
- }
-
- template <typename C, typename B, typename T>
- _type* idref<C, B, T>::
- get_ ()
- {
- if (!this->empty () && this->_container () != 0)
- {
- return this->_root ()->_lookup_id (identity_);
- }
- else
- return 0;
- }
-
- template <typename C, typename B, typename T>
- void idref<C, B, T>::
- true_ ()
- {
- }
-
-
- // idrefs
- //
- template <typename C, typename B, typename idref>
- idrefs<C, B, idref>* idrefs<C, B, idref>::
- _clone (flags f, container* c) const
- {
- return new idrefs (*this, f, c);
- }
-
-
- // uri
- //
- template <typename C, typename B>
- uri<C, B>* uri<C, B>::
- _clone (flags f, container* c) const
- {
- return new uri (*this, f, c);
- }
-
-
- // qname
- //
- template <typename C, typename B, typename uri, typename ncname>
- qname<C, B, uri, ncname>* qname<C, B, uri, ncname>::
- _clone (flags f, container* c) const
- {
- return new qname (*this, f, c);
- }
-
-
- // base64_binary
- //
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (size_t size)
- : buffer<C> (size)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (size_t size, size_t capacity)
- : buffer<C> (size, capacity)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (const void* data, size_t size)
- : buffer<C> (data, size)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (const void* data, size_t size, size_t capacity)
- : buffer<C> (data, size, capacity)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>::
- base64_binary (void* data, size_t size, size_t capacity, bool own)
- : buffer<C> (data, size, capacity, own)
- {
- }
-
- template <typename C, typename B>
- base64_binary<C, B>* base64_binary<C, B>::
- _clone (flags f, container* c) const
- {
- return new base64_binary (*this, f, c);
- }
-
- template <typename C, typename B>
- std::basic_string<C> base64_binary<C, B>::
- encode () const
- {
- // Cannot use 'using namespace' because of MSXML conflict.
- //
- using xercesc::Base64;
-
- std::basic_string<C> str;
-
- XMLSize_t n;
- xml::std_memory_manager mm;
-
-#ifdef XSD_CXX11
- std::unique_ptr<XMLByte[], xml::std_memory_manager&> r (
-#else
- auto_array<XMLByte, xml::std_memory_manager> r (
-#endif
- Base64::encode (
- reinterpret_cast<const XMLByte*> (this->data ()),
- static_cast<XMLSize_t> (this->size ()),
- &n,
- &mm),
- mm);
-
- if (r)
- {
- str.reserve (n + 1);
- str.resize (n);
-
- for (XMLSize_t i (0); i < n; ++i)
- str[i] = C (r[i]);
- }
- else
- {
- //@@ throw
- }
-
- return str;
- }
-
- template <typename C, typename B>
- void base64_binary<C, B>::
- decode (const XMLCh* src)
- {
- // Cannot use 'using namespace' because of MSXML conflict.
- //
- using xercesc::Base64;
-
- xml::std_memory_manager mm;
- XMLSize_t size;
-
-#ifdef XSD_CXX11
- std::unique_ptr<XMLByte[], xml::std_memory_manager&> data (
-#else
- auto_array<XMLByte, xml::std_memory_manager> data (
-#endif
- Base64::decodeToXMLByte (src, &size, &mm, Base64::Conf_RFC2045),
- mm);
-
- if (data)
- {
- buffer<C> tmp (data.get (), size, size, true);
- data.release ();
- this->swap (tmp); // g++ 4.1 likes it qualified, not sure why.
- }
- else
- {
- //@@ throw
- }
- }
-
-
- // hex_binary
- //
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (size_t size)
- : buffer<C> (size)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (size_t size, size_t capacity)
- : buffer<C> (size, capacity)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (const void* data, size_t size)
- : buffer<C> (data, size)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (const void* data, size_t size, size_t capacity)
- : buffer<C> (data, size, capacity)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>::
- hex_binary (void* data, size_t size, size_t capacity, bool own)
- : buffer<C> (data, size, capacity, own)
- {
- }
-
- template <typename C, typename B>
- hex_binary<C, B>* hex_binary<C, B>::
- _clone (flags f, container* c) const
- {
- return new hex_binary (*this, f, c);
- }
-
- template <typename C, typename B>
- std::basic_string<C> hex_binary<C, B>::
- encode () const
- {
- std::basic_string<C> str;
-
- const char tab[] = "0123456789ABCDEF";
-
- if (size_t n = this->size ())
- {
- str.reserve (2 * n + 1);
- str.resize (2 * n);
-
- for (size_t i (0); i < n; ++i)
- {
- unsigned char byte (
- static_cast<unsigned char> (*(this->data () + i)));
- unsigned char h (byte >> 4);
- unsigned char l (byte & 0x0F);
-
- str[2 * i] = C (tab[h]);
- str[2 * i + 1] = C (tab[l]);
- }
- }
-
- return str;
- }
-
- namespace bits
- {
- inline unsigned char
- hex_decode (XMLCh c)
- {
- unsigned char r (0xFF);
-
- if (c >= '0' && c <= '9')
- r = static_cast<unsigned char> (c - '0');
- else if (c >= 'A' && c <= 'F')
- r = static_cast<unsigned char> (10 + (c - 'A'));
- else if (c >= 'a' && c <= 'f')
- r = static_cast<unsigned char> (10 + (c - 'a'));
-
- return r;
- }
- }
-
- template <typename C, typename B>
- void hex_binary<C, B>::
- decode (const XMLCh* src)
- {
- size_t src_n (xercesc::XMLString::stringLen (src));
-
- if (src_n % 2 != 0)
- return; // @@ throw
-
- size_t n (src_n / 2);
-
- buffer<C> tmp (n);
-
- for (size_t i (0); i < n; ++i)
- {
- unsigned char h (bits::hex_decode (src[2 * i]));
- unsigned char l (bits::hex_decode (src[2 * i + 1]));
-
- if (h == 0xFF || l == 0xFF)
- return; //@@ throw
-
- tmp.data()[i] = (h << 4) | l;
- }
-
- this->swap (tmp); // g++ 4.1 likes it qualified, not sure why.
- }
-
-
- // entity
- //
- template <typename C, typename B>
- entity<C, B>* entity<C, B>::
- _clone (flags f, container* c) const
- {
- return new entity (*this, f, c);
- }
-
-
- // entities
- //
- template <typename C, typename B, typename entity>
- entities<C, B, entity>* entities<C, B, entity>::
- _clone (flags f, container* c) const
- {
- return new entities (*this, f, c);
- }
- }
- }
-}