summaryrefslogtreecommitdiff
path: root/libxsd/xsd/cxx/parser/non-validating
diff options
context:
space:
mode:
Diffstat (limited to 'libxsd/xsd/cxx/parser/non-validating')
-rw-r--r--libxsd/xsd/cxx/parser/non-validating/parser.hxx246
-rw-r--r--libxsd/xsd/cxx/parser/non-validating/parser.txx462
-rw-r--r--libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx791
-rw-r--r--libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx127
-rw-r--r--libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.txx2066
-rw-r--r--libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.hxx647
-rw-r--r--libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.ixx1247
-rw-r--r--libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx67
8 files changed, 0 insertions, 5653 deletions
diff --git a/libxsd/xsd/cxx/parser/non-validating/parser.hxx b/libxsd/xsd/cxx/parser/non-validating/parser.hxx
deleted file mode 100644
index 79b11d9..0000000
--- a/libxsd/xsd/cxx/parser/non-validating/parser.hxx
+++ /dev/null
@@ -1,246 +0,0 @@
-// file : xsd/cxx/parser/non-validating/parser.hxx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_PARSER_HXX
-#define XSD_CXX_PARSER_NON_VALIDATING_PARSER_HXX
-
-#include <stack>
-#include <string>
-#include <cstddef> // std::size_t
-
-#include <xsd/cxx/ro-string.hxx>
-#include <xsd/cxx/parser/elements.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- //
- //
- template <typename C>
- struct empty_content: parser_base<C>
- {
- // The _*_any_* functions are called when wildcard content
- // is encountered. Use them to handle mixed content models,
- // any/anyAttribute, and anyType/anySimpleType. By default
- // these functions do nothing.
- //
-
- // The type argument is a type name and namespace from the
- // xsi:type attribute in the form "<name> <namespace>" with
- // the space and namespace part absent if the type does not
- // have a namespace or 0 if xsi:type is not present.
- //
- virtual void
- _start_any_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- virtual void
- _end_any_element (const ro_string<C>& ns,
- const ro_string<C>& name);
-
- virtual void
- _any_attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _any_characters (const ro_string<C>&);
-
-
- //
- //
- virtual bool
- _start_element_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*);
-
- virtual bool
- _end_element_impl (const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _characters_impl (const ro_string<C>&);
-
-
- //
- //
- virtual void
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- virtual void
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name);
-
- virtual void
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _characters (const ro_string<C>& s);
- };
-
-
- //
- //
- template <typename C>
- struct simple_content: empty_content<C>
- {
- //
- //
- virtual void
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _characters (const ro_string<C>&);
- };
-
-
- //
- //
- template <typename C>
- struct complex_content: empty_content<C>
- {
- //
- //
- virtual void
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type);
-
- virtual void
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name);
-
- virtual void
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value);
-
- virtual void
- _characters (const ro_string<C>&);
-
-
- //
- //
- virtual void
- _pre_impl ();
-
- virtual void
- _post_impl ();
-
- protected:
- struct state
- {
- state ()
- : any_ (false), depth_ (0), parser_ (0)
- {
- }
-
- bool any_;
- std::size_t depth_;
- parser_base<C>* parser_;
- };
-
- // Optimized state stack for non-recursive case (one element).
- //
- struct state_stack
- {
- state_stack ()
- : size_ (0)
- {
- }
-
- void
- push (const state& s)
- {
- if (size_ > 0)
- rest_.push (top_);
-
- top_ = s;
- ++size_;
- }
-
- void
- pop ()
- {
- if (size_ > 1)
- {
- top_ = rest_.top ();
- rest_.pop ();
- }
-
- --size_;
- }
-
- const state&
- top () const
- {
- return top_;
- }
-
- state&
- top ()
- {
- return top_;
- }
-
- state&
- under_top ()
- {
- return rest_.top ();
- }
-
- private:
- state top_;
- std::stack<state> rest_;
- std::size_t size_;
- };
-
- state_stack context_;
- };
-
-
- // Base for xsd:list.
- //
- template <typename C>
- struct list_base: simple_content<C>
- {
- virtual void
- _xsd_parse_item (const ro_string<C>&) = 0;
-
- virtual void
- _pre_impl ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual void
- _post_impl ();
-
- protected:
- std::basic_string<C> buf_;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/non-validating/parser.txx>
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_PARSER_HXX
diff --git a/libxsd/xsd/cxx/parser/non-validating/parser.txx b/libxsd/xsd/cxx/parser/non-validating/parser.txx
deleted file mode 100644
index eed2756..0000000
--- a/libxsd/xsd/cxx/parser/non-validating/parser.txx
+++ /dev/null
@@ -1,462 +0,0 @@
-// file : xsd/cxx/parser/non-validating/parser.txx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cassert>
-
-#include <xsd/cxx/xml/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
-
- // empty_content
- //
-
- template <typename C>
- void empty_content<C>::
- _start_any_element (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*)
- {
- }
-
- template <typename C>
- void empty_content<C>::
- _end_any_element (const ro_string<C>&,
- const ro_string<C>&)
- {
- }
-
- template <typename C>
- void empty_content<C>::
- _any_attribute (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- }
-
- template <typename C>
- void empty_content<C>::
- _any_characters (const ro_string<C>&)
- {
- }
-
- //
- //
- template <typename C>
- bool empty_content<C>::
- _start_element_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*)
- {
- return false;
- }
-
- template <typename C>
- bool empty_content<C>::
- _end_element_impl (const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- bool empty_content<C>::
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- bool empty_content<C>::
- _characters_impl (const ro_string<C>&)
- {
- return false;
- }
-
- template <typename C>
- void empty_content<C>::
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- if (!_start_element_impl (ns, name, type))
- _start_any_element (ns, name, type);
- }
-
- template <typename C>
- void empty_content<C>::
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name)
- {
- if (!_end_element_impl (ns, name))
- _end_any_element (ns, name);
- }
-
- template <typename C>
- void empty_content<C>::
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- // Weed out special attributes: xsi:type, xsi:nil,
- // xsi:schemaLocation and noNamespaceSchemaLocation.
- // See section 3.2.7 in Structures for details.
- //
- if (ns == xml::bits::xsi_namespace<C> () &&
- (name == xml::bits::type<C> () ||
- name == xml::bits::nil_lit<C> () ||
- name == xml::bits::schema_location<C> () ||
- name == xml::bits::no_namespace_schema_location<C> ()))
- return;
-
- // Also some parsers (notably Xerces-C++) supplies us with
- // namespace-prefix mapping attributes.
- //
- if (ns == xml::bits::xmlns_namespace<C> ())
- return;
-
- if (!_attribute_impl (ns, name, value))
- _any_attribute (ns, name, value);
- }
-
- template <typename C>
- void empty_content<C>::
- _characters (const ro_string<C>& s)
- {
- if (!_characters_impl (s))
- _any_characters (s);
- }
-
-
- // simple_content
- //
-
- template <typename C>
- void simple_content<C>::
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- // Weed out special attributes: xsi:type, xsi:nil,
- // xsi:schemaLocation and xsi:noNamespaceSchemaLocation.
- // See section 3.2.7 in Structures for details.
- //
- if (ns == xml::bits::xsi_namespace<C> () &&
- (name == xml::bits::type<C> () ||
- name == xml::bits::nil_lit<C> () ||
- name == xml::bits::schema_location<C> () ||
- name == xml::bits::no_namespace_schema_location<C> ()))
- return;
-
- // Also some parsers (notably Xerces-C++) supplies us with
- // namespace-prefix mapping attributes.
- //
- if (ns == xml::bits::xmlns_namespace<C> ())
- return;
-
- if (!this->_attribute_impl (ns, name, value))
- this->_any_attribute (ns, name, value);
- }
-
- template <typename C>
- void simple_content<C>::
- _characters (const ro_string<C>& str)
- {
- this->_characters_impl (str);
- }
-
-
- // complex_content
- //
-
- template <typename C>
- void complex_content<C>::
- _start_element (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- state& s (context_.top ());
-
- if (s.depth_++ > 0)
- {
- if (s.any_)
- this->_start_any_element (ns, name, type);
- else if (s.parser_)
- s.parser_->_start_element (ns, name, type);
- }
- else
- {
- if (!this->_start_element_impl (ns, name, type))
- {
- this->_start_any_element (ns, name, type);
- s.any_ = true;
- }
- else if (s.parser_ != 0)
- s.parser_->_pre_impl ();
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _end_element (const ro_string<C>& ns,
- const ro_string<C>& name)
- {
- // To understand what's going on here it is helpful to think of
- // a "total depth" as being the sum of individual depths over
- // all elements.
- //
-
- if (context_.top ().depth_ == 0)
- {
- state& s (context_.under_top ()); // One before last.
-
- if (--s.depth_ > 0)
- {
- // Indirect recursion.
- //
- if (s.parser_)
- s.parser_->_end_element (ns, name);
- }
- else
- {
- // Direct recursion.
- //
- assert (this == s.parser_);
-
- this->_post_impl ();
-
- if (!this->_end_element_impl (ns, name))
- assert (false);
- }
- }
- else
- {
- state& s (context_.top ());
-
- if (--s.depth_ > 0)
- {
- if (s.any_)
- this->_end_any_element (ns, name);
- else if (s.parser_)
- s.parser_->_end_element (ns, name);
- }
- else
- {
- if (s.parser_ != 0 && !s.any_)
- s.parser_->_post_impl ();
-
- if (!this->_end_element_impl (ns, name))
- {
- s.any_ = false;
- this->_end_any_element (ns, name);
- }
- }
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _attribute (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- // Weed out special attributes: xsi:type, xsi:nil,
- // xsi:schemaLocation and xsi:noNamespaceSchemaLocation.
- // See section 3.2.7 in Structures for details.
- //
- if (ns == xml::bits::xsi_namespace<C> () &&
- (name == xml::bits::type<C> () ||
- name == xml::bits::nil_lit<C> () ||
- name == xml::bits::schema_location<C> () ||
- name == xml::bits::no_namespace_schema_location<C> ()))
- return;
-
- // Also some parsers (notably Xerces-C++) supplies us with
- // namespace-prefix mapping attributes.
- //
- if (ns == xml::bits::xmlns_namespace<C> ())
- return;
-
- state& s (context_.top ());
-
- if (s.depth_ > 0)
- {
- if (s.any_)
- this->_any_attribute (ns, name, value);
- else if (s.parser_)
- s.parser_->_attribute (ns, name, value);
- }
- else
- {
- if (!this->_attribute_impl (ns, name, value))
- this->_any_attribute (ns, name, value);
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _characters (const ro_string<C>& str)
- {
- state& s (context_.top ());
-
- if (s.depth_ > 0)
- {
- if (s.any_)
- this->_any_characters (str);
- else if (s.parser_)
- s.parser_->_characters (str);
- }
- else
- {
- if (!this->_characters_impl (str))
- this->_any_characters (str);
- }
- }
-
- template <typename C>
- void complex_content<C>::
- _pre_impl ()
- {
- context_.push (state ());
- this->_pre ();
- }
-
- template <typename C>
- void complex_content<C>::
- _post_impl ()
- {
- this->_post ();
- context_.pop ();
- }
-
- // list_base
- //
- namespace bits
- {
- // Find first non-space character.
- //
- template <typename C>
- typename ro_string<C>::size_type
- find_ns (const C* s,
- typename ro_string<C>::size_type size,
- typename ro_string<C>::size_type pos)
- {
- while (pos < size &&
- (s[pos] == C (0x20) || s[pos] == C (0x0A) ||
- s[pos] == C (0x0D) || s[pos] == C (0x09)))
- ++pos;
-
- return pos < size ? pos : ro_string<C>::npos;
- }
-
- // Find first space character.
- //
- template <typename C>
- typename ro_string<C>::size_type
- find_s (const C* s,
- typename ro_string<C>::size_type size,
- typename ro_string<C>::size_type pos)
- {
- while (pos < size &&
- s[pos] != C (0x20) && s[pos] != C (0x0A) &&
- s[pos] != C (0x0D) && s[pos] != C (0x09))
- ++pos;
-
- return pos < size ? pos : ro_string<C>::npos;
- }
- }
-
- // Relevant XML Schema Part 2: Datatypes sections: 4.2.1.2, 4.3.6.
- //
-
- template <typename C>
- void list_base<C>::
- _pre_impl ()
- {
- simple_content<C>::_pre_impl ();
- buf_.clear ();
- }
-
- template <typename C>
- void list_base<C>::
- _characters (const ro_string<C>& s)
- {
- typedef typename ro_string<C>::size_type size_type;
-
- const C* data (s.data ());
- size_type size (s.size ());
-
- // Handle the previous chunk if we start with a ws.
- //
- if (!buf_.empty () &&
- (data[0] == C (0x20) || data[0] == C (0x0A) ||
- data[0] == C (0x0D) || data[0] == C (0x09)))
- {
- ro_string<C> tmp (buf_); // Private copy ctor.
- _xsd_parse_item (tmp);
- buf_.clear ();
- }
-
- // Traverse the data while logically collapsing spaces.
- //
- for (size_type i (bits::find_ns (data, size, 0));
- i != ro_string<C>::npos;)
- {
- size_type j (bits::find_s (data, size, i));
-
- if (j != ro_string<C>::npos)
- {
- if (buf_.empty ())
- {
- ro_string<C> tmp (data + i, j - i); // Private copy ctor.
- _xsd_parse_item (tmp);
- }
- else
- {
- // Assemble the first item in str from buf_ and s.
- //
- std::basic_string<C> str;
- str.swap (buf_);
- str.append (data + i, j - i);
- ro_string<C> tmp (str); // Private copy ctor.
- _xsd_parse_item (tmp);
- }
-
- i = bits::find_ns (data, size, j);
- }
- else
- {
- // Last fragment, append it to the buf_.
- //
- buf_.append (data + i, size - i);
- break;
- }
- }
- }
-
- template <typename C>
- void list_base<C>::
- _post_impl ()
- {
- // Handle the last item.
- //
- if (!buf_.empty ())
- {
- ro_string<C> tmp (buf_); // Private copy ctor.
- _xsd_parse_item (tmp);
- }
-
- simple_content<C>::_post_impl ();
- }
- }
- }
- }
-}
diff --git a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx b/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx
deleted file mode 100644
index 0ce04cc..0000000
--- a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx
+++ /dev/null
@@ -1,791 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pimpl.hxx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_HXX
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_HXX
-
-#include <string>
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pskel.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- // any_type
- //
- template <typename C>
- struct any_type_pimpl: virtual any_type_pskel<C>
- {
- virtual void
- post_any_type ();
- };
-
- // any_simple_type
- //
- template <typename C>
- struct any_simple_type_pimpl: virtual any_simple_type_pskel<C>
- {
- virtual void
- post_any_simple_type ();
- };
-
- // boolean
- //
- template <typename C>
- struct boolean_pimpl: virtual boolean_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual bool
- post_boolean ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // 8-bit
- //
- template <typename C>
- struct byte_pimpl: virtual byte_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual signed char
- post_byte ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct unsigned_byte_pimpl: virtual unsigned_byte_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned char
- post_unsigned_byte ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // 16-bit
- //
- template <typename C>
- struct short_pimpl: virtual short_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual short
- post_short ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct unsigned_short_pimpl: virtual unsigned_short_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned short
- post_unsigned_short ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // 32-bit
- //
- template <typename C>
- struct int_pimpl: virtual int_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual int
- post_int ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct unsigned_int_pimpl: virtual unsigned_int_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned int
- post_unsigned_int ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // 64-bit
- //
- template <typename C>
- struct long_pimpl: virtual long_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual long long
- post_long ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct unsigned_long_pimpl: virtual unsigned_long_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned long long
- post_unsigned_long ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // Arbitrary-length integers.
- //
- template <typename C>
- struct integer_pimpl: virtual integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual long long
- post_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct negative_integer_pimpl: virtual negative_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual long long
- post_negative_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct non_positive_integer_pimpl: virtual non_positive_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual long long
- post_non_positive_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct positive_integer_pimpl: virtual positive_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned long long
- post_positive_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct non_negative_integer_pimpl: virtual non_negative_integer_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual unsigned long long
- post_non_negative_integer ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // Floats.
- //
- template <typename C>
- struct float_pimpl: virtual float_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual float
- post_float ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct double_pimpl: virtual double_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual double
- post_double ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- template <typename C>
- struct decimal_pimpl: virtual decimal_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual double
- post_decimal ();
-
- protected:
- std::basic_string<C> str_;
- };
-
-
- // Strings.
- //
- template <typename C>
- struct string_pimpl: virtual string_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_string ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct normalized_string_pimpl: virtual normalized_string_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_normalized_string ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct token_pimpl: virtual token_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_token ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct name_pimpl: virtual name_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_name ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct nmtoken_pimpl: virtual nmtoken_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_nmtoken ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct nmtokens_pimpl: virtual nmtokens_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _xsd_parse_item (const ro_string<C>&);
-
- virtual string_sequence<C>
- post_nmtokens ();
-
- protected:
- string_sequence<C> seq_;
- nmtoken_pimpl<C> parser_;
- };
-
- template <typename C>
- struct ncname_pimpl: virtual ncname_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_ncname ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct id_pimpl: virtual id_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_id ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct idref_pimpl: virtual idref_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_idref ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- template <typename C>
- struct idrefs_pimpl: virtual idrefs_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _xsd_parse_item (const ro_string<C>&);
-
- virtual string_sequence<C>
- post_idrefs ();
-
- protected:
- string_sequence<C> seq_;
- idref_pimpl<C> parser_;
- };
-
- // language
- //
- template <typename C>
- struct language_pimpl: virtual language_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_language ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // anyURI
- //
- template <typename C>
- struct uri_pimpl: virtual uri_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual std::basic_string<C>
- post_uri ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // QName
- //
- template <typename C>
- struct qname_pimpl: virtual qname_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual qname<C>
- post_qname ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // base64Binary
- //
- template <typename C>
- struct base64_binary_pimpl: virtual base64_binary_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual XSD_AUTO_PTR<buffer>
- post_base64_binary ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // hexBinary
- //
- template <typename C>
- struct hex_binary_pimpl: virtual hex_binary_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual XSD_AUTO_PTR<buffer>
- post_hex_binary ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gday
- //
- template <typename C>
- struct gday_pimpl: virtual gday_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gday
- post_gday ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gmonth
- //
- template <typename C>
- struct gmonth_pimpl: virtual gmonth_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gmonth
- post_gmonth ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gyear
- //
- template <typename C>
- struct gyear_pimpl: virtual gyear_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gyear
- post_gyear ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gmonth_day
- //
- template <typename C>
- struct gmonth_day_pimpl: virtual gmonth_day_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gmonth_day
- post_gmonth_day ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // gyear_month
- //
- template <typename C>
- struct gyear_month_pimpl: virtual gyear_month_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual gyear_month
- post_gyear_month ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // date
- //
- template <typename C>
- struct date_pimpl: virtual date_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual date
- post_date ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // time
- //
- template <typename C>
- struct time_pimpl: virtual time_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual time
- post_time ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // date_time
- //
- template <typename C>
- struct date_time_pimpl: virtual date_time_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual date_time
- post_date_time ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- // duration
- //
- template <typename C>
- struct duration_pimpl: virtual duration_pskel<C>
- {
- virtual void
- _pre ();
-
- virtual void
- _characters (const ro_string<C>&);
-
- virtual duration
- post_duration ();
-
- protected:
- std::basic_string<C> str_;
- };
-
- //
- //
- namespace bits
- {
- // float literals: INF -INF NaN
- //
- template<typename C>
- const C*
- positive_inf ();
-
- template<typename C>
- const C*
- negative_inf ();
-
- template<typename C>
- const C*
- nan ();
-
- // boolean literals
- //
- template<typename C>
- const C*
- true_ ();
-
- template<typename C>
- const C*
- one ();
- }
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pimpl.txx>
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_HXX
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx>
diff --git a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx b/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx
deleted file mode 100644
index 6082654..0000000
--- a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx
+++ /dev/null
@@ -1,127 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pimpl.ixx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_CHAR
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- namespace bits
- {
- //
- //
- template<>
- inline const char*
- positive_inf<char> ()
- {
- return "INF";
- }
-
- template<>
- inline const char*
- negative_inf<char> ()
- {
- return "-INF";
- }
-
- template<>
- inline const char*
- nan<char> ()
- {
- return "NaN";
- }
-
- //
- //
- template<>
- inline const char*
- true_<char> ()
- {
- return "true";
- }
-
- template<>
- inline const char*
- one<char> ()
- {
- return "1";
- }
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_CHAR
-#endif // XSD_CXX_PARSER_USE_CHAR
-
-
-#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_WCHAR
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- namespace bits
- {
- //
- //
- template<>
- inline const wchar_t*
- positive_inf<wchar_t> ()
- {
- return L"INF";
- }
-
- template<>
- inline const wchar_t*
- negative_inf<wchar_t> ()
- {
- return L"-INF";
- }
-
- template<>
- inline const wchar_t*
- nan<wchar_t> ()
- {
- return L"NaN";
- }
-
- //
- //
- template<>
- inline const wchar_t*
- true_<wchar_t> ()
- {
- return L"true";
- }
-
- template<>
- inline const wchar_t*
- one<wchar_t> ()
- {
- return L"1";
- }
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PIMPL_IXX_WCHAR
-#endif // XSD_CXX_PARSER_USE_WCHAR
diff --git a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.txx b/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.txx
deleted file mode 100644
index 9f56f7f..0000000
--- a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pimpl.txx
+++ /dev/null
@@ -1,2066 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pimpl.txx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <limits>
-#include <locale>
-
-#include <xsd/cxx/zc-istream.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- // Note that most of the types implemented here cannot have
- // whitespaces in the value. As result we don't need to waste
- // time collapsing whitespaces. All we need to do is trim the
- // string representation which can be done without copying.
- //
-
- // any_type
- //
-
- template <typename C>
- void any_type_pimpl<C>::
- post_any_type ()
- {
- }
-
- // any_simple_type
- //
-
- template <typename C>
- void any_simple_type_pimpl<C>::
- post_any_simple_type ()
- {
- }
-
- // boolean
- //
- template <typename C>
- void boolean_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void boolean_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- bool boolean_pimpl<C>::
- post_boolean ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- return str == bits::true_<C> () || str == bits::one<C> ();
- }
-
- // byte
- //
-
- template <typename C>
- void byte_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void byte_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- signed char byte_pimpl<C>::
- post_byte ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- short t;
- zc_istream<C> is (str);
- is >> t;
-
- return static_cast<signed char> (t);
- }
-
- // unsigned_byte
- //
-
- template <typename C>
- void unsigned_byte_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_byte_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned char unsigned_byte_pimpl<C>::
- post_unsigned_byte ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned short t;
- zc_istream<C> is (str);
- is >> t;
-
- return static_cast<unsigned char> (t);
- }
-
- // short
- //
-
- template <typename C>
- void short_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void short_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- short short_pimpl<C>::
- post_short ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- short t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // unsigned_short
- //
-
- template <typename C>
- void unsigned_short_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_short_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned short unsigned_short_pimpl<C>::
- post_unsigned_short ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned short t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // int
- //
-
- template <typename C>
- void int_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void int_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- int int_pimpl<C>::
- post_int ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- int t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // unsigned_int
- //
-
- template <typename C>
- void unsigned_int_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_int_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned int unsigned_int_pimpl<C>::
- post_unsigned_int ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned int t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // long
- //
- template <typename C>
- void long_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void long_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- long long long_pimpl<C>::
- post_long ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // unsigned_long
- //
- template <typename C>
- void unsigned_long_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void unsigned_long_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned long long unsigned_long_pimpl<C>::
- post_unsigned_long ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // integer
- //
- template <typename C>
- void integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- long long integer_pimpl<C>::
- post_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // negative_integer
- //
- template <typename C>
- void negative_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void negative_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- long long negative_integer_pimpl<C>::
- post_negative_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // non_positive_integer
- //
- template <typename C>
- void non_positive_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void non_positive_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- long long non_positive_integer_pimpl<C>::
- post_non_positive_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // positive_integer
- //
- template <typename C>
- void positive_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void positive_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned long long positive_integer_pimpl<C>::
- post_positive_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // non_negative_integer
- //
- template <typename C>
- void non_negative_integer_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void non_negative_integer_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- unsigned long long non_negative_integer_pimpl<C>::
- post_non_negative_integer ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- unsigned long long t;
- zc_istream<C> is (str);
- is >> t;
-
- return t;
- }
-
- // float
- //
- template <typename C>
- void float_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void float_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- float float_pimpl<C>::
- post_float ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- if (str == bits::positive_inf<C> ())
- return std::numeric_limits<float>::infinity ();
-
- if (str == bits::negative_inf<C> ())
- return -std::numeric_limits<float>::infinity ();
-
- if (str == bits::nan<C> ())
- return std::numeric_limits<float>::quiet_NaN ();
-
- float t;
- zc_istream<C> is (str);
- is.imbue (std::locale::classic ());
- is >> t;
-
- return t;
- }
-
- // double
- //
- template <typename C>
- void double_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void double_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- double double_pimpl<C>::
- post_double ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- if (str == bits::positive_inf<C> ())
- return std::numeric_limits<double>::infinity ();
-
- if (str == bits::negative_inf<C> ())
- return -std::numeric_limits<double>::infinity ();
-
- if (str == bits::nan<C> ())
- return std::numeric_limits<double>::quiet_NaN ();
-
- double t;
- zc_istream<C> is (str);
- is.imbue (std::locale::classic ());
- is >> t;
-
- return t;
- }
-
- // decimal
- //
- template <typename C>
- void decimal_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void decimal_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- double decimal_pimpl<C>::
- post_decimal ()
- {
- std::basic_string<C> tmp;
- tmp.swap (str_);
-
- ro_string<C> str (tmp);
- trim (str);
-
- double t;
- zc_istream<C> is (str);
- is.imbue (std::locale::classic ());
- is >> t;
-
- return t;
- }
-
-
- // string
- //
- template <typename C>
- void string_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void string_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> string_pimpl<C>::
- post_string ()
- {
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // normalized_string
- //
- template <typename C>
- void normalized_string_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void normalized_string_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> normalized_string_pimpl<C>::
- post_normalized_string ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (str_.size ());
-
- for (size_type i (0); i < size; ++i)
- {
- C& c = str_[i];
-
- if (c == C (0x0A) || c == C (0x0D) || c == C (0x09))
- c = C (0x20);
- }
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // token
- //
- template <typename C>
- void token_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void token_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> token_pimpl<C>::
- post_token ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (str_.size ());
- size_type j (0);
-
- bool subs (false);
-
- for (size_type i (0); i < size; ++i)
- {
- C c = str_[i];
-
- if (c == C (0x20) || c == C (0x0A) ||
- c == C (0x0D) || c == C (0x09))
- {
- subs = true;
- }
- else
- {
- if (subs)
- {
- subs = false;
- str_[j++] = C (0x20);
- }
-
- str_[j++] = c;
- }
- }
-
- str_.resize (j);
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // name
- //
- template <typename C>
- void name_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void name_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> name_pimpl<C>::
- post_name ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // nmtoken
- //
- template <typename C>
- void nmtoken_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void nmtoken_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> nmtoken_pimpl<C>::
- post_nmtoken ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // nmtokens
- //
- template <typename C>
- void nmtokens_pimpl<C>::
- _pre ()
- {
- nmtokens_pskel<C>::_pre ();
- seq_.clear ();
- }
-
- template <typename C>
- string_sequence<C> nmtokens_pimpl<C>::
- post_nmtokens ()
- {
- string_sequence<C> r;
- r.swap (seq_);
- return r;
- }
-
- template <typename C>
- void nmtokens_pimpl<C>::
- _xsd_parse_item (const ro_string<C>& s)
- {
- parser_.pre ();
- parser_._pre ();
- parser_._characters (s);
- parser_._post ();
- seq_.push_back (parser_.post_nmtoken ());
- }
-
- // ncname
- //
- template <typename C>
- void ncname_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void ncname_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> ncname_pimpl<C>::
- post_ncname ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // id
- //
- template <typename C>
- void id_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void id_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> id_pimpl<C>::
- post_id ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // idref
- //
- template <typename C>
- void idref_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void idref_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> idref_pimpl<C>::
- post_idref ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // idrefs
- //
- template <typename C>
- void idrefs_pimpl<C>::
- _pre ()
- {
- idrefs_pskel<C>::_pre ();
- seq_.clear ();
- }
-
- template <typename C>
- string_sequence<C> idrefs_pimpl<C>::
- post_idrefs ()
- {
- string_sequence<C> r;
- r.swap (seq_);
- return r;
- }
-
- template <typename C>
- void idrefs_pimpl<C>::
- _xsd_parse_item (const ro_string<C>& s)
- {
- parser_.pre ();
- parser_._pre ();
- parser_._characters (s);
- parser_._post ();
- seq_.push_back (parser_.post_idref ());
- }
-
- // language
- //
- template <typename C>
- void language_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void language_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> language_pimpl<C>::
- post_language ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // uri
- //
- template <typename C>
- void uri_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void uri_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- std::basic_string<C> uri_pimpl<C>::
- post_uri ()
- {
- ro_string<C> tmp (str_);
- str_.resize (trim_right (tmp));
-
- std::basic_string<C> r;
- r.swap (str_);
- return r;
- }
-
- // qname
- //
- template <typename C>
- void qname_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void qname_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- qname<C> qname_pimpl<C>::
- post_qname ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- size_type pos (tmp.find (C (':')));
-
- if (pos != ro_string<C>::npos)
- {
- std::basic_string<C> prefix (tmp.data (), pos++);
- std::basic_string<C> name (tmp.data () + pos, size - pos);
- return qname<C> (prefix, name);
- }
- else
- {
- str_.resize (size);
- return qname<C> (str_);
- }
- }
-
- // base64_binary
- //
- template <typename C>
- void base64_binary_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void base64_binary_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- namespace bits
- {
- template <typename C>
- inline unsigned char
- base64_decode (C c)
- {
- unsigned char r (0xFF);
-
- if (c >= C('A') && c <= C ('Z'))
- r = static_cast<unsigned char> (c - C ('A'));
- else if (c >= C('a') && c <= C ('z'))
- r = static_cast<unsigned char> (c - C ('a') + 26);
- else if (c >= C('0') && c <= C ('9'))
- r = static_cast<unsigned char> (c - C ('0') + 52);
- else if (c == C ('+'))
- r = 62;
- else if (c == C ('/'))
- r = 63;
-
- return r;
- }
- }
-
- template <typename C>
- XSD_AUTO_PTR<buffer> base64_binary_pimpl<C>::
- post_base64_binary ()
- {
- typedef typename std::basic_string<C>::size_type size_type;
-
- size_type size (str_.size ());
- const C* src (str_.c_str ());
-
- // Remove all whitespaces.
- //
- {
- size_type j (0);
-
- bool subs (false);
-
- for (size_type i (0); i < size; ++i)
- {
- C c = str_[i];
-
- if (c == C (0x20) || c == C (0x0A) ||
- c == C (0x0D) || c == C (0x09))
- {
- subs = true;
- }
- else
- {
- if (subs)
- subs = false;
-
- str_[j++] = c;
- }
- }
-
- size = j;
- str_.resize (size);
- }
-
- // Our length should be a multiple of four.
- //
- size_type quad_count (size / 4);
- size_type capacity (quad_count * 3 + 1);
-
- XSD_AUTO_PTR<buffer> buf (new buffer (capacity, capacity));
- char* dst (buf->data ());
-
- size_type si (0), di (0); // Source and destination indexes.
-
- // Process all quads except the last one.
- //
- unsigned char b1, b2, b3, b4;
-
- for (size_type q (0); q < quad_count - 1; ++q)
- {
- b1 = bits::base64_decode (src[si++]);
- b2 = bits::base64_decode (src[si++]);
- b3 = bits::base64_decode (src[si++]);
- b4 = bits::base64_decode (src[si++]);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- dst[di++] = (b2 << 4) | (b3 >> 2);
- dst[di++] = (b3 << 6) | b4;
- }
-
- // Process the last quad. The first two octets are always there.
- //
- b1 = bits::base64_decode (src[si++]);
- b2 = bits::base64_decode (src[si++]);
-
- C e3 (src[si++]);
- C e4 (src[si++]);
-
- if (e4 == C ('='))
- {
- if (e3 == C ('='))
- {
- // Two pads. Last 4 bits in b2 should be zero.
- //
- dst[di++] = (b1 << 2) | (b2 >> 4);
- }
- else
- {
- // One pad. Last 2 bits in b3 should be zero.
- //
- b3 = bits::base64_decode (e3);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- dst[di++] = (b2 << 4) | (b3 >> 2);
- }
- }
- else
- {
- // No pads.
- //
- b3 = bits::base64_decode (e3);
- b4 = bits::base64_decode (e4);
-
- dst[di++] = (b1 << 2) | (b2 >> 4);
- dst[di++] = (b2 << 4) | (b3 >> 2);
- dst[di++] = (b3 << 6) | b4;
- }
-
- // Set the real size.
- //
- buf->size (di);
-
- return buf;
- }
-
- // hex_binary
- //
- template <typename C>
- void hex_binary_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void hex_binary_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- namespace bits
- {
- template <typename C>
- inline unsigned char
- hex_decode (C c)
- {
- unsigned char r (0xFF);
-
- if (c >= C('0') && c <= C ('9'))
- r = static_cast<unsigned char> (c - C ('0'));
- else if (c >= C ('A') && c <= C ('F'))
- r = static_cast<unsigned char> (10 + (c - C ('A')));
- else if (c >= C ('a') && c <= C ('f'))
- r = static_cast<unsigned char> (10 + (c - C ('a')));
-
- return r;
- }
- }
-
- template <typename C>
- XSD_AUTO_PTR<buffer> hex_binary_pimpl<C>::
- post_hex_binary ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- buffer::size_t n (size / 2);
- XSD_AUTO_PTR<buffer> buf (new buffer (n));
-
- const C* src (tmp.data ());
- char* dst (buf->data ());
-
- for (buffer::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]));
- dst[i] = (h << 4) | l;
- }
-
- return buf;
- }
-
- // time_zone
- //
- namespace bits
- {
- // Datatypes 3.2.7.3.
- //
- template <typename C>
- void
- parse_tz (const C* s,
- typename std::basic_string<C>::size_type n,
- short& h, short& m)
- {
- // time_zone := Z|(+|-)HH:MM
- //
- if (n == 0)
- {
- return;
- }
- else if (s[0] == 'Z')
- {
- h = 0;
- m = 0;
- }
- else if (n == 6)
- {
- // Parse hours.
- //
- h = 10 * (s[1] - '0') + (s[2] - '0');
-
- // Parse minutes.
- //
- m = 10 * (s[4] - '0') + (s[5] - '0');
-
- if (s[0] == '-')
- {
- h = -h;
- m = -m;
- }
- }
- }
- }
-
- // gday
- //
- template <typename C>
- void gday_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gday_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gday gday_pimpl<C>::
- post_gday ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- unsigned short day (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gday := ---DD[Z|(+|-)HH:MM]
- //
- if (size >= 5)
- {
- day = 10 * (s[3] - '0') + (s[4] - '0');
-
- if (size > 5)
- {
- bits::parse_tz (s + 5, size - 5, zh, zm);
- z = true;
- }
- }
-
- return z ? gday (day, zh, zm) : gday (day);
- }
-
- // gmonth
- //
- template <typename C>
- void gmonth_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gmonth_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gmonth gmonth_pimpl<C>::
- post_gmonth ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- unsigned short month (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gmonth := --MM[Z|(+|-)HH:MM]
- //
- if (size >= 4)
- {
- month = 10 * (s[2] - '0') + (s[3] - '0');
-
- if (size > 4)
- {
- bits::parse_tz (s + 4, size - 4, zh, zm);
- z = true;
- }
- }
-
- return z ? gmonth (month, zh, zm) : gmonth (month);
- }
-
- // gyear
- //
- template <typename C>
- void gyear_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gyear_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gyear gyear_pimpl<C>::
- post_gyear ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- int year (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gyear := [-]CCYY[N]*[Z|(+|-)HH:MM]
- //
-
- if (size >= 4)
- {
- // Find the end of the year token.
- //
- size_type pos (4);
- for (; pos < size; ++pos)
- {
- C c (s[pos]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> is (year_fragment);
- is >> year;
-
- if (pos < size)
- {
- bits::parse_tz (s + pos, size - pos, zh, zm);
- z = true;
- }
- }
-
- return z ? gyear (year, zh, zm) : gyear (year);
- }
-
- // gmonth_day
- //
- template <typename C>
- void gmonth_day_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gmonth_day_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gmonth_day gmonth_day_pimpl<C>::
- post_gmonth_day ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- unsigned short month (0), day (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gmonth_day := --MM-DD[Z|(+|-)HH:MM]
- //
- if (size >= 7)
- {
- month = 10 * (s[2] - '0') + (s[3] - '0');
- day = 10 * (s[5] - '0') + (s[6] - '0');
-
- if (size > 7)
- {
- bits::parse_tz (s + 7, size - 7, zh, zm);
- z = true;
- }
- }
-
- return z
- ? gmonth_day (month, day, zh, zm)
- : gmonth_day (month, day);
- }
-
- // gyear_month
- //
- template <typename C>
- void gyear_month_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void gyear_month_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- gyear_month gyear_month_pimpl<C>::
- post_gyear_month ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- int year (0);
- unsigned short month (0);
- bool z (false);
- short zh (0), zm (0);
-
- // gyear_month := [-]CCYY[N]*-MM[Z|(+|-)HH:MM]
- //
-
- if (size >= 7)
- {
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), 4));
-
- if (pos != ro_string<C>::npos && (size - pos - 1) >= 2)
- {
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
- yis >> year;
-
- month = 10 * (s[pos + 1] - '0') + (s[pos + 2] - '0');
-
- pos += 3;
-
- if (pos < size)
- {
- bits::parse_tz (s + pos, size - pos, zh, zm);
- z = true;
- }
- }
- }
-
- return z
- ? gyear_month (year, month, zh, zm)
- : gyear_month (year, month);
- }
-
- // date
- //
- template <typename C>
- void date_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void date_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- date date_pimpl<C>::
- post_date ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- int year (0);
- unsigned short month (0), day (0);
- bool z (false);
- short zh (0), zm (0);
-
- // date := [-]CCYY[N]*-MM-DD[Z|(+|-)HH:MM]
- //
-
- if (size >= 10)
- {
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), 4));
-
- if (pos != ro_string<C>::npos && (size - pos - 1) >= 5)
- {
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
- yis >> year;
-
- month = 10 * (s[pos + 1] - '0') + (s[pos + 2] - '0');
- day = 10 * (s[pos + 4] - '0') + (s[pos + 5] - '0');
-
- pos += 6;
-
- if (pos < size)
- {
- bits::parse_tz (s + pos, size - pos, zh, zm);
- z = true;
- }
- }
- }
-
- return z
- ? date (year, month, day, zh, zm)
- : date (year, month, day);
- }
-
- // time
- //
- template <typename C>
- void time_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void time_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- time time_pimpl<C>::
- post_time ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- unsigned short hours (0), minutes (0);
- double seconds (0.0);
- bool z (false);
- short zh (0), zm (0);
-
- // time := HH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
-
- if (size >= 8)
- {
- hours = 10 * (s[0] - '0') + (s[1] - '0');
- minutes = 10 * (s[3] - '0') + (s[4] - '0');
-
- // Find the end of the seconds fragment.
- //
- size_type pos (8);
- for (; pos < size; ++pos)
- {
- C c (s[pos]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> seconds_fragment (s + 6, pos - 6);
- zc_istream<C> sis (seconds_fragment);
- sis >> seconds;
-
- if (pos < size)
- {
- bits::parse_tz (s + pos, size - pos, zh, zm);
- z = true;
- }
- }
-
- return z
- ? time (hours, minutes, seconds, zh, zm)
- : time (hours, minutes, seconds);
- }
-
-
- // date_time
- //
- template <typename C>
- void date_time_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void date_time_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- template <typename C>
- date_time date_time_pimpl<C>::
- post_date_time ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
- const C* s (tmp.data ());
-
- int year (0);
- unsigned short month (0), day (0), hours (0), minutes (0);
- double seconds (0.0);
- bool z (false);
- short zh (0), zm (0);
-
- // date_time := [-]CCYY[N]*-MM-DDTHH:MM:SS[.S+][Z|(+|-)HH:MM]
- //
-
- if (size >= 19)
- {
- // Find the end of the year token.
- //
- size_type pos (tmp.find (C ('-'), 4));
-
- if (pos != ro_string<C>::npos && (size - pos - 1) >= 14)
- {
- ro_string<C> year_fragment (s, pos);
- zc_istream<C> yis (year_fragment);
- yis >> year;
-
- month = 10 * (s[pos + 1] - '0') + (s[pos + 2] - '0');
- day = 10 * (s[pos + 4] - '0') + (s[pos + 5] - '0');
-
- pos += 7; // Point to the first H.
-
- hours = 10 * (s[pos] - '0') + (s[pos + 1] - '0');
- minutes = 10 * (s[pos + 3] - '0') + (s[pos + 4] - '0');
-
- // Find the end of the seconds fragment.
- //
- pos += 6; // Point to the first S.
-
- size_type sec_end (pos + 2);
- for (; sec_end < size; ++sec_end)
- {
- C c (s[sec_end]);
-
- if (c == C ('Z') || c == C ('+') || c == C ('-'))
- break;
- }
-
- ro_string<C> seconds_fragment (s + pos, sec_end - pos);
- zc_istream<C> sis (seconds_fragment);
- sis >> seconds;
-
- if (sec_end < size)
- {
- bits::parse_tz (s + sec_end, size - sec_end, zh, zm);
- z = true;
- }
- }
- }
-
- return z
- ? date_time (year, month, day, hours, minutes, seconds, zh, zm)
- : date_time (year, month, day, hours, minutes, seconds);
- }
-
- // duration
- //
- template <typename C>
- void duration_pimpl<C>::
- _pre ()
- {
- str_.clear ();
- }
-
- template <typename C>
- void duration_pimpl<C>::
- _characters (const ro_string<C>& s)
- {
- if (str_.size () == 0)
- {
- ro_string<C> tmp (s.data (), s.size ());
-
- if (trim_left (tmp) != 0)
- str_ += tmp;
- }
- else
- str_ += s;
- }
-
- namespace bits
- {
- template <typename C>
- inline typename ro_string<C>::size_type
- duration_delim (const C* s,
- typename ro_string<C>::size_type pos,
- typename ro_string<C>::size_type size)
- {
- const C* p (s + pos);
- for (; p < (s + size); ++p)
- {
- if (*p == C ('Y') || *p == C ('D') || *p == C ('M') ||
- *p == C ('H') || *p == C ('M') || *p == C ('S') ||
- *p == C ('T'))
- break;
- }
-
- return p - s;
- }
- }
-
- template <typename C>
- duration duration_pimpl<C>::
- post_duration ()
- {
- typedef typename ro_string<C>::size_type size_type;
-
- ro_string<C> tmp (str_);
- size_type size (trim_right (tmp));
-
- bool negative (false);
- unsigned int years (0), months (0), days (0), hours (0), minutes (0);
- double seconds (0.0);
-
- // duration := [-]P[nY][nM][nD][TnHnMn[.n+]S]
- //
- const C* s (tmp.data ());
-
- if (size >= 3)
- {
- size_type pos (0);
-
- if (s[0] == C ('-'))
- {
- negative = true;
- pos++;
- }
-
- pos++; // Skip 'P'.
-
- size_type del (bits::duration_delim (s, pos, size));
-
- if (del != size && s[del] == C ('Y'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> years;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('M'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> months;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('D'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> days;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('T'))
- {
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
-
- if (del != size && s[del] == C ('H'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> hours;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('M'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> minutes;
-
- pos = del + 1;
- del = bits::duration_delim (s, pos, size);
- }
-
- if (del != size && s[del] == C ('S'))
- {
- ro_string<C> fragment (s + pos, del - pos);
- zc_istream<C> is (fragment);
- is >> seconds;
- }
- }
- }
-
- return duration (
- negative, years, months, days, hours, minutes, seconds);
- }
- }
- }
- }
-}
diff --git a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.hxx b/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.hxx
deleted file mode 100644
index cac9d27..0000000
--- a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.hxx
+++ /dev/null
@@ -1,647 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pskel.hxx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_HXX
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_HXX
-
-#include <string>
-#include <memory> // std::auto_ptr/unique_ptr
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-#include <xsd/cxx/parser/xml-schema.hxx>
-#include <xsd/cxx/parser/non-validating/parser.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- // anyType and anySimpleType. All events are routed to the
- // _any_* callbacks.
- //
- template <typename C>
- struct any_type_pskel: complex_content<C>
- {
- virtual bool
- _start_element_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>*);
-
- virtual bool
- _end_element_impl (const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _attribute_impl (const ro_string<C>&,
- const ro_string<C>&,
- const ro_string<C>&);
-
- virtual bool
- _characters_impl (const ro_string<C>&);
-
- virtual void
- post_any_type () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct any_simple_type_pskel: simple_content<C>
- {
- virtual bool
- _characters_impl (const ro_string<C>&);
-
- virtual void
- post_any_simple_type () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Boolean.
- //
- template <typename C>
- struct boolean_pskel: simple_content<C>
- {
- virtual bool
- post_boolean () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 8-bit
- //
- template <typename C>
- struct byte_pskel: simple_content<C>
- {
- virtual signed char
- post_byte () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_byte_pskel: simple_content<C>
- {
- virtual unsigned char
- post_unsigned_byte () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 16-bit
- //
- template <typename C>
- struct short_pskel: simple_content<C>
- {
- virtual short
- post_short () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_short_pskel: simple_content<C>
- {
- virtual unsigned short
- post_unsigned_short () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 32-bit
- //
- template <typename C>
- struct int_pskel: simple_content<C>
- {
- virtual int
- post_int () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_int_pskel: simple_content<C>
- {
- virtual unsigned int
- post_unsigned_int () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // 64-bit
- //
- template <typename C>
- struct long_pskel: simple_content<C>
- {
- virtual long long
- post_long () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct unsigned_long_pskel: simple_content<C>
- {
- virtual unsigned long long
- post_unsigned_long () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Arbitrary-length integers.
- //
- template <typename C>
- struct integer_pskel: simple_content<C>
- {
- virtual long long
- post_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct negative_integer_pskel: simple_content<C>
- {
- virtual long long
- post_negative_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct non_positive_integer_pskel: simple_content<C>
- {
- virtual long long
- post_non_positive_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct positive_integer_pskel: simple_content<C>
- {
- virtual unsigned long long
- post_positive_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct non_negative_integer_pskel: simple_content<C>
- {
- virtual unsigned long long
- post_non_negative_integer () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Floats.
- //
- template <typename C>
- struct float_pskel: simple_content<C>
- {
- virtual float
- post_float () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct double_pskel: simple_content<C>
- {
- virtual double
- post_double () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct decimal_pskel: simple_content<C>
- {
- virtual double
- post_decimal () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
-
- // Strings.
- //
- template <typename C>
- struct string_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_string () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct normalized_string_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_normalized_string () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct token_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_token () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct name_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_name () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct nmtoken_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_nmtoken () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct nmtokens_pskel: list_base<C>
- {
- virtual string_sequence<C>
- post_nmtokens () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct ncname_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_ncname () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct id_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_id () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct idref_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_idref () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct idrefs_pskel: list_base<C>
- {
- virtual string_sequence<C>
- post_idrefs () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // Language.
- //
- template <typename C>
- struct language_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_language () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // URI.
- //
- template <typename C>
- struct uri_pskel: simple_content<C>
- {
- virtual std::basic_string<C>
- post_uri () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // QName.
- //
- template <typename C>
- struct qname_pskel: simple_content<C>
- {
- virtual qname<C>
- post_qname () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // Base64 and hex binaries.
- //
- template <typename C>
- struct base64_binary_pskel: simple_content<C>
- {
- virtual XSD_AUTO_PTR<buffer>
- post_base64_binary () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct hex_binary_pskel: simple_content<C>
- {
- virtual XSD_AUTO_PTR<buffer>
- post_hex_binary () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- // Time and date types.
- //
- template <typename C>
- struct gday_pskel: simple_content<C>
- {
- virtual gday
- post_gday () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gmonth_pskel: simple_content<C>
- {
- virtual gmonth
- post_gmonth () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gyear_pskel: simple_content<C>
- {
- virtual gyear
- post_gyear () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gmonth_day_pskel: simple_content<C>
- {
- virtual gmonth_day
- post_gmonth_day () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct gyear_month_pskel: simple_content<C>
- {
- virtual gyear_month
- post_gyear_month () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct date_pskel: simple_content<C>
- {
- virtual date
- post_date () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct time_pskel: simple_content<C>
- {
- virtual time
- post_time () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct date_time_pskel: simple_content<C>
- {
- virtual date_time
- post_date_time () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
-
- template <typename C>
- struct duration_pskel: simple_content<C>
- {
- virtual duration
- post_duration () = 0;
-
- static const C*
- _static_type ();
-
- virtual const C*
- _dynamic_type () const;
- };
- }
- }
- }
-}
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pskel.txx>
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_HXX
-
-#include <xsd/cxx/parser/non-validating/xml-schema-pskel.ixx>
diff --git a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.ixx b/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.ixx
deleted file mode 100644
index e6db6cb..0000000
--- a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.ixx
+++ /dev/null
@@ -1,1247 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pskel.ixx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#if defined(XSD_CXX_PARSER_USE_CHAR) || !defined(XSD_CXX_PARSER_USE_WCHAR)
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_CHAR
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_CHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- template<>
- inline const char* any_type_pskel<char>::
- _static_type ()
- {
- return "anyType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* any_type_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* any_simple_type_pskel<char>::
- _static_type ()
- {
- return "anySimpleType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* any_simple_type_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* boolean_pskel<char>::
- _static_type ()
- {
- return "boolean http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* boolean_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* byte_pskel<char>::
- _static_type ()
- {
- return "byte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* byte_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_byte_pskel<char>::
- _static_type ()
- {
- return "unsignedByte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_byte_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* short_pskel<char>::
- _static_type ()
- {
- return "short http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* short_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_short_pskel<char>::
- _static_type ()
- {
- return "unsignedShort http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_short_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* int_pskel<char>::
- _static_type ()
- {
- return "int http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* int_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_int_pskel<char>::
- _static_type ()
- {
- return "unsignedInt http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_int_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* long_pskel<char>::
- _static_type ()
- {
- return "long http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* long_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* unsigned_long_pskel<char>::
- _static_type ()
- {
- return "unsignedLong http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* unsigned_long_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* integer_pskel<char>::
- _static_type ()
- {
- return "integer http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* negative_integer_pskel<char>::
- _static_type ()
- {
- return "negativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* negative_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* non_positive_integer_pskel<char>::
- _static_type ()
- {
- return "nonPositiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* non_positive_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* positive_integer_pskel<char>::
- _static_type ()
- {
- return "positiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* positive_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* non_negative_integer_pskel<char>::
- _static_type ()
- {
- return "nonNegativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* non_negative_integer_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* float_pskel<char>::
- _static_type ()
- {
- return "float http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* float_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* double_pskel<char>::
- _static_type ()
- {
- return "double http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* double_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* decimal_pskel<char>::
- _static_type ()
- {
- return "decimal http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* decimal_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* string_pskel<char>::
- _static_type ()
- {
- return "string http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* string_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* normalized_string_pskel<char>::
- _static_type ()
- {
- return "normalizedString http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* normalized_string_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* token_pskel<char>::
- _static_type ()
- {
- return "token http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* token_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* name_pskel<char>::
- _static_type ()
- {
- return "Name http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* name_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* nmtoken_pskel<char>::
- _static_type ()
- {
- return "NMTOKEN http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* nmtoken_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* nmtokens_pskel<char>::
- _static_type ()
- {
- return "NMTOKENS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* nmtokens_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* ncname_pskel<char>::
- _static_type ()
- {
- return "NCName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* ncname_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* id_pskel<char>::
- _static_type ()
- {
- return "ID http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* id_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* idref_pskel<char>::
- _static_type ()
- {
- return "IDREF http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* idref_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* idrefs_pskel<char>::
- _static_type ()
- {
- return "IDREFS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* idrefs_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* language_pskel<char>::
- _static_type ()
- {
- return "language http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* language_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* uri_pskel<char>::
- _static_type ()
- {
- return "anyURI http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* uri_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* qname_pskel<char>::
- _static_type ()
- {
- return "QName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* qname_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* base64_binary_pskel<char>::
- _static_type ()
- {
- return "base64Binary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* base64_binary_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* hex_binary_pskel<char>::
- _static_type ()
- {
- return "hexBinary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* hex_binary_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gday_pskel<char>::
- _static_type ()
- {
- return "gDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gday_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gmonth_pskel<char>::
- _static_type ()
- {
- return "gMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gmonth_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gyear_pskel<char>::
- _static_type ()
- {
- return "gYear http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gyear_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gmonth_day_pskel<char>::
- _static_type ()
- {
- return "gMonthDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gmonth_day_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* gyear_month_pskel<char>::
- _static_type ()
- {
- return "gYearMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* gyear_month_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* date_pskel<char>::
- _static_type ()
- {
- return "date http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* date_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* time_pskel<char>::
- _static_type ()
- {
- return "time http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* time_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* date_time_pskel<char>::
- _static_type ()
- {
- return "dateTime http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* date_time_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const char* duration_pskel<char>::
- _static_type ()
- {
- return "duration http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const char* duration_pskel<char>::
- _dynamic_type () const
- {
- return _static_type ();
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_CHAR
-#endif // XSD_CXX_PARSER_USE_CHAR
-
-
-#if defined(XSD_CXX_PARSER_USE_WCHAR) || !defined(XSD_CXX_PARSER_USE_CHAR)
-
-#ifndef XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_WCHAR
-#define XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_WCHAR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- template<>
- inline const wchar_t* any_type_pskel<wchar_t>::
- _static_type ()
- {
- return L"anyType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* any_type_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* any_simple_type_pskel<wchar_t>::
- _static_type ()
- {
- return L"anySimpleType http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* any_simple_type_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* boolean_pskel<wchar_t>::
- _static_type ()
- {
- return L"boolean http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* boolean_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* byte_pskel<wchar_t>::
- _static_type ()
- {
- return L"byte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* byte_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_byte_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedByte http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_byte_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* short_pskel<wchar_t>::
- _static_type ()
- {
- return L"short http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* short_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_short_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedShort http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_short_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* int_pskel<wchar_t>::
- _static_type ()
- {
- return L"int http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* int_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_int_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedInt http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_int_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* long_pskel<wchar_t>::
- _static_type ()
- {
- return L"long http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* long_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* unsigned_long_pskel<wchar_t>::
- _static_type ()
- {
- return L"unsignedLong http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* unsigned_long_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"integer http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* negative_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"negativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* negative_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* non_positive_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"nonPositiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* non_positive_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* positive_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"positiveInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* positive_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* non_negative_integer_pskel<wchar_t>::
- _static_type ()
- {
- return L"nonNegativeInteger http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* non_negative_integer_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* float_pskel<wchar_t>::
- _static_type ()
- {
- return L"float http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* float_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* double_pskel<wchar_t>::
- _static_type ()
- {
- return L"double http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* double_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* decimal_pskel<wchar_t>::
- _static_type ()
- {
- return L"decimal http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* decimal_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* string_pskel<wchar_t>::
- _static_type ()
- {
- return L"string http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* string_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* normalized_string_pskel<wchar_t>::
- _static_type ()
- {
- return L"normalizedString http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* normalized_string_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* token_pskel<wchar_t>::
- _static_type ()
- {
- return L"token http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* token_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* name_pskel<wchar_t>::
- _static_type ()
- {
- return L"Name http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* name_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* nmtoken_pskel<wchar_t>::
- _static_type ()
- {
- return L"NMTOKEN http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* nmtoken_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* nmtokens_pskel<wchar_t>::
- _static_type ()
- {
- return L"NMTOKENS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* nmtokens_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* ncname_pskel<wchar_t>::
- _static_type ()
- {
- return L"NCName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* ncname_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* id_pskel<wchar_t>::
- _static_type ()
- {
- return L"ID http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* id_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* idref_pskel<wchar_t>::
- _static_type ()
- {
- return L"IDREF http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* idref_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* idrefs_pskel<wchar_t>::
- _static_type ()
- {
- return L"IDREFS http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* idrefs_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* language_pskel<wchar_t>::
- _static_type ()
- {
- return L"language http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* language_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* uri_pskel<wchar_t>::
- _static_type ()
- {
- return L"anyURI http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* uri_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* qname_pskel<wchar_t>::
- _static_type ()
- {
- return L"QName http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* qname_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* base64_binary_pskel<wchar_t>::
- _static_type ()
- {
- return L"base64Binary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* base64_binary_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* hex_binary_pskel<wchar_t>::
- _static_type ()
- {
- return L"hexBinary http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* hex_binary_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gday_pskel<wchar_t>::
- _static_type ()
- {
- return L"gDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gday_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gmonth_pskel<wchar_t>::
- _static_type ()
- {
- return L"gMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gmonth_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gyear_pskel<wchar_t>::
- _static_type ()
- {
- return L"gYear http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gyear_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gmonth_day_pskel<wchar_t>::
- _static_type ()
- {
- return L"gMonthDay http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gmonth_day_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* gyear_month_pskel<wchar_t>::
- _static_type ()
- {
- return L"gYearMonth http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* gyear_month_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* date_pskel<wchar_t>::
- _static_type ()
- {
- return L"date http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* date_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* time_pskel<wchar_t>::
- _static_type ()
- {
- return L"time http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* time_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* date_time_pskel<wchar_t>::
- _static_type ()
- {
- return L"dateTime http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* date_time_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
-
- template<>
- inline const wchar_t* duration_pskel<wchar_t>::
- _static_type ()
- {
- return L"duration http://www.w3.org/2001/XMLSchema";
- }
-
- template<>
- inline const wchar_t* duration_pskel<wchar_t>::
- _dynamic_type () const
- {
- return _static_type ();
- }
- }
- }
- }
-}
-
-#endif // XSD_CXX_PARSER_NON_VALIDATING_XML_SCHEMA_PSKEL_IXX_WCHAR
-#endif // XSD_CXX_PARSER_USE_WCHAR
diff --git a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx b/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx
deleted file mode 100644
index fb166d0..0000000
--- a/libxsd/xsd/cxx/parser/non-validating/xml-schema-pskel.txx
+++ /dev/null
@@ -1,67 +0,0 @@
-// file : xsd/cxx/parser/non-validating/xml-schema-pskel.txx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-namespace xsd
-{
- namespace cxx
- {
- namespace parser
- {
- namespace non_validating
- {
- // any_type
- //
-
- template <typename C>
- bool any_type_pskel<C>::
- _start_element_impl (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>* type)
- {
- this->_start_any_element (ns, name, type);
- this->complex_content<C>::context_.top ().any_ = true;
- return true;
- }
-
- template <typename C>
- bool any_type_pskel<C>::
- _end_element_impl (const ro_string<C>& ns, const ro_string<C>& name)
- {
- this->complex_content<C>::context_.top ().any_ = false;
- this->_end_any_element (ns, name);
- return true;
- }
-
-
- template <typename C>
- bool any_type_pskel<C>::
- _attribute_impl (const ro_string<C>& ns,
- const ro_string<C>& name,
- const ro_string<C>& value)
- {
- this->_any_attribute (ns, name, value);
- return true;
- }
-
- template <typename C>
- bool any_type_pskel<C>::
- _characters_impl (const ro_string<C>& s)
- {
- this->_any_characters (s);
- return true;
- }
-
- // any_simple_type
- //
-
- template <typename C>
- bool any_simple_type_pskel<C>::
- _characters_impl (const ro_string<C>& s)
- {
- this->_any_characters (s);
- return true;
- }
- }
- }
- }
-}