aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/serializer/non-validating
diff options
context:
space:
mode:
Diffstat (limited to 'libxsde/xsde/cxx/serializer/non-validating')
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/any-type.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/base64-binary.cxx166
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/base64-binary.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/base64-binary.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/boolean.cxx30
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/boolean.hxx39
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/byte.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/byte.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/date-time.cxx78
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/date-time.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/date-time.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/date.cxx59
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/date.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/date.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/decimal.cxx54
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/decimal.hxx50
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/decimal.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/double.cxx103
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/double.hxx60
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/double.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/duration.cxx171
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/duration.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/duration.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/float.cxx103
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/float.hxx60
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/float.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gday.cxx57
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gday.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gday.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gmonth-day.cxx59
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gmonth-day.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gmonth-day.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gmonth.cxx57
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gmonth.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gmonth.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gyear-month.cxx59
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gyear-month.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gyear-month.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gyear.cxx54
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gyear.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/gyear.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/hex-binary.cxx70
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/hex-binary.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/hex-binary.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/id-stl.cxx35
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/id-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/id.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/id.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/id.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idref-stl.cxx35
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idref-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idref.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idref.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idref.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.cxx108
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.hxx52
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idrefs.cxx109
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idrefs.hxx52
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/idrefs.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/int.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/int.hxx39
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/integer.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/integer.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/language-stl.cxx35
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/language-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/language.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/language.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/language.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/long-long.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/long-long.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/long.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/long.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/name-stl.cxx35
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/name-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/name.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/name.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/name.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/ncname-stl.cxx35
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/ncname-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/ncname.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/ncname.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/ncname.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/negative-integer.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/negative-integer.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtoken-stl.cxx35
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtoken-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtoken.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtoken.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtoken.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.cxx108
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.hxx52
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtokens.cxx109
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtokens.hxx52
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/nmtokens.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/non-negative-integer.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/non-negative-integer.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/non-positive-integer.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/non-positive-integer.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/normalized-string-stl.cxx36
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/normalized-string-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/normalized-string.cxx44
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/normalized-string.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/normalized-string.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/positive-integer.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/positive-integer.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/qname-stl.cxx50
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/qname-stl.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/qname-stl.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/qname.cxx62
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/qname.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/qname.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/serializer.cxx29
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/serializer.hxx58
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/serializer.ixx61
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/short.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/short.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/string-stl.cxx35
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/string-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/string.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/string.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/string.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/time-zone.cxx65
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/time-zone.hxx33
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/time.cxx73
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/time.hxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/time.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/token-stl.cxx35
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/token-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/token.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/token.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/token.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-byte.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-byte.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-int.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-int.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-long-long.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-long-long.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-long.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-long.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-short.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/unsigned-short.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/uri-stl.cxx35
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/uri-stl.hxx41
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/uri.cxx43
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/uri.hxx47
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/uri.ixx22
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/xml-schema-simpl.hxx82
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.cxx560
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx1382
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.ixx704
152 files changed, 9324 insertions, 0 deletions
diff --git a/libxsde/xsde/cxx/serializer/non-validating/any-type.hxx b/libxsde/xsde/cxx/serializer/non-validating/any-type.hxx
new file mode 100644
index 0000000..c01b54e
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/any-type.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/any-type.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_ANY_TYPE_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_ANY_TYPE_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // any_type
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct any_type_simpl: virtual any_type_sskel
+#else
+ struct any_type_simpl: any_type_sskel
+#endif
+ {
+ };
+
+ // any_simple_type
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct any_simple_type_simpl: virtual any_simple_type_sskel
+#else
+ struct any_simple_type_simpl: any_simple_type_sskel
+#endif
+ {
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_ANY_TYPE_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/base64-binary.cxx b/libxsde/xsde/cxx/serializer/non-validating/base64-binary.cxx
new file mode 100644
index 0000000..51d1b97
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/base64-binary.cxx
@@ -0,0 +1,166 @@
+// file : xsde/cxx/serializer/non-validating/base64-binary.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/base64-binary.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ base64_binary_simpl::
+ ~base64_binary_simpl ()
+ {
+ if (free_)
+ delete const_cast<buffer*> (value_);
+ }
+
+ void base64_binary_simpl::
+ pre (const buffer* value)
+ {
+ value_ = value;
+ }
+
+ static const char base64_tab[] = {
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
+ 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
+ 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
+ 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
+ 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', '+', '/', '\0'
+ };
+
+ inline void
+ split_1 (char b, unsigned char& b1, unsigned char& b2)
+ {
+ unsigned char ub = static_cast<unsigned char> (b);
+ b1 = ub >> 2;
+ b2 = (ub & 0x3) << 4;
+ }
+
+ inline void
+ split_2 (char b, unsigned char& b2, unsigned char& b3)
+ {
+ unsigned char ub = static_cast<unsigned char> (b);
+ b2 |= ub >> 4;
+ b3 = (ub & 0x0F) << 2;
+ }
+
+ inline void
+ split_3 (char b, unsigned char& b3, unsigned char& b4)
+ {
+ unsigned char ub = static_cast<unsigned char> (b);
+ b3 |= ub >> 6;
+ b4 = ( ub & 0x3F );
+ }
+
+ void base64_binary_simpl::
+ _serialize_content ()
+ {
+ // Maximum 76 characters per line, 76/4 = 19
+ //
+ const size_t quads_per_line = 19;
+ char buf[quads_per_line * 4 + 1];
+
+ if (size_t size = value_->size ())
+ {
+ const char* data = value_->data ();
+ size_t quads = (size + 2) / 3;
+
+ // Process all quadruplets except the last, one line at a time.
+ //
+ size_t i = 0;
+ size_t j = 0;
+ unsigned char b1, b2, b3, b4;
+
+ for (; j < (quads - 1);)
+ {
+ for (; i < quads_per_line && j < (quads - 1); ++i, ++j)
+ {
+ split_1 (*data++, b1, b2);
+ split_2 (*data++, b2, b3);
+ split_3 (*data++, b3, b4);
+
+ buf[i * 4] = base64_tab[b1];
+ buf[i * 4 + 1] = base64_tab[b2];
+ buf[i * 4 + 2] = base64_tab[b3];
+ buf[i * 4 + 3] = base64_tab[b4];
+ }
+
+ if (i == quads_per_line)
+ {
+ buf[i * 4] = '\n';
+
+#ifdef XSDE_EXCEPTIONS
+ _characters (buf, i * 4 + 1);
+#else
+ if (!_characters (buf, i * 4 + 1))
+ break;
+#endif
+ i = 0;
+ }
+ }
+
+#ifndef XSDE_EXCEPTIONS
+ if (j == (quads - 1))
+ {
+#endif
+ // Process last quadruplet. The first byte is always present.
+ //
+ split_1 (*data++, b1, b2);
+ buf[i * 4] = base64_tab[b1];
+
+ if (data != value_->end ())
+ {
+ // Second byte is present.
+ //
+ split_2 (*data++, b2, b3);
+ buf[i * 4 + 1] = base64_tab[b2];
+
+ if(data != value_->end ())
+ {
+ // Third byte is present.
+ //
+ split_3 (*data++, b3, b4);
+ buf[i * 4 + 2] = base64_tab[b3];
+ buf[i * 4 + 3] = base64_tab[b4];
+ }
+ else
+ {
+ buf[i * 4 + 2] = base64_tab[b3];
+ buf[i * 4 + 3] = '=';
+ }
+ }
+ else
+ {
+ buf[i * 4 + 1] = base64_tab[b2];
+ buf[i * 4 + 2] = '=';
+ buf[i * 4 + 3] = '=';
+ }
+
+ i++;
+
+ buf[i * 4] = '\n';
+ _characters (buf, i * 4 + 1);
+
+#ifndef XSDE_EXCEPTIONS
+ }
+#endif
+ }
+
+ if (free_)
+ {
+ delete const_cast<buffer*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/base64-binary.hxx b/libxsde/xsde/cxx/serializer/non-validating/base64-binary.hxx
new file mode 100644
index 0000000..de4d914
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/base64-binary.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/base64-binary.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_BASE64_BINARY_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_BASE64_BINARY_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct base64_binary_simpl: virtual base64_binary_sskel
+#else
+ struct base64_binary_simpl: base64_binary_sskel
+#endif
+ {
+ virtual
+ ~base64_binary_simpl ();
+
+ base64_binary_simpl (bool free = false);
+
+ virtual void
+ pre (const buffer*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const buffer* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/base64-binary.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_BASE64_BINARY_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/base64-binary.ixx b/libxsde/xsde/cxx/serializer/non-validating/base64-binary.ixx
new file mode 100644
index 0000000..59a10d6
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/base64-binary.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/base64-binary.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline base64_binary_simpl::
+ base64_binary_simpl (bool free)
+ : free_ (free), value_ (0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/boolean.cxx b/libxsde/xsde/cxx/serializer/non-validating/boolean.cxx
new file mode 100644
index 0000000..d505d63
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/boolean.cxx
@@ -0,0 +1,30 @@
+// file : xsde/cxx/serializer/non-validating/boolean.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/boolean.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void boolean_simpl::
+ pre (bool value)
+ {
+ value_ = value;
+ }
+
+ void boolean_simpl::
+ _serialize_content ()
+ {
+ _characters ((value_ ? "true" : "false"), (value_ ? 4 : 5));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/boolean.hxx b/libxsde/xsde/cxx/serializer/non-validating/boolean.hxx
new file mode 100644
index 0000000..5edcdaa
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/boolean.hxx
@@ -0,0 +1,39 @@
+// file : xsde/cxx/serializer/non-validating/boolean.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_BOOLEAN_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_BOOLEAN_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct boolean_simpl: virtual boolean_sskel
+#else
+ struct boolean_simpl: boolean_sskel
+#endif
+ {
+ virtual void
+ pre (bool);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_BOOLEAN_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/byte.cxx b/libxsde/xsde/cxx/serializer/non-validating/byte.cxx
new file mode 100644
index 0000000..200d4ab
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/byte.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/byte.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/byte.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void byte_simpl::
+ pre (signed char value)
+ {
+ value_ = value;
+ }
+
+ void byte_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-128") + 1 characters to hold all
+ // representations of signed byte.
+ //
+ char str[5];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 5, "%d", value_);
+#else
+ int n = sprintf (str, "%d", value_);
+#endif
+ if (n > 0 && n < 5)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/byte.hxx b/libxsde/xsde/cxx/serializer/non-validating/byte.hxx
new file mode 100644
index 0000000..093adb4
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/byte.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/byte.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_BYTE_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_BYTE_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // 8-bit signed integer
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct byte_simpl: virtual byte_sskel
+#else
+ struct byte_simpl: byte_sskel
+#endif
+ {
+ virtual void
+ pre (signed char);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ signed char value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_BYTE_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/date-time.cxx b/libxsde/xsde/cxx/serializer/non-validating/date-time.cxx
new file mode 100644
index 0000000..fe11566
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/date-time.cxx
@@ -0,0 +1,78 @@
+// file : xsde/cxx/serializer/non-validating/date-time.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/date-time.hxx>
+#include <xsde/cxx/serializer/non-validating/time-zone.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void date_time_simpl::
+ pre (const date_time& value)
+ {
+ value_ = value;
+ }
+
+ void date_time_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-2147483649-MM-DDThh:mm:ss.ssssss-hh:mm")
+ // + 1 characters to hold all representations of date_time. We
+ // know that the seconds part (represented as double) has
+ // default precision of 6.
+ //
+ char str[40];
+
+ if (value_.month () <= 12 &&
+ value_.day () <= 31 &&
+ value_.hours () <= 24 &&
+ value_.minutes () <= 59 &&
+ value_.seconds () >= 0.0 &&
+ value_.seconds () < 60.0)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 34, "%.4d-%.2u-%.2uT%.2u:%.2u:%09f",
+ value_.year (), value_.month (), value_.day (),
+ value_.hours (), value_.minutes (),
+ value_.seconds ());
+#else
+ int n = sprintf (str, "%.4d-%.2u-%.2uT%.2u:%.2u:%09f",
+ value_.year (), value_.month (), value_.day (),
+ value_.hours (), value_.minutes (),
+ value_.seconds ());
+#endif
+ if (n > 0 && n < 34)
+ {
+ // Remove trailing '0' and '.' if necessary.
+ //
+ while (str[n - 1] == '0')
+ n--;
+
+ if (str[n - 1] == '.')
+ n--;
+
+ if (value_.zone_present ())
+ {
+ if (int z = bits::serialize_time_zone (str + n, value_))
+ n += z;
+ else
+ return;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/date-time.hxx b/libxsde/xsde/cxx/serializer/non-validating/date-time.hxx
new file mode 100644
index 0000000..e239564
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/date-time.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/date-time.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_DATE_TIME_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_DATE_TIME_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct date_time_simpl: virtual date_time_sskel
+#else
+ struct date_time_simpl: date_time_sskel
+#endif
+ {
+ date_time_simpl ();
+
+ virtual void
+ pre (const date_time&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ date_time value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/date-time.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_DATE_TIME_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/date-time.ixx b/libxsde/xsde/cxx/serializer/non-validating/date-time.ixx
new file mode 100644
index 0000000..e300c03
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/date-time.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/date-time.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline date_time_simpl::
+ date_time_simpl ()
+ : value_ (1, 0, 0, 0, 0, 0.0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/date.cxx b/libxsde/xsde/cxx/serializer/non-validating/date.cxx
new file mode 100644
index 0000000..2fa6069
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/date.cxx
@@ -0,0 +1,59 @@
+// file : xsde/cxx/serializer/non-validating/date.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/date.hxx>
+#include <xsde/cxx/serializer/non-validating/time-zone.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void date_simpl::
+ pre (const date& value)
+ {
+ value_ = value;
+ }
+
+ void date_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-2147483649-MM-DD+hh:mm") + 1 characters to
+ // hold all representations of date.
+ //
+ char str[24];
+
+ if (value_.month () < 13 && value_.day () < 32)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 18, "%.4d-%.2u-%.2u",
+ value_.year (), value_.month (), value_.day ());
+#else
+ int n = sprintf (str, "%.4d-%.2u-%.2u",
+ value_.year (), value_.month (), value_.day ());
+#endif
+ if (n > 0 && n < 18)
+ {
+ if (value_.zone_present ())
+ {
+ if (int z = bits::serialize_time_zone (str + n, value_))
+ n += z;
+ else
+ return;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/date.hxx b/libxsde/xsde/cxx/serializer/non-validating/date.hxx
new file mode 100644
index 0000000..9fb0f40
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/date.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/date.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_DATE_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_DATE_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct date_simpl: virtual date_sskel
+#else
+ struct date_simpl: date_sskel
+#endif
+ {
+ date_simpl ();
+
+ virtual void
+ pre (const date&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ date value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/date.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_DATE_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/date.ixx b/libxsde/xsde/cxx/serializer/non-validating/date.ixx
new file mode 100644
index 0000000..c89cea4
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/date.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/date.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline date_simpl::
+ date_simpl ()
+ : value_ (1, 1, 1)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/decimal.cxx b/libxsde/xsde/cxx/serializer/non-validating/decimal.cxx
new file mode 100644
index 0000000..dd55ab0
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/decimal.cxx
@@ -0,0 +1,54 @@
+// file : xsde/cxx/serializer/non-validating/decimal.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/decimal.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void decimal_simpl::
+ pre (double value)
+ {
+ value_ = value;
+ }
+
+ void decimal_simpl::
+ _serialize_content ()
+ {
+ // Assume double values cannot be longer than 127 characters.
+ //
+ char str[128];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 128, "%.*f",
+ static_cast<int> (precision_), value_);
+#else
+ int n = sprintf (str, "%.*f",
+ static_cast<int> (precision_), value_);
+#endif
+ if (n > 0 && n < 128)
+ {
+ // Remove trailing '0' and '.' if necessary.
+ //
+ while (str[n - 1] == '0')
+ n--;
+
+ if (str[n - 1] == '.')
+ n--;
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/decimal.hxx b/libxsde/xsde/cxx/serializer/non-validating/decimal.hxx
new file mode 100644
index 0000000..b0155b3
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/decimal.hxx
@@ -0,0 +1,50 @@
+// file : xsde/cxx/serializer/non-validating/decimal.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_DECIMAL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_DECIMAL_HXX
+
+#include <float.h>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct decimal_simpl: virtual decimal_sskel
+#else
+ struct decimal_simpl: decimal_sskel
+#endif
+ {
+#ifdef DBL_DIG
+ decimal_simpl (unsigned int precision = DBL_DIG);
+#else
+ decimal_simpl (unsigned int precision = 15)
+#endif
+
+ virtual void
+ pre (double);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ unsigned int precision_;
+ double value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/decimal.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_DECIMAL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/decimal.ixx b/libxsde/xsde/cxx/serializer/non-validating/decimal.ixx
new file mode 100644
index 0000000..af3ab38
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/decimal.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/decimal.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline decimal_simpl::
+ decimal_simpl (unsigned int p)
+ : precision_ (p)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/double.cxx b/libxsde/xsde/cxx/serializer/non-validating/double.cxx
new file mode 100644
index 0000000..1f8f459
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/double.cxx
@@ -0,0 +1,103 @@
+// file : xsde/cxx/serializer/non-validating/double.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/double.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void double_simpl::
+ pre (double value)
+ {
+ value_ = value;
+ }
+
+ void double_simpl::
+ _serialize_content ()
+ {
+ // Assume double values cannot be longer than 127 characters.
+ //
+ char str[128];
+
+ const char* fmt = 0;
+
+ switch (notation_)
+ {
+ case notation_auto:
+ {
+ fmt = "%.*g";
+ break;
+ }
+ case notation_fixed:
+ {
+ fmt = "%.*f";
+ break;
+ }
+ case notation_scientific:
+ {
+ fmt = "%.*e";
+ break;
+ }
+ }
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 128, fmt, precision_, value_);
+#else
+ int n = sprintf (str, fmt, precision_, value_);
+#endif
+ if (n > 0 && n < 128)
+ {
+ if (str[0] == '-')
+ {
+ if (str[1] == 'n' && str[2] == 'a' && str[3] == 'n')
+ {
+ _characters ("NaN", 3);
+ return;
+ }
+ else if (str[1] == 'i' && str[2] == 'n' && str[3] == 'f')
+ {
+ _characters ("-INF", 4);
+ return;
+ }
+ }
+ else
+ {
+ if (str[0] == 'n' && str[1] == 'a' && str[2] == 'n')
+ {
+ _characters ("NaN", 3);
+ return;
+ }
+ else if (str[0] == 'i' && str[1] == 'n' && str[2] == 'f')
+ {
+ _characters ("INF", 3);
+ return;
+ }
+ }
+
+ if (notation_ == notation_fixed)
+ {
+ // Remove trailing '0' and '.' if necessary.
+ //
+ while (str[n - 1] == '0')
+ n--;
+
+ if (str[n - 1] == '.')
+ n--;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/double.hxx b/libxsde/xsde/cxx/serializer/non-validating/double.hxx
new file mode 100644
index 0000000..a79c144
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/double.hxx
@@ -0,0 +1,60 @@
+// file : xsde/cxx/serializer/non-validating/double.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_DOUBLE_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_DOUBLE_HXX
+
+#include <float.h>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct double_simpl: virtual double_sskel
+#else
+ struct double_simpl: double_sskel
+#endif
+ {
+ enum notation
+ {
+ notation_auto,
+ notation_fixed,
+ notation_scientific
+ };
+
+#ifdef DBL_DIG
+ double_simpl (notation = notation_auto,
+ unsigned int precision = DBL_DIG);
+#else
+ double_simpl (notation = notation_auto,
+ unsigned int precision = 15)
+#endif
+
+ virtual void
+ pre (double);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ notation notation_;
+ unsigned int precision_;
+ double value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/double.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_DOUBLE_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/double.ixx b/libxsde/xsde/cxx/serializer/non-validating/double.ixx
new file mode 100644
index 0000000..36cc319
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/double.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/double.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline double_simpl::
+ double_simpl (notation n, unsigned int p)
+ : notation_ (n), precision_ (p)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/duration.cxx b/libxsde/xsde/cxx/serializer/non-validating/duration.cxx
new file mode 100644
index 0000000..1174af7
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/duration.cxx
@@ -0,0 +1,171 @@
+// file : xsde/cxx/serializer/non-validating/duration.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/duration.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void duration_simpl::
+ pre (const duration& value)
+ {
+ value_ = value;
+ }
+
+ void duration_simpl::
+ _serialize_content ()
+ {
+ // duration := -PnYnMnDTnHnMnS
+ //
+ // The years, months, days, hours, and minutes components are
+ // represented as 32 unsigned integers with maximum string
+ // representation being strlen ("4294967295") = 10.
+ //
+ // We assume that the seconds part (double) cannot be longer
+ // than 128 chars.
+ //
+ // The total representation thus cannot exceed 10*5 + 128 +
+ // 9 + 1 = 188 characters.
+ //
+ char str[188];
+ char* p = str;
+
+ if (value_.negative ())
+ *p++ = '-';
+
+ *p++ = 'P';
+
+ // years
+ //
+ // In case it is 0-duration, use the years field to handle
+ // this case.
+ //
+ if (value_.years () != 0 ||
+ (value_.months () == 0 &&
+ value_.days () == 0 &&
+ value_.hours () == 0 &&
+ value_.minutes () == 0 &&
+ value_.seconds () == 0.0))
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (p, 11, "%u", value_.years ());
+#else
+ int n = sprintf (p, "%u", value_.years ());
+#endif
+ if (n < 0 || n >= 11)
+ return;
+
+ p += n;
+ *p++ = 'Y';
+ }
+
+ // months
+ //
+ if (value_.months () != 0)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (p, 11, "%u", value_.months ());
+#else
+ int n = sprintf (p, "%u", value_.months ());
+#endif
+ if (n < 0 || n >= 11)
+ return;
+
+ p += n;
+ *p++ = 'M';
+ }
+
+ // days
+ //
+ if (value_.days () != 0)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (p, 11, "%u", value_.days ());
+#else
+ int n = sprintf (p, "%u", value_.days ());
+#endif
+ if (n < 0 || n >= 11)
+ return;
+
+ p += n;
+ *p++ = 'D';
+ }
+
+ // Figure out if we need the 'T' delimiter.
+ //
+ if (value_.hours () != 0 ||
+ value_.minutes () != 0 ||
+ value_.seconds () != 0.0)
+ *p++ = 'T';
+
+ // hours
+ //
+ if (value_.hours () != 0)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (p, 11, "%u", value_.hours ());
+#else
+ int n = sprintf (p, "%u", value_.hours ());
+#endif
+ if (n < 0 || n >= 11)
+ return;
+
+ p += n;
+ *p++ = 'H';
+ }
+
+ // minutes
+ //
+ if (value_.minutes () != 0)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (p, 11, "%u", value_.minutes ());
+#else
+ int n = sprintf (p, "%u", value_.minutes ());
+#endif
+ if (n < 0 || n >= 11)
+ return;
+
+ p += n;
+ *p++ = 'M';
+ }
+
+ // seconds
+ //
+ if (value_.seconds () > 0.0)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (p, 128, "%f", value_.seconds ());
+#else
+ int n = sprintf (p, "%f", value_.seconds ());
+#endif
+ if (n < 0 || n >= 128)
+ return;
+
+ // Remove trailing '0' and '.' if necessary.
+ //
+ while (p[n - 1] == '0')
+ n--;
+
+ if (p[n - 1] == '.')
+ n--;
+
+ p += n;
+ *p++ = 'S';
+ }
+
+ _characters (str, static_cast<size_t> (p - str));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/duration.hxx b/libxsde/xsde/cxx/serializer/non-validating/duration.hxx
new file mode 100644
index 0000000..88530f4
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/duration.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/duration.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_DURATION_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_DURATION_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct duration_simpl: virtual duration_sskel
+#else
+ struct duration_simpl: duration_sskel
+#endif
+ {
+ duration_simpl ();
+
+ virtual void
+ pre (const duration&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ duration value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/duration.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_DURATION_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/duration.ixx b/libxsde/xsde/cxx/serializer/non-validating/duration.ixx
new file mode 100644
index 0000000..10d2287
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/duration.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/duration.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline duration_simpl::
+ duration_simpl ()
+ : value_ (false, 1, 0, 0, 0, 0, 0.0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/float.cxx b/libxsde/xsde/cxx/serializer/non-validating/float.cxx
new file mode 100644
index 0000000..3af6e76
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/float.cxx
@@ -0,0 +1,103 @@
+// file : xsde/cxx/serializer/non-validating/float.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/float.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void float_simpl::
+ pre (float value)
+ {
+ value_ = value;
+ }
+
+ void float_simpl::
+ _serialize_content ()
+ {
+ // Assume float values cannot be longer than 127 characters.
+ //
+ char str[128];
+
+ const char* fmt = 0;
+
+ switch (notation_)
+ {
+ case notation_auto:
+ {
+ fmt = "%.*g";
+ break;
+ }
+ case notation_fixed:
+ {
+ fmt = "%.*f";
+ break;
+ }
+ case notation_scientific:
+ {
+ fmt = "%.*e";
+ break;
+ }
+ }
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 128, fmt, precision_, value_);
+#else
+ int n = sprintf (str, fmt, precision_, value_);
+#endif
+ if (n > 0 && n < 128)
+ {
+ if (str[0] == '-')
+ {
+ if (str[1] == 'n' && str[2] == 'a' && str[3] == 'n')
+ {
+ _characters ("NaN", 3);
+ return;
+ }
+ else if (str[1] == 'i' && str[2] == 'n' && str[3] == 'f')
+ {
+ _characters ("-INF", 4);
+ return;
+ }
+ }
+ else
+ {
+ if (str[0] == 'n' && str[1] == 'a' && str[2] == 'n')
+ {
+ _characters ("NaN", 3);
+ return;
+ }
+ else if (str[0] == 'i' && str[1] == 'n' && str[2] == 'f')
+ {
+ _characters ("INF", 3);
+ return;
+ }
+ }
+
+ if (notation_ == notation_fixed)
+ {
+ // Remove trailing '0' and '.' if necessary.
+ //
+ while (str[n - 1] == '0')
+ n--;
+
+ if (str[n - 1] == '.')
+ n--;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/float.hxx b/libxsde/xsde/cxx/serializer/non-validating/float.hxx
new file mode 100644
index 0000000..d3da48f
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/float.hxx
@@ -0,0 +1,60 @@
+// file : xsde/cxx/serializer/non-validating/float.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_FLOAT_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_FLOAT_HXX
+
+#include <float.h>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct float_simpl: virtual float_sskel
+#else
+ struct float_simpl: float_sskel
+#endif
+ {
+ enum notation
+ {
+ notation_auto,
+ notation_fixed,
+ notation_scientific
+ };
+
+#ifdef FLT_DIG
+ float_simpl (notation = notation_auto,
+ unsigned int precision = FLT_DIG);
+#else
+ float_simpl (notation = notation_auto,
+ unsigned int precision = 6)
+#endif
+
+ virtual void
+ pre (float);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ notation notation_;
+ unsigned int precision_;
+ float value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/float.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_FLOAT_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/float.ixx b/libxsde/xsde/cxx/serializer/non-validating/float.ixx
new file mode 100644
index 0000000..192027e
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/float.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/float.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline float_simpl::
+ float_simpl (notation n, unsigned int p)
+ : notation_ (n), precision_ (p)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gday.cxx b/libxsde/xsde/cxx/serializer/non-validating/gday.cxx
new file mode 100644
index 0000000..5d3a0a3
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gday.cxx
@@ -0,0 +1,57 @@
+// file : xsde/cxx/serializer/non-validating/gday.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/gday.hxx>
+#include <xsde/cxx/serializer/non-validating/time-zone.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void gday_simpl::
+ pre (const gday& value)
+ {
+ value_ = value;
+ }
+
+ void gday_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("---DD+hh:mm") + 1 characters to hold all
+ // representations of gDay.
+ //
+ char str[12];
+
+ if (value_.day () < 32)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 6, "---%.2u", value_.day ());
+#else
+ int n = sprintf (str, "---%.2u", value_.day ());
+#endif
+ if (n > 0 && n < 6)
+ {
+ if (value_.zone_present ())
+ {
+ if (int z = bits::serialize_time_zone (str + n, value_))
+ n += z;
+ else
+ return;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gday.hxx b/libxsde/xsde/cxx/serializer/non-validating/gday.hxx
new file mode 100644
index 0000000..1442664
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gday.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/gday.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_GDAY_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_GDAY_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct gday_simpl: virtual gday_sskel
+#else
+ struct gday_simpl: gday_sskel
+#endif
+ {
+ gday_simpl ();
+
+ virtual void
+ pre (const gday&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ gday value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/gday.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_GDAY_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gday.ixx b/libxsde/xsde/cxx/serializer/non-validating/gday.ixx
new file mode 100644
index 0000000..ba322f6
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gday.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/gday.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline gday_simpl::
+ gday_simpl ()
+ : value_ (1)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gmonth-day.cxx b/libxsde/xsde/cxx/serializer/non-validating/gmonth-day.cxx
new file mode 100644
index 0000000..cb0bb4f
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gmonth-day.cxx
@@ -0,0 +1,59 @@
+// file : xsde/cxx/serializer/non-validating/gmonth-day.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/gmonth-day.hxx>
+#include <xsde/cxx/serializer/non-validating/time-zone.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void gmonth_day_simpl::
+ pre (const gmonth_day& value)
+ {
+ value_ = value;
+ }
+
+ void gmonth_day_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("--MM-DD+hh:mm") + 1 characters to hold all
+ // representations of gMonthDay.
+ //
+ char str[14];
+
+ if (value_.month () < 13 && value_.day () < 32)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 8, "--%.2u-%.2u",
+ value_.month (), value_.day ());
+#else
+ int n = sprintf (str, "--%.2u-%.2u",
+ value_.month (), value_.day ());
+#endif
+ if (n > 0 && n < 8)
+ {
+ if (value_.zone_present ())
+ {
+ if (int z = bits::serialize_time_zone (str + n, value_))
+ n += z;
+ else
+ return;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gmonth-day.hxx b/libxsde/xsde/cxx/serializer/non-validating/gmonth-day.hxx
new file mode 100644
index 0000000..6ba2ccf
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gmonth-day.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/gmonth-day.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_GMONTH_DAY_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_GMONTH_DAY_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct gmonth_day_simpl: virtual gmonth_day_sskel
+#else
+ struct gmonth_day_simpl: gmonth_day_sskel
+#endif
+ {
+ gmonth_day_simpl ();
+
+ virtual void
+ pre (const gmonth_day&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ gmonth_day value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/gmonth-day.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_GMONTH_DAY_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gmonth-day.ixx b/libxsde/xsde/cxx/serializer/non-validating/gmonth-day.ixx
new file mode 100644
index 0000000..864f56c
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gmonth-day.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/gmonth-day.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline gmonth_day_simpl::
+ gmonth_day_simpl ()
+ : value_ (1, 1)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gmonth.cxx b/libxsde/xsde/cxx/serializer/non-validating/gmonth.cxx
new file mode 100644
index 0000000..09c9739
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gmonth.cxx
@@ -0,0 +1,57 @@
+// file : xsde/cxx/serializer/non-validating/gmonth.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/gmonth.hxx>
+#include <xsde/cxx/serializer/non-validating/time-zone.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void gmonth_simpl::
+ pre (const gmonth& value)
+ {
+ value_ = value;
+ }
+
+ void gmonth_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("--MM+hh:mm") + 1 characters to hold all
+ // representations of gMonth.
+ //
+ char str[11];
+
+ if (value_.month () < 13)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 5, "--%.2u", value_.month ());
+#else
+ int n = sprintf (str, "--%.2u", value_.month ());
+#endif
+ if (n > 0 && n < 5)
+ {
+ if (value_.zone_present ())
+ {
+ if (int z = bits::serialize_time_zone (str + n, value_))
+ n += z;
+ else
+ return;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gmonth.hxx b/libxsde/xsde/cxx/serializer/non-validating/gmonth.hxx
new file mode 100644
index 0000000..5ed6310
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gmonth.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/gmonth.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_GMONTH_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_GMONTH_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct gmonth_simpl: virtual gmonth_sskel
+#else
+ struct gmonth_simpl: gmonth_sskel
+#endif
+ {
+ gmonth_simpl ();
+
+ virtual void
+ pre (const gmonth&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ gmonth value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/gmonth.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_GMONTH_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gmonth.ixx b/libxsde/xsde/cxx/serializer/non-validating/gmonth.ixx
new file mode 100644
index 0000000..c0b98f3
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gmonth.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/gmonth.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline gmonth_simpl::
+ gmonth_simpl ()
+ : value_ (1)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gyear-month.cxx b/libxsde/xsde/cxx/serializer/non-validating/gyear-month.cxx
new file mode 100644
index 0000000..bbb2794
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gyear-month.cxx
@@ -0,0 +1,59 @@
+// file : xsde/cxx/serializer/non-validating/gyear-month.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/gyear-month.hxx>
+#include <xsde/cxx/serializer/non-validating/time-zone.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void gyear_month_simpl::
+ pre (const gyear_month& value)
+ {
+ value_ = value;
+ }
+
+ void gyear_month_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-2147483649-MM+hh:mm") + 1 characters to
+ // hold all representations of gYearMonth.
+ //
+ char str[21];
+
+ if (value_.month () < 13)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 15, "%.4d-%.2u",
+ value_.year (), value_.month ());
+#else
+ int n = sprintf (str, "%.4d-%.2u",
+ value_.year (), value_.month ());
+#endif
+ if (n > 0 && n < 15)
+ {
+ if (value_.zone_present ())
+ {
+ if (int z = bits::serialize_time_zone (str + n, value_))
+ n += z;
+ else
+ return;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gyear-month.hxx b/libxsde/xsde/cxx/serializer/non-validating/gyear-month.hxx
new file mode 100644
index 0000000..32ee339
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gyear-month.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/gyear-month.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_GYEAR_MONTH_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_GYEAR_MONTH_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct gyear_month_simpl: virtual gyear_month_sskel
+#else
+ struct gyear_month_simpl: gyear_month_sskel
+#endif
+ {
+ gyear_month_simpl ();
+
+ virtual void
+ pre (const gyear_month&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ gyear_month value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/gyear-month.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_GYEAR_MONTH_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gyear-month.ixx b/libxsde/xsde/cxx/serializer/non-validating/gyear-month.ixx
new file mode 100644
index 0000000..f33b7b6
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gyear-month.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/gyear-month.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline gyear_month_simpl::
+ gyear_month_simpl ()
+ : value_ (1, 1)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gyear.cxx b/libxsde/xsde/cxx/serializer/non-validating/gyear.cxx
new file mode 100644
index 0000000..4d7a796
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gyear.cxx
@@ -0,0 +1,54 @@
+// file : xsde/cxx/serializer/non-validating/gyear.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/gyear.hxx>
+#include <xsde/cxx/serializer/non-validating/time-zone.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void gyear_simpl::
+ pre (const gyear& value)
+ {
+ value_ = value;
+ }
+
+ void gyear_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-2147483649+hh:mm") + 1 characters to
+ // hold all representations of gYear.
+ //
+ char str[18];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 12, "%.4d", value_.year ());
+#else
+ int n = sprintf (str, "%.4d", value_.year ());
+#endif
+ if (n > 0 && n < 12)
+ {
+ if (value_.zone_present ())
+ {
+ if (int z = bits::serialize_time_zone (str + n, value_))
+ n += z;
+ else
+ return;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gyear.hxx b/libxsde/xsde/cxx/serializer/non-validating/gyear.hxx
new file mode 100644
index 0000000..ea38751
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gyear.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/gyear.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_GYEAR_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_GYEAR_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct gyear_simpl: virtual gyear_sskel
+#else
+ struct gyear_simpl: gyear_sskel
+#endif
+ {
+ gyear_simpl ();
+
+ virtual void
+ pre (const gyear&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ gyear value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/gyear.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_GYEAR_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/gyear.ixx b/libxsde/xsde/cxx/serializer/non-validating/gyear.ixx
new file mode 100644
index 0000000..f1db195
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/gyear.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/gyear.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline gyear_simpl::
+ gyear_simpl ()
+ : value_ (1)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/hex-binary.cxx b/libxsde/xsde/cxx/serializer/non-validating/hex-binary.cxx
new file mode 100644
index 0000000..f341ff2
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/hex-binary.cxx
@@ -0,0 +1,70 @@
+// file : xsde/cxx/serializer/non-validating/hex-binary.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/hex-binary.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ hex_binary_simpl::
+ ~hex_binary_simpl ()
+ {
+ if (free_)
+ delete const_cast<buffer*> (value_);
+ }
+
+ void hex_binary_simpl::
+ pre (const buffer* value)
+ {
+ value_ = value;
+ }
+
+ static const char hex_tab[] = "0123456789ABCDEF";
+
+ void hex_binary_simpl::
+ _serialize_content ()
+ {
+ char buf[512];
+
+ size_t size = value_->size ();
+ const char* data = value_->data ();
+
+ // Covert the data in 256-byte chunks.
+ //
+ for (size_t j = 0; j < size;)
+ {
+ size_t i = 0;
+
+ for (; i < 512 && j < size; ++j)
+ {
+ unsigned char byte = static_cast<unsigned char> (data[j]);
+
+ buf[i++] = hex_tab[byte >> 4];
+ buf[i++] = hex_tab[byte & 0x0F];
+ }
+
+#ifdef XSDE_EXCEPTIONS
+ _characters (buf, i);
+#else
+ if (!_characters (buf, i))
+ break;
+#endif
+ }
+
+ if (free_)
+ {
+ delete const_cast<buffer*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/hex-binary.hxx b/libxsde/xsde/cxx/serializer/non-validating/hex-binary.hxx
new file mode 100644
index 0000000..eb10879
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/hex-binary.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/hex-binary.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_HEX_BINARY_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_HEX_BINARY_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct hex_binary_simpl: virtual hex_binary_sskel
+#else
+ struct hex_binary_simpl: hex_binary_sskel
+#endif
+ {
+ virtual
+ ~hex_binary_simpl ();
+
+ hex_binary_simpl (bool free = false);
+
+ virtual void
+ pre (const buffer*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const buffer* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/hex-binary.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_HEX_BINARY_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/hex-binary.ixx b/libxsde/xsde/cxx/serializer/non-validating/hex-binary.ixx
new file mode 100644
index 0000000..3305b15
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/hex-binary.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/hex-binary.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline hex_binary_simpl::
+ hex_binary_simpl (bool free)
+ : free_ (free), value_ (0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/id-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/id-stl.cxx
new file mode 100644
index 0000000..ed63192
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/id-stl.cxx
@@ -0,0 +1,35 @@
+// file : xsde/cxx/serializer/non-validating/id-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/id-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void id_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void id_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/id-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/id-stl.hxx
new file mode 100644
index 0000000..a615151
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/id-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/id-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_ID_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_ID_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct id_simpl: virtual id_sskel
+#else
+ struct id_simpl: id_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_ID_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/id.cxx b/libxsde/xsde/cxx/serializer/non-validating/id.cxx
new file mode 100644
index 0000000..ab75ad5
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/id.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/id.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/id.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ id_simpl::
+ ~id_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void id_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void id_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/id.hxx b/libxsde/xsde/cxx/serializer/non-validating/id.hxx
new file mode 100644
index 0000000..2c0563c
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/id.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/id.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_ID_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_ID_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct id_simpl: virtual id_sskel
+#else
+ struct id_simpl: id_sskel
+#endif
+ {
+ virtual
+ ~id_simpl ();
+
+ id_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/id.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_ID_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/id.ixx b/libxsde/xsde/cxx/serializer/non-validating/id.ixx
new file mode 100644
index 0000000..22e4201
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/id.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/id.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline id_simpl::
+ id_simpl (bool free)
+ : free_ (free)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idref-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/idref-stl.cxx
new file mode 100644
index 0000000..2b128e7
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idref-stl.cxx
@@ -0,0 +1,35 @@
+// file : xsde/cxx/serializer/non-validating/idref-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/idref-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void idref_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void idref_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idref-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/idref-stl.hxx
new file mode 100644
index 0000000..1fc6d08
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idref-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/idref-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREF_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREF_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct idref_simpl: virtual idref_sskel
+#else
+ struct idref_simpl: idref_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREF_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idref.cxx b/libxsde/xsde/cxx/serializer/non-validating/idref.cxx
new file mode 100644
index 0000000..527beb5
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idref.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/idref.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/idref.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ idref_simpl::
+ ~idref_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void idref_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void idref_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idref.hxx b/libxsde/xsde/cxx/serializer/non-validating/idref.hxx
new file mode 100644
index 0000000..295c701
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idref.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/idref.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREF_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREF_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct idref_simpl: virtual idref_sskel
+#else
+ struct idref_simpl: idref_sskel
+#endif
+ {
+ virtual
+ ~idref_simpl ();
+
+ idref_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/idref.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREF_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idref.ixx b/libxsde/xsde/cxx/serializer/non-validating/idref.ixx
new file mode 100644
index 0000000..e558f2f
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idref.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/idref.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline idref_simpl::
+ idref_simpl (bool free)
+ : free_ (free)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.cxx
new file mode 100644
index 0000000..75db514
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.cxx
@@ -0,0 +1,108 @@
+// file : xsde/cxx/serializer/non-validating/idrefs-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/idrefs-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ idrefs_simpl::
+ ~idrefs_simpl ()
+ {
+ if (free_)
+ delete const_cast<string_sequence*> (value_);
+ }
+
+ void idrefs_simpl::
+ pre (const string_sequence* value)
+ {
+ value_ = value;
+ }
+
+ void idrefs_simpl::
+ _serialize_content ()
+ {
+ bool first = true;
+ context& ctx = _context ();
+
+ for (string_sequence::const_iterator i (value_->begin ()),
+ e (value_->end ()); i != e; ++i)
+ {
+#ifdef XSDE_EXCEPTIONS
+ serializer_.pre (*i);
+
+ if (!first)
+ _characters (" ", 1);
+ else
+ first = false;
+
+ serializer_._pre_impl (ctx);
+ serializer_._serialize_content ();
+ serializer_._post_impl ();
+ serializer_.post ();
+#else
+ serializer_.pre (*i);
+
+ if (serializer_._error_type ())
+ serializer_._copy_error (ctx);
+
+ if (ctx.error_type ())
+ break;
+
+ if (!first)
+ {
+ if (!_characters (" ", 1))
+ break;
+ }
+ else
+ first = false;
+
+ serializer_._pre_impl (ctx);
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_._serialize_content ();
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_._post_impl ();
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_.post ();
+
+ if (serializer_._error_type ())
+ serializer_._copy_error (ctx);
+
+ if (ctx.error_type ())
+ break;
+#endif
+ }
+
+ if (free_)
+ {
+ delete const_cast<string_sequence*> (value_);
+ value_ = 0;
+ }
+ }
+
+ void idrefs_simpl::
+ _reset ()
+ {
+ idrefs_sskel::_reset ();
+ serializer_._reset ();
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.hxx
new file mode 100644
index 0000000..bb88871
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.hxx
@@ -0,0 +1,52 @@
+// file : xsde/cxx/serializer/non-validating/idrefs-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREFS_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREFS_STL_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+#include <xsde/cxx/serializer/non-validating/idref-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct idrefs_simpl: virtual idrefs_sskel
+#else
+ struct idrefs_simpl: idrefs_sskel
+#endif
+ {
+ virtual
+ ~idrefs_simpl ();
+
+ idrefs_simpl (bool free = false);
+
+ virtual void
+ pre (const string_sequence*);
+
+ virtual void
+ _serialize_content ();
+
+ virtual void
+ _reset ();
+
+ protected:
+ bool free_;
+ const string_sequence* value_;
+ idref_simpl serializer_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/idrefs-stl.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREFS_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.ixx b/libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.ixx
new file mode 100644
index 0000000..ff15241
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idrefs-stl.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/idrefs-stl.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline idrefs_simpl::
+ idrefs_simpl (bool free)
+ : free_ (free), value_ (0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idrefs.cxx b/libxsde/xsde/cxx/serializer/non-validating/idrefs.cxx
new file mode 100644
index 0000000..a795453
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idrefs.cxx
@@ -0,0 +1,109 @@
+// file : xsde/cxx/serializer/non-validating/idrefs.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/idrefs.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ idrefs_simpl::
+ ~idrefs_simpl ()
+ {
+ if (free_)
+ delete const_cast<string_sequence*> (value_);
+ }
+
+ void idrefs_simpl::
+ pre (const string_sequence* value)
+ {
+ value_ = value;
+ }
+
+ void idrefs_simpl::
+ _serialize_content ()
+ {
+ bool first = true;
+ context& ctx = _context ();
+
+ for (string_sequence::const_iterator i (value_->begin ()),
+ e (value_->end ()); i != e; ++i)
+ {
+#ifdef XSDE_EXCEPTIONS
+ serializer_.pre (*i);
+
+ if (!first)
+ _characters (" ", 1);
+ else
+ first = false;
+
+ serializer_._pre_impl (ctx);
+ serializer_._serialize_content ();
+ serializer_._post_impl ();
+ serializer_.post ();
+#else
+ serializer_.pre (*i);
+
+ if (serializer_._error_type ())
+ serializer_._copy_error (ctx);
+
+ if (ctx.error_type ())
+ break;
+
+ if (!first)
+ {
+ if (!_characters (" ", 1))
+ break;
+ }
+ else
+ first = false;
+
+ serializer_._pre_impl (ctx);
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_._serialize_content ();
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_._post_impl ();
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_.post ();
+
+ if (serializer_._error_type ())
+ serializer_._copy_error (ctx);
+
+ if (ctx.error_type ())
+ break;
+#endif
+ }
+
+ if (free_)
+ {
+ delete const_cast<string_sequence*> (value_);
+ value_ = 0;
+ }
+ }
+
+ void idrefs_simpl::
+ _reset ()
+ {
+ idrefs_sskel::_reset ();
+ serializer_._reset ();
+ }
+ }
+ }
+ }
+}
+
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idrefs.hxx b/libxsde/xsde/cxx/serializer/non-validating/idrefs.hxx
new file mode 100644
index 0000000..2eb7a9e
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idrefs.hxx
@@ -0,0 +1,52 @@
+// file : xsde/cxx/serializer/non-validating/idrefs.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREFS_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREFS_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+#include <xsde/cxx/serializer/non-validating/idref.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct idrefs_simpl: virtual idrefs_sskel
+#else
+ struct idrefs_simpl: idrefs_sskel
+#endif
+ {
+ virtual
+ ~idrefs_simpl ();
+
+ idrefs_simpl (bool free = false);
+
+ virtual void
+ pre (const string_sequence*);
+
+ virtual void
+ _serialize_content ();
+
+ virtual void
+ _reset ();
+
+ protected:
+ bool free_;
+ const string_sequence* value_;
+ idref_simpl serializer_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/idrefs.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_IDREFS_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/idrefs.ixx b/libxsde/xsde/cxx/serializer/non-validating/idrefs.ixx
new file mode 100644
index 0000000..773270e
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/idrefs.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/idrefs.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline idrefs_simpl::
+ idrefs_simpl (bool free)
+ : free_ (free), value_ (0), serializer_ (false)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/int.cxx b/libxsde/xsde/cxx/serializer/non-validating/int.cxx
new file mode 100644
index 0000000..ab318bc
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/int.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/int.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/int.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void int_simpl::
+ pre (int value)
+ {
+ value_ = value;
+ }
+
+ void int_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-2147483649") + 1 characters to hold all
+ // representations of int.
+ //
+ char str[12];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 12, "%d", value_);
+#else
+ int n = sprintf (str, "%d", value_);
+#endif
+ if (n > 0 && n < 12)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/int.hxx b/libxsde/xsde/cxx/serializer/non-validating/int.hxx
new file mode 100644
index 0000000..a4712ac
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/int.hxx
@@ -0,0 +1,39 @@
+// file : xsde/cxx/serializer/non-validating/int.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_INT_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_INT_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct int_simpl: virtual int_sskel
+#else
+ struct int_simpl: int_sskel
+#endif
+ {
+ virtual void
+ pre (int);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ int value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_INT_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/integer.cxx b/libxsde/xsde/cxx/serializer/non-validating/integer.cxx
new file mode 100644
index 0000000..a9928fd
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/integer.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/integer.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/integer.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void integer_simpl::
+ pre (long value)
+ {
+ value_ = value;
+ }
+
+ void integer_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-9223372036854775808") + 1 characters to
+ // hold all representations of (possibly 64-bit) long.
+ //
+ char str[21];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 21, "%ld", value_);
+#else
+ int n = sprintf (str, "%ld", value_);
+#endif
+ if (n > 0 && n < 21)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/integer.hxx b/libxsde/xsde/cxx/serializer/non-validating/integer.hxx
new file mode 100644
index 0000000..da83119
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/integer.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/integer.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_INTEGER_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_INTEGER_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // Arbitrary-length integer. Mapped to long.
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct integer_simpl: virtual integer_sskel
+#else
+ struct integer_simpl: integer_sskel
+#endif
+ {
+ virtual void
+ pre (long);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ long value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_INTEGER_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/language-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/language-stl.cxx
new file mode 100644
index 0000000..ba60bdc
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/language-stl.cxx
@@ -0,0 +1,35 @@
+// file : xsde/cxx/serializer/non-validating/language-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/language-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void language_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void language_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/language-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/language-stl.hxx
new file mode 100644
index 0000000..b141c16
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/language-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/language-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_LANGUAGE_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_LANGUAGE_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct language_simpl: virtual language_sskel
+#else
+ struct language_simpl: language_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_LANGUAGE_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/language.cxx b/libxsde/xsde/cxx/serializer/non-validating/language.cxx
new file mode 100644
index 0000000..558edae
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/language.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/language.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/language.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ language_simpl::
+ ~language_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void language_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void language_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/language.hxx b/libxsde/xsde/cxx/serializer/non-validating/language.hxx
new file mode 100644
index 0000000..56ed635
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/language.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/language.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_LANGUAGE_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_LANGUAGE_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct language_simpl: virtual language_sskel
+#else
+ struct language_simpl: language_sskel
+#endif
+ {
+ virtual
+ ~language_simpl ();
+
+ language_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/language.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_LANGUAGE_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/language.ixx b/libxsde/xsde/cxx/serializer/non-validating/language.ixx
new file mode 100644
index 0000000..3b51aad
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/language.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/language.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline language_simpl::
+ language_simpl (bool free)
+ : free_ (free)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/long-long.cxx b/libxsde/xsde/cxx/serializer/non-validating/long-long.cxx
new file mode 100644
index 0000000..364a71d
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/long-long.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/long-long.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/long-long.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void long_simpl::
+ pre (long long value)
+ {
+ value_ = value;
+ }
+
+ void long_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-9223372036854775808") + 1 characters to
+ // hold all representations of long long.
+ //
+ char str[21];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 21, "%lld", value_);
+#else
+ int n = sprintf (str, "%lld", value_);
+#endif
+ if (n > 0 && n < 21)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/long-long.hxx b/libxsde/xsde/cxx/serializer/non-validating/long-long.hxx
new file mode 100644
index 0000000..545bb80
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/long-long.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/long-long.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_LONG_LONG_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_LONG_LONG_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // 64-bit signed integer
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct long_simpl: virtual long_sskel
+#else
+ struct long_simpl: long_sskel
+#endif
+ {
+ virtual void
+ pre (long long);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ long long value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_LONG_LONG_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/long.cxx b/libxsde/xsde/cxx/serializer/non-validating/long.cxx
new file mode 100644
index 0000000..7a9c121
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/long.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/long.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/long.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void long_simpl::
+ pre (long value)
+ {
+ value_ = value;
+ }
+
+ void long_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-9223372036854775808") + 1 characters to
+ // hold all representations of (possibly 64-bit) long.
+ //
+ char str[21];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 21, "%ld", value_);
+#else
+ int n = sprintf (str, "%ld", value_);
+#endif
+ if (n > 0 && n < 21)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/long.hxx b/libxsde/xsde/cxx/serializer/non-validating/long.hxx
new file mode 100644
index 0000000..a4c63e7
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/long.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/long.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_LONG_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_LONG_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // Fall-back implementation when 64 bit long long is not available.
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct long_simpl: virtual long_sskel
+#else
+ struct long_simpl: long_sskel
+#endif
+ {
+ virtual void
+ pre (long);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ long value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_LONG_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/name-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/name-stl.cxx
new file mode 100644
index 0000000..d84fd65
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/name-stl.cxx
@@ -0,0 +1,35 @@
+// file : xsde/cxx/serializer/non-validating/name-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/name-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void name_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void name_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/name-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/name-stl.hxx
new file mode 100644
index 0000000..f06b279
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/name-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/name-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NAME_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NAME_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct name_simpl: virtual name_sskel
+#else
+ struct name_simpl: name_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NAME_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/name.cxx b/libxsde/xsde/cxx/serializer/non-validating/name.cxx
new file mode 100644
index 0000000..70cb5c3
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/name.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/name.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/name.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ name_simpl::
+ ~name_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void name_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void name_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/name.hxx b/libxsde/xsde/cxx/serializer/non-validating/name.hxx
new file mode 100644
index 0000000..8a36591
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/name.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/name.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NAME_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NAME_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct name_simpl: virtual name_sskel
+#else
+ struct name_simpl: name_sskel
+#endif
+ {
+ virtual
+ ~name_simpl ();
+
+ name_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/name.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NAME_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/name.ixx b/libxsde/xsde/cxx/serializer/non-validating/name.ixx
new file mode 100644
index 0000000..f927928
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/name.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/name.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline name_simpl::
+ name_simpl (bool free)
+ : free_ (free)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/ncname-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/ncname-stl.cxx
new file mode 100644
index 0000000..3e31290
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/ncname-stl.cxx
@@ -0,0 +1,35 @@
+// file : xsde/cxx/serializer/non-validating/ncname-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/ncname-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void ncname_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void ncname_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/ncname-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/ncname-stl.hxx
new file mode 100644
index 0000000..781b513
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/ncname-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/ncname-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NCNAME_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NCNAME_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct ncname_simpl: virtual ncname_sskel
+#else
+ struct ncname_simpl: ncname_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NCNAME_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/ncname.cxx b/libxsde/xsde/cxx/serializer/non-validating/ncname.cxx
new file mode 100644
index 0000000..ba39a06
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/ncname.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/ncname.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/ncname.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ ncname_simpl::
+ ~ncname_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void ncname_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void ncname_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/ncname.hxx b/libxsde/xsde/cxx/serializer/non-validating/ncname.hxx
new file mode 100644
index 0000000..93a85c5
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/ncname.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/ncname.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NCNAME_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NCNAME_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct ncname_simpl: virtual ncname_sskel
+#else
+ struct ncname_simpl: ncname_sskel
+#endif
+ {
+ virtual
+ ~ncname_simpl ();
+
+ ncname_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/ncname.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NCNAME_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/ncname.ixx b/libxsde/xsde/cxx/serializer/non-validating/ncname.ixx
new file mode 100644
index 0000000..36785d6
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/ncname.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/ncname.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline ncname_simpl::
+ ncname_simpl (bool free)
+ : free_ (free)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/negative-integer.cxx b/libxsde/xsde/cxx/serializer/non-validating/negative-integer.cxx
new file mode 100644
index 0000000..713968d
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/negative-integer.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/negative-integer.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/negative-integer.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void negative_integer_simpl::
+ pre (long value)
+ {
+ value_ = value;
+ }
+
+ void negative_integer_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-9223372036854775808") + 1 characters to
+ // hold all representations of (possibly 64-bit) long.
+ //
+ char str[21];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 21, "%ld", value_);
+#else
+ int n = sprintf (str, "%ld", value_);
+#endif
+ if (n > 0 && n < 21)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/negative-integer.hxx b/libxsde/xsde/cxx/serializer/non-validating/negative-integer.hxx
new file mode 100644
index 0000000..d8d7367
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/negative-integer.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/negative-integer.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NEGATIVE_INTEGER_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NEGATIVE_INTEGER_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // Arbitrary-length negative integer. Mapped to long.
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct negative_integer_simpl: virtual negative_integer_sskel
+#else
+ struct negative_integer_simpl: negative_integer_sskel
+#endif
+ {
+ virtual void
+ pre (long);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ long value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NEGATIVE_INTEGER_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtoken-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/nmtoken-stl.cxx
new file mode 100644
index 0000000..a23aa22
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtoken-stl.cxx
@@ -0,0 +1,35 @@
+// file : xsde/cxx/serializer/non-validating/nmtoken-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/nmtoken-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void nmtoken_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void nmtoken_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtoken-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/nmtoken-stl.hxx
new file mode 100644
index 0000000..e5b56b4
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtoken-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/nmtoken-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKEN_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKEN_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct nmtoken_simpl: virtual nmtoken_sskel
+#else
+ struct nmtoken_simpl: nmtoken_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKEN_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtoken.cxx b/libxsde/xsde/cxx/serializer/non-validating/nmtoken.cxx
new file mode 100644
index 0000000..45132f1
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtoken.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/nmtoken.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/nmtoken.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ nmtoken_simpl::
+ ~nmtoken_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void nmtoken_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void nmtoken_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtoken.hxx b/libxsde/xsde/cxx/serializer/non-validating/nmtoken.hxx
new file mode 100644
index 0000000..14642c9
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtoken.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/nmtoken.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKEN_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKEN_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct nmtoken_simpl: virtual nmtoken_sskel
+#else
+ struct nmtoken_simpl: nmtoken_sskel
+#endif
+ {
+ virtual
+ ~nmtoken_simpl ();
+
+ nmtoken_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/nmtoken.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKEN_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtoken.ixx b/libxsde/xsde/cxx/serializer/non-validating/nmtoken.ixx
new file mode 100644
index 0000000..68ebd47
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtoken.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/nmtoken.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline nmtoken_simpl::
+ nmtoken_simpl (bool free)
+ : free_ (free)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.cxx
new file mode 100644
index 0000000..afa663f
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.cxx
@@ -0,0 +1,108 @@
+// file : xsde/cxx/serializer/non-validating/nmtokens-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/nmtokens-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ nmtokens_simpl::
+ ~nmtokens_simpl ()
+ {
+ if (free_)
+ delete const_cast<string_sequence*> (value_);
+ }
+
+ void nmtokens_simpl::
+ pre (const string_sequence* value)
+ {
+ value_ = value;
+ }
+
+ void nmtokens_simpl::
+ _serialize_content ()
+ {
+ bool first = true;
+ context& ctx = _context ();
+
+ for (string_sequence::const_iterator i (value_->begin ()),
+ e (value_->end ()); i != e; ++i)
+ {
+#ifdef XSDE_EXCEPTIONS
+ serializer_.pre (*i);
+
+ if (!first)
+ _characters (" ", 1);
+ else
+ first = false;
+
+ serializer_._pre_impl (ctx);
+ serializer_._serialize_content ();
+ serializer_._post_impl ();
+ serializer_.post ();
+#else
+ serializer_.pre (*i);
+
+ if (serializer_._error_type ())
+ serializer_._copy_error (ctx);
+
+ if (ctx.error_type ())
+ break;
+
+ if (!first)
+ {
+ if (!_characters (" ", 1))
+ break;
+ }
+ else
+ first = false;
+
+ serializer_._pre_impl (ctx);
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_._serialize_content ();
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_._post_impl ();
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_.post ();
+
+ if (serializer_._error_type ())
+ serializer_._copy_error (ctx);
+
+ if (ctx.error_type ())
+ break;
+#endif
+ }
+
+ if (free_)
+ {
+ delete const_cast<string_sequence*> (value_);
+ value_ = 0;
+ }
+ }
+
+ void nmtokens_simpl::
+ _reset ()
+ {
+ nmtokens_sskel::_reset ();
+ serializer_._reset ();
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.hxx
new file mode 100644
index 0000000..da6ec57
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.hxx
@@ -0,0 +1,52 @@
+// file : xsde/cxx/serializer/non-validating/nmtokens-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKENS_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKENS_STL_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+#include <xsde/cxx/serializer/non-validating/nmtoken-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct nmtokens_simpl: virtual nmtokens_sskel
+#else
+ struct nmtokens_simpl: nmtokens_sskel
+#endif
+ {
+ virtual
+ ~nmtokens_simpl ();
+
+ nmtokens_simpl (bool free = false);
+
+ virtual void
+ pre (const string_sequence*);
+
+ virtual void
+ _serialize_content ();
+
+ virtual void
+ _reset ();
+
+ protected:
+ bool free_;
+ const string_sequence* value_;
+ nmtoken_simpl serializer_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/nmtokens-stl.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKENS_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.ixx b/libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.ixx
new file mode 100644
index 0000000..b0236d8
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtokens-stl.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/nmtokens-stl.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline nmtokens_simpl::
+ nmtokens_simpl (bool free)
+ : free_ (free), value_ (0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtokens.cxx b/libxsde/xsde/cxx/serializer/non-validating/nmtokens.cxx
new file mode 100644
index 0000000..f430bda
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtokens.cxx
@@ -0,0 +1,109 @@
+// file : xsde/cxx/serializer/non-validating/nmtokens.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/nmtokens.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ nmtokens_simpl::
+ ~nmtokens_simpl ()
+ {
+ if (free_)
+ delete const_cast<string_sequence*> (value_);
+ }
+
+ void nmtokens_simpl::
+ pre (const string_sequence* value)
+ {
+ value_ = value;
+ }
+
+ void nmtokens_simpl::
+ _serialize_content ()
+ {
+ bool first = true;
+ context& ctx = _context ();
+
+ for (string_sequence::const_iterator i (value_->begin ()),
+ e (value_->end ()); i != e; ++i)
+ {
+#ifdef XSDE_EXCEPTIONS
+ serializer_.pre (*i);
+
+ if (!first)
+ _characters (" ", 1);
+ else
+ first = false;
+
+ serializer_._pre_impl (ctx);
+ serializer_._serialize_content ();
+ serializer_._post_impl ();
+ serializer_.post ();
+#else
+ serializer_.pre (*i);
+
+ if (serializer_._error_type ())
+ serializer_._copy_error (ctx);
+
+ if (ctx.error_type ())
+ break;
+
+ if (!first)
+ {
+ if (!_characters (" ", 1))
+ break;
+ }
+ else
+ first = false;
+
+ serializer_._pre_impl (ctx);
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_._serialize_content ();
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_._post_impl ();
+
+ if (ctx.error_type ())
+ break;
+
+ serializer_.post ();
+
+ if (serializer_._error_type ())
+ serializer_._copy_error (ctx);
+
+ if (ctx.error_type ())
+ break;
+#endif
+ }
+
+ if (free_)
+ {
+ delete const_cast<string_sequence*> (value_);
+ value_ = 0;
+ }
+ }
+
+ void nmtokens_simpl::
+ _reset ()
+ {
+ nmtokens_sskel::_reset ();
+ serializer_._reset ();
+ }
+ }
+ }
+ }
+}
+
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtokens.hxx b/libxsde/xsde/cxx/serializer/non-validating/nmtokens.hxx
new file mode 100644
index 0000000..8a0f651
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtokens.hxx
@@ -0,0 +1,52 @@
+// file : xsde/cxx/serializer/non-validating/nmtokens.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKENS_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKENS_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+#include <xsde/cxx/serializer/non-validating/nmtoken.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct nmtokens_simpl: virtual nmtokens_sskel
+#else
+ struct nmtokens_simpl: nmtokens_sskel
+#endif
+ {
+ virtual
+ ~nmtokens_simpl ();
+
+ nmtokens_simpl (bool free = false);
+
+ virtual void
+ pre (const string_sequence*);
+
+ virtual void
+ _serialize_content ();
+
+ virtual void
+ _reset ();
+
+ protected:
+ bool free_;
+ const string_sequence* value_;
+ nmtoken_simpl serializer_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/nmtokens.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NMTOKENS_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/nmtokens.ixx b/libxsde/xsde/cxx/serializer/non-validating/nmtokens.ixx
new file mode 100644
index 0000000..43af4b2
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/nmtokens.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/nmtokens.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline nmtokens_simpl::
+ nmtokens_simpl (bool free)
+ : free_ (free), value_ (0), serializer_ (false)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/non-negative-integer.cxx b/libxsde/xsde/cxx/serializer/non-validating/non-negative-integer.cxx
new file mode 100644
index 0000000..8a3ee77
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/non-negative-integer.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/non-negative-integer.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/non-negative-integer.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void non_negative_integer_simpl::
+ pre (unsigned long value)
+ {
+ value_ = value;
+ }
+
+ void non_negative_integer_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("18446744073709551615") + 1 characters to
+ // hold all representations of (possibly 64-bit) unsigned long.
+ //
+ char str[21];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 21, "%lu", value_);
+#else
+ int n = sprintf (str, "%lu", value_);
+#endif
+ if (n > 0 && n < 21)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/non-negative-integer.hxx b/libxsde/xsde/cxx/serializer/non-validating/non-negative-integer.hxx
new file mode 100644
index 0000000..ba9e1f3
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/non-negative-integer.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/non-negative-integer.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NON_NEGATIVE_INTEGER_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NON_NEGATIVE_INTEGER_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // Arbitrary-length non-negative integer. Mapped to unsigned long.
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct non_negative_integer_simpl: virtual non_negative_integer_sskel
+#else
+ struct non_negative_integer_simpl: non_negative_integer_sskel
+#endif
+ {
+ virtual void
+ pre (unsigned long);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ unsigned long value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NON_NEGATIVE_INTEGER_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/non-positive-integer.cxx b/libxsde/xsde/cxx/serializer/non-validating/non-positive-integer.cxx
new file mode 100644
index 0000000..4aa51d0
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/non-positive-integer.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/non-positive-integer.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/non-positive-integer.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void non_positive_integer_simpl::
+ pre (long value)
+ {
+ value_ = value;
+ }
+
+ void non_positive_integer_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-9223372036854775808") + 1 characters to
+ // hold all representations of (possibly 64-bit) long.
+ //
+ char str[21];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 21, "%ld", value_);
+#else
+ int n = sprintf (str, "%ld", value_);
+#endif
+ if (n > 0 && n < 21)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/non-positive-integer.hxx b/libxsde/xsde/cxx/serializer/non-validating/non-positive-integer.hxx
new file mode 100644
index 0000000..5e8c212
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/non-positive-integer.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/non-positive-integer.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NON_POSITIVE_INTEGER_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NON_POSITIVE_INTEGER_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // Arbitrary-length non-positive integer. Mapped to long.
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct non_positive_integer_simpl: virtual non_positive_integer_sskel
+#else
+ struct non_positive_integer_simpl: non_positive_integer_sskel
+#endif
+ {
+ virtual void
+ pre (long);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ long value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NON_POSITIVE_INTEGER_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/normalized-string-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/normalized-string-stl.cxx
new file mode 100644
index 0000000..c96c9cf
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/normalized-string-stl.cxx
@@ -0,0 +1,36 @@
+// file : xsde/cxx/serializer/non-validating/normalized-string-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/normalized-string-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void normalized_string_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void normalized_string_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
+
diff --git a/libxsde/xsde/cxx/serializer/non-validating/normalized-string-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/normalized-string-stl.hxx
new file mode 100644
index 0000000..65da3b6
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/normalized-string-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/normalized-string-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NORMALIZED_STRING_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NORMALIZED_STRING_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct normalized_string_simpl: virtual normalized_string_sskel
+#else
+ struct normalized_string_simpl: normalized_string_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NORMALIZED_STRING_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/normalized-string.cxx b/libxsde/xsde/cxx/serializer/non-validating/normalized-string.cxx
new file mode 100644
index 0000000..fd69cec
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/normalized-string.cxx
@@ -0,0 +1,44 @@
+// file : xsde/cxx/serializer/non-validating/normalized-string.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/normalized-string.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ normalized_string_simpl::
+ ~normalized_string_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void normalized_string_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void normalized_string_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
+
diff --git a/libxsde/xsde/cxx/serializer/non-validating/normalized-string.hxx b/libxsde/xsde/cxx/serializer/non-validating/normalized-string.hxx
new file mode 100644
index 0000000..1ae4270
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/normalized-string.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/normalized-string.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_NORMALIZED_STRING_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_NORMALIZED_STRING_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct normalized_string_simpl: virtual normalized_string_sskel
+#else
+ struct normalized_string_simpl: normalized_string_sskel
+#endif
+ {
+ virtual
+ ~normalized_string_simpl ();
+
+ normalized_string_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/normalized-string.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_NORMALIZED_STRING_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/normalized-string.ixx b/libxsde/xsde/cxx/serializer/non-validating/normalized-string.ixx
new file mode 100644
index 0000000..627b93a
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/normalized-string.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/normalized-string.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline normalized_string_simpl::
+ normalized_string_simpl (bool free)
+ : free_ (free)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/positive-integer.cxx b/libxsde/xsde/cxx/serializer/non-validating/positive-integer.cxx
new file mode 100644
index 0000000..193499e
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/positive-integer.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/positive-integer.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/positive-integer.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void positive_integer_simpl::
+ pre (unsigned long value)
+ {
+ value_ = value;
+ }
+
+ void positive_integer_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("18446744073709551615") + 1 characters to
+ // hold all representations of (possibly 64-bit) unsigned long.
+ //
+ char str[21];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 21, "%lu", value_);
+#else
+ int n = sprintf (str, "%lu", value_);
+#endif
+ if (n > 0 && n < 21)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/positive-integer.hxx b/libxsde/xsde/cxx/serializer/non-validating/positive-integer.hxx
new file mode 100644
index 0000000..397e904
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/positive-integer.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/positive-integer.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_POSITIVE_INTEGER_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_POSITIVE_INTEGER_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // Arbitrary-length positive integer. Mapped to unsigned long.
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct positive_integer_simpl: virtual positive_integer_sskel
+#else
+ struct positive_integer_simpl: positive_integer_sskel
+#endif
+ {
+ virtual void
+ pre (unsigned long);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ unsigned long value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_POSITIVE_INTEGER_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/qname-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/qname-stl.cxx
new file mode 100644
index 0000000..92c0b57
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/qname-stl.cxx
@@ -0,0 +1,50 @@
+// file : xsde/cxx/serializer/non-validating/qname-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/qname-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void qname_simpl::
+ pre (const qname& value)
+ {
+ value_ = value;
+ }
+
+ void qname_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the qname.
+ //
+ qname tmp ("a");
+ tmp.swap (value_);
+
+ if (!tmp.prefix ().empty ())
+ {
+#ifdef XSDE_EXCEPTIONS
+ _characters (tmp.prefix ().c_str (), tmp.prefix ().size ());
+ _characters (":", 1);
+ _characters (tmp.name ().c_str (), tmp.name ().size ());
+#else
+ if (_characters (tmp.prefix ().c_str (), tmp.prefix ().size ()))
+ {
+ if (_characters (":", 1))
+ _characters (tmp.name ().c_str (), tmp.name ().size ());
+ }
+#endif
+ }
+ else
+ _characters (tmp.name ().c_str (), tmp.name ().size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/qname-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/qname-stl.hxx
new file mode 100644
index 0000000..9163de5
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/qname-stl.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/qname-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_QNAME_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_QNAME_STL_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct qname_simpl: virtual qname_sskel
+#else
+ struct qname_simpl: qname_sskel
+#endif
+ {
+ qname_simpl ();
+
+ virtual void
+ pre (const qname&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ qname value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/qname-stl.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_QNAME_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/qname-stl.ixx b/libxsde/xsde/cxx/serializer/non-validating/qname-stl.ixx
new file mode 100644
index 0000000..d4bff2d
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/qname-stl.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/qname-stl.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline qname_simpl::
+ qname_simpl ()
+ : value_ ("a")
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/qname.cxx b/libxsde/xsde/cxx/serializer/non-validating/qname.cxx
new file mode 100644
index 0000000..d2e41ff
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/qname.cxx
@@ -0,0 +1,62 @@
+// file : xsde/cxx/serializer/non-validating/qname.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/qname.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ qname_simpl::
+ ~qname_simpl ()
+ {
+ if (free_)
+ delete const_cast<qname*> (value_);
+ }
+
+ void qname_simpl::
+ pre (const qname* value)
+ {
+ value_ = value;
+ }
+
+ void qname_simpl::
+ _serialize_content ()
+ {
+ const char* p = value_->prefix ();
+
+ if (p != 0 && *p != '\0')
+ {
+#ifdef XSDE_EXCEPTIONS
+ _characters (p);
+ _characters (":", 1);
+ _characters (value_->name ());
+#else
+ if (_characters (p))
+ {
+ if (_characters (":", 1))
+ _characters (value_->name ());
+ }
+#endif
+ }
+ else
+ {
+ _characters (value_->name ());
+ }
+
+ if (free_)
+ {
+ delete const_cast<qname*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/qname.hxx b/libxsde/xsde/cxx/serializer/non-validating/qname.hxx
new file mode 100644
index 0000000..4916726
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/qname.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/qname.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_QNAME_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_QNAME_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct qname_simpl: virtual qname_sskel
+#else
+ struct qname_simpl: qname_sskel
+#endif
+ {
+ virtual
+ ~qname_simpl ();
+
+ qname_simpl (bool free = false);
+
+ virtual void
+ pre (const qname*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const qname* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/qname.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_QNAME_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/qname.ixx b/libxsde/xsde/cxx/serializer/non-validating/qname.ixx
new file mode 100644
index 0000000..e89b8b9
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/qname.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/qname.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline qname_simpl::
+ qname_simpl (bool free)
+ : free_ (free), value_ (0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/serializer.cxx b/libxsde/xsde/cxx/serializer/non-validating/serializer.cxx
new file mode 100644
index 0000000..7da8599
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/serializer.cxx
@@ -0,0 +1,29 @@
+// file : xsde/cxx/serializer/non-validating/serializer.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/serializer.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // simple_content
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ void simple_content::
+ _serialize_content ()
+ {
+ if (impl_)
+ impl_->_serialize_content ();
+ }
+#endif
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/serializer.hxx b/libxsde/xsde/cxx/serializer/non-validating/serializer.hxx
new file mode 100644
index 0000000..c01476b
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/serializer.hxx
@@ -0,0 +1,58 @@
+// file : xsde/cxx/serializer/non-validating/serializer.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_SERIALIZER_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_SERIALIZER_HXX
+
+#include <xsde/cxx/config.hxx>
+
+#include <xsde/cxx/serializer/elements.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ struct empty_content: serializer_base
+ {
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ empty_content ();
+ empty_content (empty_content* impl, void*);
+#endif
+ };
+
+ //
+ //
+ struct simple_content: empty_content
+ {
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ virtual void
+ _serialize_content ();
+
+ simple_content ();
+ simple_content (simple_content* impl, void*);
+#endif
+ };
+
+ //
+ //
+ struct complex_content: empty_content
+ {
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ complex_content ();
+ complex_content (complex_content* impl, void*);
+#endif
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/serializer.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_SERIALIZER_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/serializer.ixx b/libxsde/xsde/cxx/serializer/non-validating/serializer.ixx
new file mode 100644
index 0000000..b8eacee
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/serializer.ixx
@@ -0,0 +1,61 @@
+// file : xsde/cxx/serializer/non-validating/serializer.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // empty_content
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline empty_content::
+ empty_content ()
+ {
+ }
+
+ inline empty_content::
+ empty_content (empty_content* impl, void*)
+ : serializer_base (impl, 0)
+ {
+ }
+#endif
+
+ // simple_content
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline simple_content::
+ simple_content ()
+ {
+ }
+
+ inline simple_content::
+ simple_content (simple_content* impl, void*)
+ : empty_content (impl, 0)
+ {
+ }
+#endif
+
+ // complex_content
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline complex_content::
+ complex_content ()
+ {
+ }
+
+ inline complex_content::
+ complex_content (complex_content* impl, void*)
+ : empty_content (impl, 0)
+ {
+ }
+#endif
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/short.cxx b/libxsde/xsde/cxx/serializer/non-validating/short.cxx
new file mode 100644
index 0000000..ad14306
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/short.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/short.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/short.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void short_simpl::
+ pre (short value)
+ {
+ value_ = value;
+ }
+
+ void short_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("-32768") + 1 characters to hold all
+ // representations of short.
+ //
+ char str[7];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 7, "%d", value_);
+#else
+ int n = sprintf (str, "%d", value_);
+#endif
+ if (n > 0 && n < 7)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/short.hxx b/libxsde/xsde/cxx/serializer/non-validating/short.hxx
new file mode 100644
index 0000000..fb763e7
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/short.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/short.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_SHORT_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_SHORT_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // 16-bit signed integer
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct short_simpl: virtual short_sskel
+#else
+ struct short_simpl: short_sskel
+#endif
+ {
+ virtual void
+ pre (short);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ short value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_SHORT_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/string-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/string-stl.cxx
new file mode 100644
index 0000000..28ba3e9
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/string-stl.cxx
@@ -0,0 +1,35 @@
+// file : xsde/cxx/serializer/non-validating/string-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/string-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void string_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void string_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/string-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/string-stl.hxx
new file mode 100644
index 0000000..0aee653
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/string-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/string-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_STRING_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_STRING_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct string_simpl: virtual string_sskel
+#else
+ struct string_simpl: string_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_STRING_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/string.cxx b/libxsde/xsde/cxx/serializer/non-validating/string.cxx
new file mode 100644
index 0000000..a56b3fa
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/string.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/string.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/string.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ string_simpl::
+ ~string_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void string_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void string_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/string.hxx b/libxsde/xsde/cxx/serializer/non-validating/string.hxx
new file mode 100644
index 0000000..913e2de
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/string.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/string.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_STRING_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_STRING_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct string_simpl: virtual string_sskel
+#else
+ struct string_simpl: string_sskel
+#endif
+ {
+ virtual
+ ~string_simpl ();
+
+ string_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/string.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_STRING_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/string.ixx b/libxsde/xsde/cxx/serializer/non-validating/string.ixx
new file mode 100644
index 0000000..b620835
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/string.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/string.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline string_simpl::
+ string_simpl (bool free)
+ : free_ (free), value_ (0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/time-zone.cxx b/libxsde/xsde/cxx/serializer/non-validating/time-zone.cxx
new file mode 100644
index 0000000..8f374cf
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/time-zone.cxx
@@ -0,0 +1,65 @@
+// file : xsde/cxx/serializer/non-validating/time-zone.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/config.hxx>
+
+#include <xsde/cxx/serializer/non-validating/time-zone.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ namespace bits
+ {
+ int
+ serialize_time_zone (char* s, const time_zone& z)
+ {
+ // time-zone := Z|(+|-)HH:MM
+ //
+
+ short h = z.zone_hours ();
+ short m = z.zone_minutes ();
+
+ if (h == 0 && m == 0)
+ {
+ *s = 'Z';
+ return 1;
+ }
+ else
+ {
+ const char* fmt = "+%.2u:%.2u";
+
+ if (h < 0 || m < 0)
+ {
+ fmt = "-%.2u:%.2u";
+ h = -h;
+ m = -m;
+ }
+
+ if (h >= 0 && h <= 14 && m >= 0 && m <= 59)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (s, 7, fmt, h, m);
+#else
+ int n = sprintf (s, fmt, h, m);
+#endif
+ if (n > 0 && n < 7)
+ return n;
+ }
+
+ return 0;
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/time-zone.hxx b/libxsde/xsde/cxx/serializer/non-validating/time-zone.hxx
new file mode 100644
index 0000000..3a342b4
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/time-zone.hxx
@@ -0,0 +1,33 @@
+// file : xsde/cxx/serializer/non-validating/time-zone.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_TIME_ZONE_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_TIME_ZONE_HXX
+
+#include <xsde/cxx/date-time.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ namespace bits
+ {
+ // Returns 0 in case of a failure and the number of
+ // characters written otherwise. The buffer should
+ // have space for at least 7 characters.
+ //
+ int
+ serialize_time_zone (char* s, const time_zone&);
+ }
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_TIME_ZONE_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/time.cxx b/libxsde/xsde/cxx/serializer/non-validating/time.cxx
new file mode 100644
index 0000000..7643d12
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/time.cxx
@@ -0,0 +1,73 @@
+// file : xsde/cxx/serializer/non-validating/time.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/time.hxx>
+#include <xsde/cxx/serializer/non-validating/time-zone.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void time_simpl::
+ pre (const time& value)
+ {
+ value_ = value;
+ }
+
+ void time_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("hh:mm:ss.ssssss-hh:mm") + 1 characters to
+ // hold all representations of time. We know that the seconds
+ // part (represented as double) has default precision of 6.
+ //
+ char str[22];
+
+ if (value_.hours () <= 24 &&
+ value_.minutes () <= 59 &&
+ value_.seconds () >= 0.0 &&
+ value_.seconds () < 60.0)
+ {
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 16, "%.2u:%.2u:%09f",
+ value_.hours (), value_.minutes (),
+ value_.seconds ());
+#else
+ int n = sprintf (str, "%.2u:%.2u:%09f",
+ value_.hours (), value_.minutes (),
+ value_.seconds ());
+#endif
+ if (n > 0 && n < 16)
+ {
+ // Remove trailing '0' and '.' if necessary.
+ //
+ while (str[n - 1] == '0')
+ n--;
+
+ if (str[n - 1] == '.')
+ n--;
+
+ if (value_.zone_present ())
+ {
+ if (int z = bits::serialize_time_zone (str + n, value_))
+ n += z;
+ else
+ return;
+ }
+
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/time.hxx b/libxsde/xsde/cxx/serializer/non-validating/time.hxx
new file mode 100644
index 0000000..69680c5
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/time.hxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/time.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_TIME_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_TIME_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct time_simpl: virtual time_sskel
+#else
+ struct time_simpl: time_sskel
+#endif
+ {
+ time_simpl ();
+
+ virtual void
+ pre (const time&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ time value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/time.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_TIME_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/time.ixx b/libxsde/xsde/cxx/serializer/non-validating/time.ixx
new file mode 100644
index 0000000..9a99cb6
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/time.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/time.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline time_simpl::
+ time_simpl ()
+ : value_ (0, 0, 0.0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/token-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/token-stl.cxx
new file mode 100644
index 0000000..baf257a
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/token-stl.cxx
@@ -0,0 +1,35 @@
+// file : xsde/cxx/serializer/non-validating/token-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/token-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void token_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void token_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/token-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/token-stl.hxx
new file mode 100644
index 0000000..458cb6d
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/token-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/token-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_TOKEN_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_TOKEN_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct token_simpl: virtual token_sskel
+#else
+ struct token_simpl: token_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_TOKEN_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/token.cxx b/libxsde/xsde/cxx/serializer/non-validating/token.cxx
new file mode 100644
index 0000000..e2bfd0e
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/token.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/token.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/token.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ token_simpl::
+ ~token_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void token_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void token_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/token.hxx b/libxsde/xsde/cxx/serializer/non-validating/token.hxx
new file mode 100644
index 0000000..0133fd5
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/token.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/token.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_TOKEN_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_TOKEN_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct token_simpl: virtual token_sskel
+#else
+ struct token_simpl: token_sskel
+#endif
+ {
+ virtual
+ ~token_simpl ();
+
+ token_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/token.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_TOKEN_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/token.ixx b/libxsde/xsde/cxx/serializer/non-validating/token.ixx
new file mode 100644
index 0000000..9cb8594
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/token.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/token.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline token_simpl::
+ token_simpl (bool free)
+ : free_ (free)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-byte.cxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-byte.cxx
new file mode 100644
index 0000000..3d39100
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-byte.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-byte.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/unsigned-byte.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void unsigned_byte_simpl::
+ pre (unsigned char value)
+ {
+ value_ = value;
+ }
+
+ void unsigned_byte_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("256") + 1 characters to hold all
+ // representations of unsigned byte.
+ //
+ char str[4];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 4, "%u", value_);
+#else
+ int n = sprintf (str, "%u", value_);
+#endif
+ if (n > 0 && n < 4)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-byte.hxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-byte.hxx
new file mode 100644
index 0000000..9c4f45e
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-byte.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-byte.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_BYTE_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_BYTE_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // 8-bit unsigned integer
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct unsigned_byte_simpl: virtual unsigned_byte_sskel
+#else
+ struct unsigned_byte_simpl: unsigned_byte_sskel
+#endif
+ {
+ virtual void
+ pre (unsigned char);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ unsigned char value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_BYTE_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-int.cxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-int.cxx
new file mode 100644
index 0000000..5f9f73a
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-int.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-int.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/unsigned-int.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void unsigned_int_simpl::
+ pre (unsigned int value)
+ {
+ value_ = value;
+ }
+
+ void unsigned_int_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("4294967295") + 1 characters to hold all
+ // representations of unsigned int.
+ //
+ char str[11];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 11, "%u", value_);
+#else
+ int n = sprintf (str, "%u", value_);
+#endif
+ if (n > 0 && n < 11)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-int.hxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-int.hxx
new file mode 100644
index 0000000..66e88d0
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-int.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-int.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_INT_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_INT_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // 32-bit unsigned integer
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct unsigned_int_simpl: virtual unsigned_int_sskel
+#else
+ struct unsigned_int_simpl: unsigned_int_sskel
+#endif
+ {
+ virtual void
+ pre (unsigned int);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ unsigned int value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_INT_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-long-long.cxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-long-long.cxx
new file mode 100644
index 0000000..6e62f87
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-long-long.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-long-long.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/unsigned-long-long.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void unsigned_long_simpl::
+ pre (unsigned long long value)
+ {
+ value_ = value;
+ }
+
+ void unsigned_long_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("18446744073709551615") + 1 characters to
+ // hold all representations of unsigned long long.
+ //
+ char str[21];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 21, "%llu", value_);
+#else
+ int n = sprintf (str, "%llu", value_);
+#endif
+ if (n > 0 && n < 21)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-long-long.hxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-long-long.hxx
new file mode 100644
index 0000000..34ea158
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-long-long.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-long-long.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_LONG_LONG_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_LONG_LONG_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // 64-bit unsigned integer
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct unsigned_long_simpl: virtual unsigned_long_sskel
+#else
+ struct unsigned_long_simpl: unsigned_long_sskel
+#endif
+ {
+ virtual void
+ pre (unsigned long long);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ unsigned long long value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_LONG_LONG_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-long.cxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-long.cxx
new file mode 100644
index 0000000..fd70eaf
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-long.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-long.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/unsigned-long.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void unsigned_long_simpl::
+ pre (unsigned long value)
+ {
+ value_ = value;
+ }
+
+ void unsigned_long_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("18446744073709551615") + 1 characters to
+ // hold all representations of (possibly 64-bit) unsigned long.
+ //
+ char str[21];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 21, "%lu", value_);
+#else
+ int n = sprintf (str, "%lu", value_);
+#endif
+ if (n > 0 && n < 21)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-long.hxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-long.hxx
new file mode 100644
index 0000000..ba061d3
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-long.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-long.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_LONG_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_LONG_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // Fall-back implementation when 64 bit long long is not available.
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct unsigned_long_simpl: virtual unsigned_long_sskel
+#else
+ struct unsigned_long_simpl: unsigned_long_sskel
+#endif
+ {
+ virtual void
+ pre (unsigned long);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ unsigned long value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_LONG_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-short.cxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-short.cxx
new file mode 100644
index 0000000..ffe29e1
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-short.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-short.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <stdio.h> // sprintf/snprintf
+
+#include <xsde/cxx/serializer/non-validating/unsigned-short.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void unsigned_short_simpl::
+ pre (unsigned short value)
+ {
+ value_ = value;
+ }
+
+ void unsigned_short_simpl::
+ _serialize_content ()
+ {
+ // We only need strlen("65535") + 1 characters to hold all
+ // representations of short.
+ //
+ char str[6];
+
+#ifdef XSDE_SNPRINTF
+ int n = snprintf (str, 6, "%u", value_);
+#else
+ int n = sprintf (str, "%u", value_);
+#endif
+ if (n > 0 && n < 6)
+ _characters (str, static_cast<size_t> (n));
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/unsigned-short.hxx b/libxsde/xsde/cxx/serializer/non-validating/unsigned-short.hxx
new file mode 100644
index 0000000..ffde97c
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/unsigned-short.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/unsigned-short.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_SHORT_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_SHORT_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // 16-bit unsigned integer
+ //
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct unsigned_short_simpl: virtual unsigned_short_sskel
+#else
+ struct unsigned_short_simpl: unsigned_short_sskel
+#endif
+ {
+ virtual void
+ pre (unsigned short);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ unsigned short value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_UNSIGNED_SHORT_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/uri-stl.cxx b/libxsde/xsde/cxx/serializer/non-validating/uri-stl.cxx
new file mode 100644
index 0000000..c109227
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/uri-stl.cxx
@@ -0,0 +1,35 @@
+// file : xsde/cxx/serializer/non-validating/uri-stl.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/uri-stl.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ void uri_simpl::
+ pre (const std::string& value)
+ {
+ value_ = value;
+ }
+
+ void uri_simpl::
+ _serialize_content ()
+ {
+ // Make sure we don't hold any references to the string.
+ //
+ std::string tmp;
+ tmp.swap (value_);
+
+ _characters (tmp.c_str (), tmp.size ());
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/uri-stl.hxx b/libxsde/xsde/cxx/serializer/non-validating/uri-stl.hxx
new file mode 100644
index 0000000..38310e5
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/uri-stl.hxx
@@ -0,0 +1,41 @@
+// file : xsde/cxx/serializer/non-validating/uri-stl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_URI_STL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_URI_STL_HXX
+
+#include <string>
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct uri_simpl: virtual uri_sskel
+#else
+ struct uri_simpl: uri_sskel
+#endif
+ {
+ virtual void
+ pre (const std::string&);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ std::string value_;
+ };
+ }
+ }
+ }
+}
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_URI_STL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/uri.cxx b/libxsde/xsde/cxx/serializer/non-validating/uri.cxx
new file mode 100644
index 0000000..372c88d
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/uri.cxx
@@ -0,0 +1,43 @@
+// file : xsde/cxx/serializer/non-validating/uri.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/uri.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ uri_simpl::
+ ~uri_simpl ()
+ {
+ if (free_)
+ delete[] const_cast<char*> (value_);
+ }
+
+ void uri_simpl::
+ pre (const char* value)
+ {
+ value_ = value;
+ }
+
+ void uri_simpl::
+ _serialize_content ()
+ {
+ _characters (value_);
+
+ if (free_)
+ {
+ delete[] const_cast<char*> (value_);
+ value_ = 0;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/uri.hxx b/libxsde/xsde/cxx/serializer/non-validating/uri.hxx
new file mode 100644
index 0000000..86a3c47
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/uri.hxx
@@ -0,0 +1,47 @@
+// file : xsde/cxx/serializer/non-validating/uri.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_URI_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_URI_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct uri_simpl: virtual uri_sskel
+#else
+ struct uri_simpl: uri_sskel
+#endif
+ {
+ virtual
+ ~uri_simpl ();
+
+ uri_simpl (bool free = false);
+
+ virtual void
+ pre (const char*);
+
+ virtual void
+ _serialize_content ();
+
+ protected:
+ bool free_;
+ const char* value_;
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/uri.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_URI_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/uri.ixx b/libxsde/xsde/cxx/serializer/non-validating/uri.ixx
new file mode 100644
index 0000000..d9dcd79
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/uri.ixx
@@ -0,0 +1,22 @@
+// file : xsde/cxx/serializer/non-validating/uri.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ inline uri_simpl::
+ uri_simpl (bool free)
+ : free_ (free), value_ (0)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/xml-schema-simpl.hxx b/libxsde/xsde/cxx/serializer/non-validating/xml-schema-simpl.hxx
new file mode 100644
index 0000000..adda9fd
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/xml-schema-simpl.hxx
@@ -0,0 +1,82 @@
+// file : xsde/cxx/serializer/non-validating/xml-schema-simpl.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_XML_SCHEMA_SIMPL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_XML_SCHEMA_SIMPL_HXX
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+#include <xsde/cxx/serializer/non-validating/any-type.hxx>
+#include <xsde/cxx/serializer/non-validating/boolean.hxx>
+#include <xsde/cxx/serializer/non-validating/byte.hxx>
+#include <xsde/cxx/serializer/non-validating/unsigned-byte.hxx>
+#include <xsde/cxx/serializer/non-validating/byte.hxx>
+#include <xsde/cxx/serializer/non-validating/unsigned-byte.hxx>
+#include <xsde/cxx/serializer/non-validating/short.hxx>
+#include <xsde/cxx/serializer/non-validating/unsigned-short.hxx>
+#include <xsde/cxx/serializer/non-validating/int.hxx>
+#include <xsde/cxx/serializer/non-validating/unsigned-int.hxx>
+
+#ifdef XSDE_LONGLONG
+# include <xsde/cxx/serializer/non-validating/long-long.hxx>
+# include <xsde/cxx/serializer/non-validating/unsigned-long-long.hxx>
+#else
+# include <xsde/cxx/serializer/non-validating/long.hxx>
+# include <xsde/cxx/serializer/non-validating/unsigned-long.hxx>
+#endif
+
+#include <xsde/cxx/serializer/non-validating/integer.hxx>
+#include <xsde/cxx/serializer/non-validating/negative-integer.hxx>
+#include <xsde/cxx/serializer/non-validating/non-positive-integer.hxx>
+#include <xsde/cxx/serializer/non-validating/positive-integer.hxx>
+#include <xsde/cxx/serializer/non-validating/non-negative-integer.hxx>
+#include <xsde/cxx/serializer/non-validating/float.hxx>
+#include <xsde/cxx/serializer/non-validating/double.hxx>
+#include <xsde/cxx/serializer/non-validating/decimal.hxx>
+
+#ifdef XSDE_STL
+# include <xsde/cxx/serializer/non-validating/string-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/normalized-string-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/token-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/name-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/nmtoken-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/nmtokens-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/ncname-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/id-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/idref-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/idrefs-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/language-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/uri-stl.hxx>
+# include <xsde/cxx/serializer/non-validating/qname-stl.hxx>
+#else
+# include <xsde/cxx/serializer/non-validating/string.hxx>
+# include <xsde/cxx/serializer/non-validating/normalized-string.hxx>
+# include <xsde/cxx/serializer/non-validating/token.hxx>
+# include <xsde/cxx/serializer/non-validating/name.hxx>
+# include <xsde/cxx/serializer/non-validating/nmtoken.hxx>
+# include <xsde/cxx/serializer/non-validating/nmtokens.hxx>
+# include <xsde/cxx/serializer/non-validating/ncname.hxx>
+# include <xsde/cxx/serializer/non-validating/id.hxx>
+# include <xsde/cxx/serializer/non-validating/idref.hxx>
+# include <xsde/cxx/serializer/non-validating/idrefs.hxx>
+# include <xsde/cxx/serializer/non-validating/language.hxx>
+# include <xsde/cxx/serializer/non-validating/uri.hxx>
+# include <xsde/cxx/serializer/non-validating/qname.hxx>
+#endif
+
+#include <xsde/cxx/serializer/non-validating/base64-binary.hxx>
+#include <xsde/cxx/serializer/non-validating/hex-binary.hxx>
+
+#include <xsde/cxx/serializer/non-validating/gday.hxx>
+#include <xsde/cxx/serializer/non-validating/gmonth.hxx>
+#include <xsde/cxx/serializer/non-validating/gyear.hxx>
+#include <xsde/cxx/serializer/non-validating/gmonth-day.hxx>
+#include <xsde/cxx/serializer/non-validating/gyear-month.hxx>
+#include <xsde/cxx/serializer/non-validating/date.hxx>
+#include <xsde/cxx/serializer/non-validating/time.hxx>
+#include <xsde/cxx/serializer/non-validating/date-time.hxx>
+#include <xsde/cxx/serializer/non-validating/duration.hxx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_XML_SCHEMA_SIMPL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.cxx b/libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.cxx
new file mode 100644
index 0000000..f9bb0b1
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.cxx
@@ -0,0 +1,560 @@
+// file : xsde/cxx/serializer/non-validating/xml-schema-sskel.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // any_type_sskel
+ //
+ void any_type_sskel::
+ pre ()
+ {
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ if (any_type_impl_)
+ any_type_impl_->pre ();
+#endif
+ }
+
+ // any_simple_type_sskel
+ //
+ void any_simple_type_sskel::
+ pre ()
+ {
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ if (any_simple_type_impl_)
+ any_simple_type_impl_->pre ();
+#endif
+ }
+
+ // static/dynamic_type function implementations.
+ //
+#ifdef XSDE_POLYMORPHIC
+ const char* any_type_sskel::
+ _static_type ()
+ {
+ return "anyType http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* any_type_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* any_simple_type_sskel::
+ _static_type ()
+ {
+ return "anySimpleType http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* any_simple_type_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* boolean_sskel::
+ _static_type ()
+ {
+ return "boolean http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* boolean_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* byte_sskel::
+ _static_type ()
+ {
+ return "byte http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* byte_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* unsigned_byte_sskel::
+ _static_type ()
+ {
+ return "unsignedByte http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* unsigned_byte_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* short_sskel::
+ _static_type ()
+ {
+ return "short http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* short_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* unsigned_short_sskel::
+ _static_type ()
+ {
+ return "unsignedShort http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* unsigned_short_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* int_sskel::
+ _static_type ()
+ {
+ return "int http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* int_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* unsigned_int_sskel::
+ _static_type ()
+ {
+ return "unsignedInt http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* unsigned_int_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* long_sskel::
+ _static_type ()
+ {
+ return "long http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* long_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* unsigned_long_sskel::
+ _static_type ()
+ {
+ return "unsignedLong http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* unsigned_long_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* integer_sskel::
+ _static_type ()
+ {
+ return "integer http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* integer_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* negative_integer_sskel::
+ _static_type ()
+ {
+ return "negativeInteger http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* negative_integer_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* non_positive_integer_sskel::
+ _static_type ()
+ {
+ return "nonPositiveInteger http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* non_positive_integer_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* positive_integer_sskel::
+ _static_type ()
+ {
+ return "positiveInteger http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* positive_integer_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* non_negative_integer_sskel::
+ _static_type ()
+ {
+ return "nonNegativeInteger http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* non_negative_integer_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* float_sskel::
+ _static_type ()
+ {
+ return "float http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* float_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* double_sskel::
+ _static_type ()
+ {
+ return "double http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* double_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* decimal_sskel::
+ _static_type ()
+ {
+ return "decimal http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* decimal_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* string_sskel::
+ _static_type ()
+ {
+ return "string http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* string_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* normalized_string_sskel::
+ _static_type ()
+ {
+ return "normalizedString http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* normalized_string_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* token_sskel::
+ _static_type ()
+ {
+ return "token http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* token_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* name_sskel::
+ _static_type ()
+ {
+ return "Name http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* name_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* nmtoken_sskel::
+ _static_type ()
+ {
+ return "NMTOKEN http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* nmtoken_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* nmtokens_sskel::
+ _static_type ()
+ {
+ return "NMTOKENS http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* nmtokens_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* ncname_sskel::
+ _static_type ()
+ {
+ return "NCName http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* ncname_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* id_sskel::
+ _static_type ()
+ {
+ return "ID http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* id_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* idref_sskel::
+ _static_type ()
+ {
+ return "IDREF http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* idref_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* idrefs_sskel::
+ _static_type ()
+ {
+ return "IDREFS http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* idrefs_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* language_sskel::
+ _static_type ()
+ {
+ return "language http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* language_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* uri_sskel::
+ _static_type ()
+ {
+ return "anyURI http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* uri_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* qname_sskel::
+ _static_type ()
+ {
+ return "QName http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* qname_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* base64_binary_sskel::
+ _static_type ()
+ {
+ return "base64Binary http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* base64_binary_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* hex_binary_sskel::
+ _static_type ()
+ {
+ return "hexBinary http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* hex_binary_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* gday_sskel::
+ _static_type ()
+ {
+ return "gDay http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* gday_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* gmonth_sskel::
+ _static_type ()
+ {
+ return "gMonth http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* gmonth_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* gyear_sskel::
+ _static_type ()
+ {
+ return "gYear http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* gyear_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* gmonth_day_sskel::
+ _static_type ()
+ {
+ return "gMonthDay http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* gmonth_day_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* gyear_month_sskel::
+ _static_type ()
+ {
+ return "gYearMonth http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* gyear_month_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* date_sskel::
+ _static_type ()
+ {
+ return "date http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* date_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* time_sskel::
+ _static_type ()
+ {
+ return "time http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* time_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* date_time_sskel::
+ _static_type ()
+ {
+ return "dateTime http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* date_time_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+
+ const char* duration_sskel::
+ _static_type ()
+ {
+ return "duration http://www.w3.org/2001/XMLSchema";
+ }
+
+ const char* duration_sskel::
+ _dynamic_type () const
+ {
+ return _static_type ();
+ }
+#endif // XSDE_POLYMORPHIC
+ }
+ }
+ }
+}
diff --git a/libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx b/libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx
new file mode 100644
index 0000000..9365f03
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx
@@ -0,0 +1,1382 @@
+// file : xsde/cxx/serializer/non-validating/xml-schema-sskel.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_SERIALIZER_NON_VALIDATING_XML_SCHEMA_SSKEL_HXX
+#define XSDE_CXX_SERIALIZER_NON_VALIDATING_XML_SCHEMA_SSKEL_HXX
+
+#include <xsde/cxx/config.hxx>
+
+#ifdef XSDE_STL
+# include <string>
+#endif
+
+#include <xsde/cxx/serializer/xml-schema.hxx>
+
+#include <xsde/cxx/serializer/non-validating/serializer.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // anyType and anySimpleType.
+ //
+ struct any_type_sskel: complex_content
+ {
+ virtual void
+ pre ();
+
+ // Override the following two functions to implement
+ // your logic.
+ //
+
+ // virtual void
+ // _serialize_attributes ();
+
+ // virtual void
+ // _serialize_content ();
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ any_type_sskel ();
+ any_type_sskel (any_type_sskel* impl, void*);
+
+ protected:
+ any_type_sskel* any_type_impl_;
+#endif
+ };
+
+ struct any_simple_type_sskel: simple_content
+ {
+ virtual void
+ pre ();
+
+ // Override the following function to implement your
+ // logic.
+ //
+
+ // virtual void
+ // _serialize_content ();
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ any_simple_type_sskel ();
+ any_simple_type_sskel (any_simple_type_sskel* impl, void*);
+
+ protected:
+ any_simple_type_sskel* any_simple_type_impl_;
+#endif
+ };
+
+ // Boolean.
+ //
+ struct boolean_sskel: simple_content
+ {
+ virtual void
+ pre (bool) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ boolean_sskel ();
+ boolean_sskel (boolean_sskel* impl, void*);
+
+ protected:
+ boolean_sskel* boolean_impl_;
+#endif
+ };
+
+ // 8-bit
+ //
+
+ struct byte_sskel: simple_content
+ {
+ virtual void
+ pre (signed char) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ byte_sskel ();
+ byte_sskel (byte_sskel* impl, void*);
+
+ protected:
+ byte_sskel* byte_impl_;
+#endif
+ };
+
+ struct unsigned_byte_sskel: simple_content
+ {
+ virtual void
+ pre (unsigned char) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ unsigned_byte_sskel ();
+ unsigned_byte_sskel (unsigned_byte_sskel* impl, void*);
+
+ protected:
+ unsigned_byte_sskel* unsigned_byte_impl_;
+#endif
+ };
+
+
+ // 16-bit
+ //
+
+ struct short_sskel: simple_content
+ {
+ virtual void
+ pre (short) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ short_sskel ();
+ short_sskel (short_sskel* impl, void*);
+
+ protected:
+ short_sskel* short_impl_;
+#endif
+ };
+
+ struct unsigned_short_sskel: simple_content
+ {
+ virtual void
+ pre (unsigned short) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ unsigned_short_sskel ();
+ unsigned_short_sskel (unsigned_short_sskel* impl, void*);
+
+ protected:
+ unsigned_short_sskel* unsigned_short_impl_;
+#endif
+ };
+
+ // 32-bit
+ //
+
+ struct int_sskel: simple_content
+ {
+ virtual void
+ pre (int) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ int_sskel ();
+ int_sskel (int_sskel* impl, void*);
+
+ protected:
+ int_sskel* int_impl_;
+#endif
+ };
+
+ struct unsigned_int_sskel: simple_content
+ {
+ virtual void
+ pre (unsigned int) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ unsigned_int_sskel ();
+ unsigned_int_sskel (unsigned_int_sskel* impl, void*);
+
+ protected:
+ unsigned_int_sskel* unsigned_int_impl_;
+#endif
+ };
+
+ // 64-bit
+ //
+
+#ifdef XSDE_LONGLONG
+ struct long_sskel: simple_content
+ {
+ virtual void
+ pre (long long) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ long_sskel ();
+ long_sskel (long_sskel* impl, void*);
+
+ protected:
+ long_sskel* long_impl_;
+#endif
+ };
+
+ struct unsigned_long_sskel: simple_content
+ {
+ virtual void
+ pre (unsigned long long) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ unsigned_long_sskel ();
+ unsigned_long_sskel (unsigned_long_sskel* impl, void*);
+
+ protected:
+ unsigned_long_sskel* unsigned_long_impl_;
+#endif
+ };
+#else
+ struct long_sskel: simple_content
+ {
+ virtual void
+ pre (long) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ long_sskel ();
+ long_sskel (long_sskel* impl, void*);
+
+ protected:
+ long_sskel* long_impl_;
+#endif
+ };
+
+ struct unsigned_long_sskel: simple_content
+ {
+ virtual void
+ pre (unsigned long) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ unsigned_long_sskel ();
+ unsigned_long_sskel (unsigned_long_sskel* impl, void*);
+
+ protected:
+ unsigned_long_sskel* unsigned_long_impl_;
+#endif
+ };
+#endif
+
+ // Arbitrary-length integers.
+ //
+
+ struct integer_sskel: simple_content
+ {
+ virtual void
+ pre (long) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ integer_sskel ();
+ integer_sskel (integer_sskel* impl, void*);
+
+ protected:
+ integer_sskel* integer_impl_;
+#endif
+ };
+
+ struct negative_integer_sskel: simple_content
+ {
+ virtual void
+ pre (long) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ negative_integer_sskel ();
+ negative_integer_sskel (negative_integer_sskel* impl, void*);
+
+ protected:
+ negative_integer_sskel* negative_integer_impl_;
+#endif
+ };
+
+ struct non_positive_integer_sskel: simple_content
+ {
+ virtual void
+ pre (long) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ non_positive_integer_sskel ();
+ non_positive_integer_sskel (non_positive_integer_sskel* impl, void*);
+
+ protected:
+ non_positive_integer_sskel* non_positive_integer_impl_;
+#endif
+ };
+
+ struct positive_integer_sskel: simple_content
+ {
+ virtual void
+ pre (unsigned long) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ positive_integer_sskel ();
+ positive_integer_sskel (positive_integer_sskel* impl, void*);
+
+ protected:
+ positive_integer_sskel* positive_integer_impl_;
+#endif
+ };
+
+ struct non_negative_integer_sskel: simple_content
+ {
+ virtual void
+ pre (unsigned long) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ non_negative_integer_sskel ();
+ non_negative_integer_sskel (non_negative_integer_sskel* impl, void*);
+
+ protected:
+ non_negative_integer_sskel* non_negative_integer_impl_;
+#endif
+ };
+
+ // Floats.
+ //
+
+ struct float_sskel: simple_content
+ {
+ virtual void
+ pre (float) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ float_sskel ();
+ float_sskel (float_sskel* impl, void*);
+
+ protected:
+ float_sskel* float_impl_;
+#endif
+ };
+
+ struct double_sskel: simple_content
+ {
+ virtual void
+ pre (double) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ double_sskel ();
+ double_sskel (double_sskel* impl, void*);
+
+ protected:
+ double_sskel* double_impl_;
+#endif
+ };
+
+ struct decimal_sskel: simple_content
+ {
+ virtual void
+ pre (double) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ decimal_sskel ();
+ decimal_sskel (decimal_sskel* impl, void*);
+
+ protected:
+ decimal_sskel* decimal_impl_;
+#endif
+ };
+
+ // String-based types.
+ //
+#ifdef XSDE_STL
+
+ struct string_sskel: simple_content
+ {
+ virtual void
+ pre (const std::string&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ string_sskel ();
+ string_sskel (string_sskel* impl, void*);
+
+ protected:
+ string_sskel* string_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct normalized_string_sskel: virtual string_sskel
+#else
+ struct normalized_string_sskel: string_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ normalized_string_sskel ();
+ normalized_string_sskel (normalized_string_sskel* impl, void*);
+
+ protected:
+ normalized_string_sskel* normalized_string_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct token_sskel: virtual normalized_string_sskel
+#else
+ struct token_sskel: normalized_string_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ token_sskel ();
+ token_sskel (token_sskel* impl, void*);
+
+ protected:
+ token_sskel* token_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct name_sskel: virtual token_sskel
+#else
+ struct name_sskel: token_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ name_sskel ();
+ name_sskel (name_sskel* impl, void*);
+
+ protected:
+ name_sskel* name_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct nmtoken_sskel: virtual token_sskel
+#else
+ struct nmtoken_sskel: token_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ nmtoken_sskel ();
+ nmtoken_sskel (nmtoken_sskel* impl, void*);
+
+ protected:
+ nmtoken_sskel* nmtoken_impl_;
+#endif
+ };
+
+ struct nmtokens_sskel: simple_content
+ {
+ virtual void
+ pre (const string_sequence*) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ nmtokens_sskel ();
+ nmtokens_sskel (nmtokens_sskel* impl, void*);
+
+ protected:
+ nmtokens_sskel* nmtokens_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct ncname_sskel: virtual name_sskel
+#else
+ struct ncname_sskel: name_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ ncname_sskel ();
+ ncname_sskel (ncname_sskel* impl, void*);
+
+ protected:
+ ncname_sskel* ncname_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct id_sskel: virtual ncname_sskel
+#else
+ struct id_sskel: ncname_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ id_sskel ();
+ id_sskel (id_sskel* impl, void*);
+
+ protected:
+ id_sskel* id_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct idref_sskel: virtual ncname_sskel
+#else
+ struct idref_sskel: ncname_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ idref_sskel ();
+ idref_sskel (idref_sskel* impl, void*);
+
+ protected:
+ idref_sskel* idref_impl_;
+#endif
+ };
+
+ struct idrefs_sskel: simple_content
+ {
+ virtual void
+ pre (const string_sequence*) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ idrefs_sskel ();
+ idrefs_sskel (idrefs_sskel* impl, void*);
+
+ protected:
+ idrefs_sskel* idrefs_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct language_sskel: virtual token_sskel
+#else
+ struct language_sskel: token_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ language_sskel ();
+ language_sskel (language_sskel* impl, void*);
+
+ protected:
+ language_sskel* language_impl_;
+#endif
+ };
+
+ struct uri_sskel: simple_content
+ {
+ virtual void
+ pre (const std::string&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ uri_sskel ();
+ uri_sskel (uri_sskel* impl, void*);
+
+ protected:
+ uri_sskel* uri_impl_;
+#endif
+ };
+
+ struct qname_sskel: simple_content
+ {
+ virtual void
+ pre (const qname&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ qname_sskel ();
+ qname_sskel (qname_sskel* impl, void*);
+
+ protected:
+ qname_sskel* qname_impl_;
+#endif
+ };
+
+#else // XSDE_STL
+
+ struct string_sskel: simple_content
+ {
+ virtual void
+ pre (const char*) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ string_sskel ();
+ string_sskel (string_sskel* impl, void*);
+
+ protected:
+ string_sskel* string_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct normalized_string_sskel: virtual string_sskel
+#else
+ struct normalized_string_sskel: string_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ normalized_string_sskel ();
+ normalized_string_sskel (normalized_string_sskel* impl, void*);
+
+ protected:
+ normalized_string_sskel* normalized_string_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct token_sskel: virtual normalized_string_sskel
+#else
+ struct token_sskel: normalized_string_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ token_sskel ();
+ token_sskel (token_sskel* impl, void*);
+
+ protected:
+ token_sskel* token_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct name_sskel: virtual token_sskel
+#else
+ struct name_sskel: token_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ name_sskel ();
+ name_sskel (name_sskel* impl, void*);
+
+ protected:
+ name_sskel* name_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct nmtoken_sskel: virtual token_sskel
+#else
+ struct nmtoken_sskel: token_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ nmtoken_sskel ();
+ nmtoken_sskel (nmtoken_sskel* impl, void*);
+
+ protected:
+ nmtoken_sskel* nmtoken_impl_;
+#endif
+ };
+
+ struct nmtokens_sskel: simple_content
+ {
+ virtual void
+ pre (const string_sequence*) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ nmtokens_sskel ();
+ nmtokens_sskel (nmtokens_sskel* impl, void*);
+
+ protected:
+ nmtokens_sskel* nmtokens_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct ncname_sskel: virtual name_sskel
+#else
+ struct ncname_sskel: name_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ ncname_sskel ();
+ ncname_sskel (ncname_sskel* impl, void*);
+
+ protected:
+ ncname_sskel* ncname_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct id_sskel: virtual ncname_sskel
+#else
+ struct id_sskel: ncname_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ id_sskel ();
+ id_sskel (id_sskel* impl, void*);
+
+ protected:
+ id_sskel* id_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct idref_sskel: virtual ncname_sskel
+#else
+ struct idref_sskel: ncname_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ idref_sskel ();
+ idref_sskel (idref_sskel* impl, void*);
+
+ protected:
+ idref_sskel* idref_impl_;
+#endif
+ };
+
+ struct idrefs_sskel: simple_content
+ {
+ virtual void
+ pre (const string_sequence*) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ idrefs_sskel ();
+ idrefs_sskel (idrefs_sskel* impl, void*);
+
+ protected:
+ idrefs_sskel* idrefs_impl_;
+#endif
+ };
+
+#ifdef XSDE_REUSE_STYLE_MIXIN
+ struct language_sskel: virtual token_sskel
+#else
+ struct language_sskel: token_sskel
+#endif
+ {
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ language_sskel ();
+ language_sskel (language_sskel* impl, void*);
+
+ protected:
+ language_sskel* language_impl_;
+#endif
+ };
+
+ struct uri_sskel: simple_content
+ {
+ virtual void
+ pre (const char*) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ uri_sskel ();
+ uri_sskel (uri_sskel* impl, void*);
+
+ protected:
+ uri_sskel* uri_impl_;
+#endif
+ };
+
+ struct qname_sskel: simple_content
+ {
+ virtual void
+ pre (const qname*) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ qname_sskel ();
+ qname_sskel (qname_sskel* impl, void*);
+
+ protected:
+ qname_sskel* qname_impl_;
+#endif
+ };
+
+#endif // XSDE_STL
+
+
+ // base64Binary
+ //
+ struct base64_binary_sskel: simple_content
+ {
+ virtual void
+ pre (const buffer*) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ base64_binary_sskel ();
+ base64_binary_sskel (base64_binary_sskel* impl, void*);
+
+ protected:
+ base64_binary_sskel* base64_binary_impl_;
+#endif
+ };
+
+ // hexBinary
+ //
+ struct hex_binary_sskel: simple_content
+ {
+ virtual void
+ pre (const buffer*) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ hex_binary_sskel ();
+ hex_binary_sskel (hex_binary_sskel* impl, void*);
+
+ protected:
+ hex_binary_sskel* hex_binary_impl_;
+#endif
+ };
+
+ // Time and date types.
+ //
+ struct gday_sskel: simple_content
+ {
+ virtual void
+ pre (const gday&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ gday_sskel ();
+ gday_sskel (gday_sskel* impl, void*);
+
+ protected:
+ gday_sskel* gday_impl_;
+#endif
+ };
+
+ struct gmonth_sskel: simple_content
+ {
+ virtual void
+ pre (const gmonth&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ gmonth_sskel ();
+ gmonth_sskel (gmonth_sskel* impl, void*);
+
+ protected:
+ gmonth_sskel* gmonth_impl_;
+#endif
+ };
+
+ struct gyear_sskel: simple_content
+ {
+ virtual void
+ pre (const gyear&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ gyear_sskel ();
+ gyear_sskel (gyear_sskel* impl, void*);
+
+ protected:
+ gyear_sskel* gyear_impl_;
+#endif
+ };
+
+ struct gmonth_day_sskel: simple_content
+ {
+ virtual void
+ pre (const gmonth_day&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ gmonth_day_sskel ();
+ gmonth_day_sskel (gmonth_day_sskel* impl, void*);
+
+ protected:
+ gmonth_day_sskel* gmonth_day_impl_;
+#endif
+ };
+
+ struct gyear_month_sskel: simple_content
+ {
+ virtual void
+ pre (const gyear_month&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ gyear_month_sskel ();
+ gyear_month_sskel (gyear_month_sskel* impl, void*);
+
+ protected:
+ gyear_month_sskel* gyear_month_impl_;
+#endif
+ };
+
+ struct date_sskel: simple_content
+ {
+ virtual void
+ pre (const date&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ date_sskel ();
+ date_sskel (date_sskel* impl, void*);
+
+ protected:
+ date_sskel* date_impl_;
+#endif
+ };
+
+ struct time_sskel: simple_content
+ {
+ virtual void
+ pre (const time&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ time_sskel ();
+ time_sskel (time_sskel* impl, void*);
+
+ protected:
+ time_sskel* time_impl_;
+#endif
+ };
+
+ struct date_time_sskel: simple_content
+ {
+ virtual void
+ pre (const date_time&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ date_time_sskel ();
+ date_time_sskel (date_time_sskel* impl, void*);
+
+ protected:
+ date_time_sskel* date_time_impl_;
+#endif
+ };
+
+ struct duration_sskel: simple_content
+ {
+ virtual void
+ pre (const duration&) = 0;
+
+#ifdef XSDE_POLYMORPHIC
+ static const char*
+ _static_type ();
+
+ virtual const char*
+ _dynamic_type () const;
+#endif
+
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ duration_sskel ();
+ duration_sskel (duration_sskel* impl, void*);
+
+ protected:
+ duration_sskel* duration_impl_;
+#endif
+ };
+ }
+ }
+ }
+}
+
+#include <xsde/cxx/serializer/non-validating/xml-schema-sskel.ixx>
+
+#endif // XSDE_CXX_SERIALIZER_NON_VALIDATING_XML_SCHEMA_SSKEL_HXX
diff --git a/libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.ixx b/libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.ixx
new file mode 100644
index 0000000..de78f5d
--- /dev/null
+++ b/libxsde/xsde/cxx/serializer/non-validating/xml-schema-sskel.ixx
@@ -0,0 +1,704 @@
+// file : xsde/cxx/serializer/non-validating/xml-schema-sskel.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+namespace xsde
+{
+ namespace cxx
+ {
+ namespace serializer
+ {
+ namespace non_validating
+ {
+ // any_type_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline any_type_sskel::
+ any_type_sskel ()
+ : any_type_impl_ (0)
+ {
+ }
+
+ inline any_type_sskel::
+ any_type_sskel (any_type_sskel* impl, void*)
+ : complex_content (impl, 0), any_type_impl_ (impl)
+ {
+ }
+#endif
+
+ // any_simple_type_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline any_simple_type_sskel::
+ any_simple_type_sskel ()
+ : any_simple_type_impl_ (0)
+ {
+ }
+
+ inline any_simple_type_sskel::
+ any_simple_type_sskel (any_simple_type_sskel* impl, void*)
+ : simple_content (impl, 0), any_simple_type_impl_ (impl)
+ {
+ }
+#endif
+
+ // boolean_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline boolean_sskel::
+ boolean_sskel ()
+ : boolean_impl_ (0)
+ {
+ }
+
+ inline boolean_sskel::
+ boolean_sskel (boolean_sskel* impl, void*)
+ : simple_content (impl, 0), boolean_impl_ (impl)
+ {
+ }
+#endif
+
+ // byte_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline byte_sskel::
+ byte_sskel ()
+ : byte_impl_ (0)
+ {
+ }
+
+ inline byte_sskel::
+ byte_sskel (byte_sskel* impl, void*)
+ : simple_content (impl, 0), byte_impl_ (impl)
+ {
+ }
+#endif
+
+ // unsigned_byte_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline unsigned_byte_sskel::
+ unsigned_byte_sskel ()
+ : unsigned_byte_impl_ (0)
+ {
+ }
+
+ inline unsigned_byte_sskel::
+ unsigned_byte_sskel (unsigned_byte_sskel* impl, void*)
+ : simple_content (impl, 0), unsigned_byte_impl_ (impl)
+ {
+ }
+#endif
+
+ // short_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline short_sskel::
+ short_sskel ()
+ : short_impl_ (0)
+ {
+ }
+
+ inline short_sskel::
+ short_sskel (short_sskel* impl, void*)
+ : simple_content (impl, 0), short_impl_ (impl)
+ {
+ }
+#endif
+
+ // unsigned_short_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline unsigned_short_sskel::
+ unsigned_short_sskel ()
+ : unsigned_short_impl_ (0)
+ {
+ }
+
+ inline unsigned_short_sskel::
+ unsigned_short_sskel (unsigned_short_sskel* impl, void*)
+ : simple_content (impl, 0), unsigned_short_impl_ (impl)
+ {
+ }
+#endif
+
+ // int_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline int_sskel::
+ int_sskel ()
+ : int_impl_ (0)
+ {
+ }
+
+ inline int_sskel::
+ int_sskel (int_sskel* impl, void*)
+ : simple_content (impl, 0), int_impl_ (impl)
+ {
+ }
+#endif
+
+ // unsigned_int_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline unsigned_int_sskel::
+ unsigned_int_sskel ()
+ : unsigned_int_impl_ (0)
+ {
+ }
+
+ inline unsigned_int_sskel::
+ unsigned_int_sskel (unsigned_int_sskel* impl, void*)
+ : simple_content (impl, 0), unsigned_int_impl_ (impl)
+ {
+ }
+#endif
+
+ // long_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline long_sskel::
+ long_sskel ()
+ : long_impl_ (0)
+ {
+ }
+
+ inline long_sskel::
+ long_sskel (long_sskel* impl, void*)
+ : simple_content (impl, 0), long_impl_ (impl)
+ {
+ }
+#endif
+
+ // unsigned_long_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline unsigned_long_sskel::
+ unsigned_long_sskel ()
+ : unsigned_long_impl_ (0)
+ {
+ }
+
+ inline unsigned_long_sskel::
+ unsigned_long_sskel (unsigned_long_sskel* impl, void*)
+ : simple_content (impl, 0), unsigned_long_impl_ (impl)
+ {
+ }
+#endif
+
+ // integer_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline integer_sskel::
+ integer_sskel ()
+ : integer_impl_ (0)
+ {
+ }
+
+ inline integer_sskel::
+ integer_sskel (integer_sskel* impl, void*)
+ : simple_content (impl, 0), integer_impl_ (impl)
+ {
+ }
+#endif
+
+ // negative_integer_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline negative_integer_sskel::
+ negative_integer_sskel ()
+ : negative_integer_impl_ (0)
+ {
+ }
+
+ inline negative_integer_sskel::
+ negative_integer_sskel (negative_integer_sskel* impl, void*)
+ : simple_content (impl, 0), negative_integer_impl_ (impl)
+ {
+ }
+#endif
+
+ // non_positive_integer_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline non_positive_integer_sskel::
+ non_positive_integer_sskel ()
+ : non_positive_integer_impl_ (0)
+ {
+ }
+
+ inline non_positive_integer_sskel::
+ non_positive_integer_sskel (non_positive_integer_sskel* impl, void*)
+ : simple_content (impl, 0), non_positive_integer_impl_ (impl)
+ {
+ }
+#endif
+
+ // positive_integer_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline positive_integer_sskel::
+ positive_integer_sskel ()
+ : positive_integer_impl_ (0)
+ {
+ }
+
+ inline positive_integer_sskel::
+ positive_integer_sskel (positive_integer_sskel* impl, void*)
+ : simple_content (impl, 0), positive_integer_impl_ (impl)
+ {
+ }
+#endif
+
+ // non_negative_integer_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline non_negative_integer_sskel::
+ non_negative_integer_sskel ()
+ : non_negative_integer_impl_ (0)
+ {
+ }
+
+ inline non_negative_integer_sskel::
+ non_negative_integer_sskel (non_negative_integer_sskel* impl, void*)
+ : simple_content (impl, 0), non_negative_integer_impl_ (impl)
+ {
+ }
+#endif
+
+ // float_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline float_sskel::
+ float_sskel ()
+ : float_impl_ (0)
+ {
+ }
+
+ inline float_sskel::
+ float_sskel (float_sskel* impl, void*)
+ : simple_content (impl, 0), float_impl_ (impl)
+ {
+ }
+#endif
+
+ // double_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline double_sskel::
+ double_sskel ()
+ : double_impl_ (0)
+ {
+ }
+
+ inline double_sskel::
+ double_sskel (double_sskel* impl, void*)
+ : simple_content (impl, 0), double_impl_ (impl)
+ {
+ }
+#endif
+
+ // decimal_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline decimal_sskel::
+ decimal_sskel ()
+ : decimal_impl_ (0)
+ {
+ }
+
+ inline decimal_sskel::
+ decimal_sskel (decimal_sskel* impl, void*)
+ : simple_content (impl, 0), decimal_impl_ (impl)
+ {
+ }
+#endif
+
+ // string_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline string_sskel::
+ string_sskel ()
+ : string_impl_ (0)
+ {
+ }
+
+ inline string_sskel::
+ string_sskel (string_sskel* impl, void*)
+ : simple_content (impl, 0), string_impl_ (impl)
+ {
+ }
+#endif
+
+ // normalized_string_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline normalized_string_sskel::
+ normalized_string_sskel ()
+ : normalized_string_impl_ (0)
+ {
+ }
+
+ inline normalized_string_sskel::
+ normalized_string_sskel (normalized_string_sskel* impl, void*)
+ : string_sskel (impl, 0), normalized_string_impl_ (impl)
+ {
+ }
+#endif
+
+ // token_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline token_sskel::
+ token_sskel ()
+ : token_impl_ (0)
+ {
+ }
+
+ inline token_sskel::
+ token_sskel (token_sskel* impl, void*)
+ : normalized_string_sskel (impl, 0), token_impl_ (impl)
+ {
+ }
+#endif
+
+ // name_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline name_sskel::
+ name_sskel ()
+ : name_impl_ (0)
+ {
+ }
+
+ inline name_sskel::
+ name_sskel (name_sskel* impl, void*)
+ : token_sskel (impl, 0), name_impl_ (impl)
+ {
+ }
+#endif
+
+ // nmtoken_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline nmtoken_sskel::
+ nmtoken_sskel ()
+ : nmtoken_impl_ (0)
+ {
+ }
+
+ inline nmtoken_sskel::
+ nmtoken_sskel (nmtoken_sskel* impl, void*)
+ : token_sskel (impl, 0), nmtoken_impl_ (impl)
+ {
+ }
+#endif
+
+ // nmtokens_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline nmtokens_sskel::
+ nmtokens_sskel ()
+ : nmtokens_impl_ (0)
+ {
+ }
+
+ inline nmtokens_sskel::
+ nmtokens_sskel (nmtokens_sskel* impl, void*)
+ : simple_content (impl, 0), nmtokens_impl_ (impl)
+ {
+ }
+#endif
+
+ // ncname_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline ncname_sskel::
+ ncname_sskel ()
+ : ncname_impl_ (0)
+ {
+ }
+
+ inline ncname_sskel::
+ ncname_sskel (ncname_sskel* impl, void*)
+ : name_sskel (impl, 0), ncname_impl_ (impl)
+ {
+ }
+#endif
+
+ // id_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline id_sskel::
+ id_sskel ()
+ : id_impl_ (0)
+ {
+ }
+
+ inline id_sskel::
+ id_sskel (id_sskel* impl, void*)
+ : ncname_sskel (impl, 0), id_impl_ (impl)
+ {
+ }
+#endif
+
+ // idref_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline idref_sskel::
+ idref_sskel ()
+ : idref_impl_ (0)
+ {
+ }
+
+ inline idref_sskel::
+ idref_sskel (idref_sskel* impl, void*)
+ : ncname_sskel (impl, 0), idref_impl_ (impl)
+ {
+ }
+#endif
+
+ // idrefs_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline idrefs_sskel::
+ idrefs_sskel ()
+ : idrefs_impl_ (0)
+ {
+ }
+
+ inline idrefs_sskel::
+ idrefs_sskel (idrefs_sskel* impl, void*)
+ : simple_content (impl, 0), idrefs_impl_ (impl)
+ {
+ }
+#endif
+
+ // language_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline language_sskel::
+ language_sskel ()
+ : language_impl_ (0)
+ {
+ }
+
+ inline language_sskel::
+ language_sskel (language_sskel* impl, void*)
+ : token_sskel (impl, 0), language_impl_ (impl)
+ {
+ }
+#endif
+
+ // uri_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline uri_sskel::
+ uri_sskel ()
+ : uri_impl_ (0)
+ {
+ }
+
+ inline uri_sskel::
+ uri_sskel (uri_sskel* impl, void*)
+ : simple_content (impl, 0), uri_impl_ (impl)
+ {
+ }
+#endif
+
+ // qname_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline qname_sskel::
+ qname_sskel ()
+ : qname_impl_ (0)
+ {
+ }
+
+ inline qname_sskel::
+ qname_sskel (qname_sskel* impl, void*)
+ : simple_content (impl, 0), qname_impl_ (impl)
+ {
+ }
+#endif
+
+ // base64_binary_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline base64_binary_sskel::
+ base64_binary_sskel ()
+ : base64_binary_impl_ (0)
+ {
+ }
+
+ inline base64_binary_sskel::
+ base64_binary_sskel (base64_binary_sskel* impl, void*)
+ : simple_content (impl, 0), base64_binary_impl_ (impl)
+ {
+ }
+#endif
+
+ // hex_binary_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline hex_binary_sskel::
+ hex_binary_sskel ()
+ : hex_binary_impl_ (0)
+ {
+ }
+
+ inline hex_binary_sskel::
+ hex_binary_sskel (hex_binary_sskel* impl, void*)
+ : simple_content (impl, 0), hex_binary_impl_ (impl)
+ {
+ }
+#endif
+
+ // gday_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline gday_sskel::
+ gday_sskel ()
+ : gday_impl_ (0)
+ {
+ }
+
+ inline gday_sskel::
+ gday_sskel (gday_sskel* impl, void*)
+ : simple_content (impl, 0), gday_impl_ (impl)
+ {
+ }
+#endif
+
+ // gmonth_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline gmonth_sskel::
+ gmonth_sskel ()
+ : gmonth_impl_ (0)
+ {
+ }
+
+ inline gmonth_sskel::
+ gmonth_sskel (gmonth_sskel* impl, void*)
+ : simple_content (impl, 0), gmonth_impl_ (impl)
+ {
+ }
+#endif
+
+ // gyear_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline gyear_sskel::
+ gyear_sskel ()
+ : gyear_impl_ (0)
+ {
+ }
+
+ inline gyear_sskel::
+ gyear_sskel (gyear_sskel* impl, void*)
+ : simple_content (impl, 0), gyear_impl_ (impl)
+ {
+ }
+#endif
+
+ // gmonth_day_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline gmonth_day_sskel::
+ gmonth_day_sskel ()
+ : gmonth_day_impl_ (0)
+ {
+ }
+
+ inline gmonth_day_sskel::
+ gmonth_day_sskel (gmonth_day_sskel* impl, void*)
+ : simple_content (impl, 0), gmonth_day_impl_ (impl)
+ {
+ }
+#endif
+
+ // gyear_month_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline gyear_month_sskel::
+ gyear_month_sskel ()
+ : gyear_month_impl_ (0)
+ {
+ }
+
+ inline gyear_month_sskel::
+ gyear_month_sskel (gyear_month_sskel* impl, void*)
+ : simple_content (impl, 0), gyear_month_impl_ (impl)
+ {
+ }
+#endif
+
+ // date_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline date_sskel::
+ date_sskel ()
+ : date_impl_ (0)
+ {
+ }
+
+ inline date_sskel::
+ date_sskel (date_sskel* impl, void*)
+ : simple_content (impl, 0), date_impl_ (impl)
+ {
+ }
+#endif
+
+ // time_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline time_sskel::
+ time_sskel ()
+ : time_impl_ (0)
+ {
+ }
+
+ inline time_sskel::
+ time_sskel (time_sskel* impl, void*)
+ : simple_content (impl, 0), time_impl_ (impl)
+ {
+ }
+#endif
+
+ // date_time_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline date_time_sskel::
+ date_time_sskel ()
+ : date_time_impl_ (0)
+ {
+ }
+
+ inline date_time_sskel::
+ date_time_sskel (date_time_sskel* impl, void*)
+ : simple_content (impl, 0), date_time_impl_ (impl)
+ {
+ }
+#endif
+
+ // duration_sskel
+ //
+#ifdef XSDE_REUSE_STYLE_TIEIN
+ inline duration_sskel::
+ duration_sskel ()
+ : duration_impl_ (0)
+ {
+ }
+
+ inline duration_sskel::
+ duration_sskel (duration_sskel* impl, void*)
+ : simple_content (impl, 0), duration_impl_ (impl)
+ {
+ }
+#endif
+ }
+ }
+ }
+}