summaryrefslogtreecommitdiff
path: root/libxsd/xsd/cxx/tree/stream-extraction-map.txx
diff options
context:
space:
mode:
Diffstat (limited to 'libxsd/xsd/cxx/tree/stream-extraction-map.txx')
-rw-r--r--libxsd/xsd/cxx/tree/stream-extraction-map.txx331
1 files changed, 0 insertions, 331 deletions
diff --git a/libxsd/xsd/cxx/tree/stream-extraction-map.txx b/libxsd/xsd/cxx/tree/stream-extraction-map.txx
deleted file mode 100644
index 55950d3..0000000
--- a/libxsd/xsd/cxx/tree/stream-extraction-map.txx
+++ /dev/null
@@ -1,331 +0,0 @@
-// file : xsd/cxx/tree/stream-extraction-map.txx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <xsd/cxx/tree/types.hxx>
-#include <xsd/cxx/tree/stream-extraction.hxx>
-#include <xsd/cxx/tree/bits/literals.hxx>
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- // stream_extraction_map
- //
- template <typename S, typename C>
- stream_extraction_map<S, C>::
- stream_extraction_map ()
- {
- // Register extractors for built-in non-fundamental types.
- //
- std::basic_string<C> xsd (bits::xml_schema<C> ());
-
-
- // anyType and anySimpleType.
- //
- register_type (
- qualified_name (bits::any_type<C> (), xsd),
- &extractor_impl<S, type>,
- false);
-
- typedef simple_type<C, type> simple_type;
- register_type (
- qualified_name (bits::any_simple_type<C> (), xsd),
- &extractor_impl<S, simple_type>,
- false);
-
-
- // Strings
- //
- typedef string<C, simple_type> string;
- register_type (
- qualified_name (bits::string<C> (), xsd),
- &extractor_impl<S, string>,
- false);
-
- typedef normalized_string<C, string> normalized_string;
- register_type (
- qualified_name (bits::normalized_string<C> (), xsd),
- &extractor_impl<S, normalized_string>,
- false);
-
- typedef token<C, normalized_string> token;
- register_type (
- qualified_name (bits::token<C> (), xsd),
- &extractor_impl<S, token>,
- false);
-
- typedef name<C, token> name;
- register_type (
- qualified_name (bits::name<C> (), xsd),
- &extractor_impl<S, name>,
- false);
-
- typedef nmtoken<C, token> nmtoken;
- register_type (
- qualified_name (bits::nmtoken<C> (), xsd),
- &extractor_impl<S, nmtoken>,
- false);
-
- typedef nmtokens<C, simple_type, nmtoken> nmtokens;
- register_type (
- qualified_name (bits::nmtokens<C> (), xsd),
- &extractor_impl<S, nmtokens>,
- false);
-
- typedef ncname<C, name> ncname;
- register_type (
- qualified_name (bits::ncname<C> (), xsd),
- &extractor_impl<S, ncname>,
- false);
-
- typedef language<C, token> language;
- register_type (
- qualified_name (bits::language<C> (), xsd),
- &extractor_impl<S, language>,
- false);
-
-
- // ID/IDREF.
- //
- typedef id<C, ncname> id;
- register_type (
- qualified_name (bits::id<C> (), xsd),
- &extractor_impl<S, id>,
- false);
-
- typedef idref<C, ncname, type> idref;
- register_type (
- qualified_name (bits::idref<C> (), xsd),
- &extractor_impl<S, idref>,
- false);
-
- typedef idrefs<C, simple_type, idref> idrefs;
- register_type (
- qualified_name (bits::idrefs<C> (), xsd),
- &extractor_impl<S, idrefs>,
- false);
-
-
- // URI.
- //
- typedef uri<C, simple_type> uri;
- register_type (
- qualified_name (bits::any_uri<C> (), xsd),
- &extractor_impl<S, uri>,
- false);
-
-
- // Qualified name.
- //
- typedef qname<C, simple_type, uri, ncname> qname;
- register_type (
- qualified_name (bits::qname<C> (), xsd),
- &extractor_impl<S, qname>,
- false);
-
-
- // Binary.
- //
- typedef base64_binary<C, simple_type> base64_binary;
- register_type (
- qualified_name (bits::base64_binary<C> (), xsd),
- &extractor_impl<S, base64_binary>,
- false);
-
- typedef hex_binary<C, simple_type> hex_binary;
- register_type (
- qualified_name (bits::hex_binary<C> (), xsd),
- &extractor_impl<S, hex_binary>,
- false);
-
-
- // Date/time.
- //
- typedef gday<C, simple_type> gday;
- register_type (
- qualified_name (bits::gday<C> (), xsd),
- &extractor_impl<S, gday>,
- false);
-
- typedef gmonth<C, simple_type> gmonth;
- register_type (
- qualified_name (bits::gmonth<C> (), xsd),
- &extractor_impl<S, gmonth>,
- false);
-
- typedef gyear<C, simple_type> gyear;
- register_type (
- qualified_name (bits::gyear<C> (), xsd),
- &extractor_impl<S, gyear>,
- false);
-
- typedef gmonth_day<C, simple_type> gmonth_day;
- register_type (
- qualified_name (bits::gmonth_day<C> (), xsd),
- &extractor_impl<S, gmonth_day>,
- false);
-
- typedef gyear_month<C, simple_type> gyear_month;
- register_type (
- qualified_name (bits::gyear_month<C> (), xsd),
- &extractor_impl<S, gyear_month>,
- false);
-
- typedef date<C, simple_type> date;
- register_type (
- qualified_name (bits::date<C> (), xsd),
- &extractor_impl<S, date>,
- false);
-
- typedef time<C, simple_type> time;
- register_type (
- qualified_name (bits::time<C> (), xsd),
- &extractor_impl<S, time>,
- false);
-
- typedef date_time<C, simple_type> date_time;
- register_type (
- qualified_name (bits::date_time<C> (), xsd),
- &extractor_impl<S, date_time>,
- false);
-
- typedef duration<C, simple_type> duration;
- register_type (
- qualified_name (bits::duration<C> (), xsd),
- &extractor_impl<S, duration>,
- false);
-
-
- // Entity.
- //
- typedef entity<C, ncname> entity;
- register_type (
- qualified_name (bits::entity<C> (), xsd),
- &extractor_impl<S, entity>,
- false);
-
- typedef entities<C, simple_type, entity> entities;
- register_type (
- qualified_name (bits::entities<C> (), xsd),
- &extractor_impl<S, entities>,
- false);
- }
-
- template <typename S, typename C>
- void stream_extraction_map<S, C>::
- register_type (const qualified_name& name,
- extractor e,
- bool replace)
- {
- if (replace || type_map_.find (name) == type_map_.end ())
- type_map_[name] = e;
- }
-
- template <typename S, typename C>
- void stream_extraction_map<S, C>::
- unregister_type (const qualified_name& name)
- {
- type_map_.erase (name);
- }
-
- template <typename S, typename C>
- XSD_AUTO_PTR<type> stream_extraction_map<S, C>::
- extract (istream<S>& s, flags f, container* c)
- {
- std::basic_string<C> ns, name;
-
- // The namespace and name strings are pooled.
- //
- std::size_t id;
- istream_common::as_size<std::size_t> as_size (id);
- s >> as_size;
-
- if (id != 0)
- s.pool_string (id, ns);
- else
- {
- s >> ns;
- s.pool_add (ns);
- }
-
- s >> as_size;
-
- if (id != 0)
- s.pool_string (id, name);
- else
- {
- s >> name;
- s.pool_add (name);
- }
-
- if (extractor e = find (qualified_name (name, ns)))
- {
- return e (s, f, c);
- }
- else
- throw no_type_info<C> (name, ns);
- }
-
- template <typename S, typename C>
- typename stream_extraction_map<S, C>::extractor
- stream_extraction_map<S, C>::
- find (const qualified_name& name) const
- {
- typename type_map::const_iterator i (type_map_.find (name));
- return i == type_map_.end () ? 0 : i->second;
- }
-
-
- // stream_extraction_plate
- //
- template<unsigned long id, typename S, typename C>
- stream_extraction_plate<id, S, C>::
- stream_extraction_plate ()
- {
- if (count == 0)
- map = new stream_extraction_map<S, C>;
-
- ++count;
- }
-
- template<unsigned long id, typename S, typename C>
- stream_extraction_plate<id, S, C>::
- ~stream_extraction_plate ()
- {
- if (--count == 0)
- delete map;
- }
-
- //
- //
- template<typename S, typename T>
- XSD_AUTO_PTR<type>
- extractor_impl (istream<S>& s, flags f, container* c)
- {
- return XSD_AUTO_PTR<type> (new T (s, f, c));
- }
-
-
- // stream_extraction_initializer
- //
- template<unsigned long id, typename S, typename C, typename T>
- stream_extraction_initializer<id, S, C, T>::
- stream_extraction_initializer (const C* name, const C* ns)
- : name_ (name), ns_ (ns)
- {
- stream_extraction_map_instance<id, S, C> ().register_type (
- xml::qualified_name<C> (name, ns), &extractor_impl<S, T>);
- }
-
- template<unsigned long id, typename S, typename C, typename T>
- stream_extraction_initializer<id, S, C, T>::
- ~stream_extraction_initializer ()
- {
- stream_extraction_map_instance<id, S, C> ().unregister_type (
- xml::qualified_name<C> (name_, ns_));
- }
- }
- }
-}