aboutsummaryrefslogtreecommitdiff
path: root/dist
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-03-08 17:23:30 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-03-08 17:23:30 +0200
commit0bce70a0e483294b83b8bf9d5468838a63405612 (patch)
treed11afb4998d6980435c15c4df6e40b1979531672 /dist
parent6c63b913179127e09ed7d9da8920493ccceec6ce (diff)
Add support for binary representations
xsde/cxx/hybrid/insertion-*: insertion operators generator xsde/cxx/hybrid/extraction-*: extraction operators generator libxsde/xsde/cxx/hybrid/cdr/: CDR support code libxsde/xsde/cxx/hybrid/xdr/: XDR support code tests/cxx/hybrid/binary/: new tests examples/cxx/hybrid/binary/: new examples documentation/cxx/hybrid/guide/: new chapter
Diffstat (limited to 'dist')
-rw-r--r--dist/build/config.make2
-rw-r--r--dist/config/config.make16
-rw-r--r--dist/config/config.nmake16
-rw-r--r--dist/etc/evc-4.0/config.nmake16
-rw-r--r--dist/etc/iphone/config-device.make16
-rw-r--r--dist/etc/iphone/config-simulator.make16
-rw-r--r--dist/etc/lynxos/config-4.2.make16
-rw-r--r--dist/etc/qnx/config-6.3-gcc-2.95.make16
-rw-r--r--dist/etc/qnx/config-6.3-gcc-3.3.make16
-rw-r--r--dist/etc/qnx/config-6.4.make16
-rw-r--r--dist/etc/vc-8.0/config-max.nmake16
-rw-r--r--dist/etc/vc-8.0/config-min.nmake16
-rw-r--r--dist/etc/vc-9.0/config-max.nmake16
-rw-r--r--dist/etc/vc-9.0/config-min.nmake16
-rw-r--r--dist/etc/vxworks/config-5.5.1.make16
-rw-r--r--dist/etc/vxworks/config-6.4-max.make (renamed from dist/etc/vxworks/config-max-6.4.make)16
-rw-r--r--dist/etc/vxworks/config-6.4-min.make (renamed from dist/etc/vxworks/config-min-6.4.make)16
-rw-r--r--dist/examples/cxx/hybrid/binary/cdr/makefile58
-rw-r--r--dist/examples/cxx/hybrid/binary/cdr/nmakefile55
-rw-r--r--dist/examples/cxx/hybrid/binary/custom/makefile70
-rw-r--r--dist/examples/cxx/hybrid/binary/custom/nmakefile68
-rw-r--r--dist/examples/cxx/hybrid/binary/custom/options8
-rw-r--r--dist/examples/cxx/hybrid/binary/makefile33
-rw-r--r--dist/examples/cxx/hybrid/binary/nmakefile29
-rw-r--r--dist/examples/cxx/hybrid/binary/xdr/makefile58
-rw-r--r--dist/examples/cxx/hybrid/binary/xdr/nmakefile53
-rw-r--r--dist/examples/cxx/hybrid/makefile2
-rw-r--r--dist/libxsde/xsde/makefile19
-rw-r--r--dist/libxsde/xsde/nmakefile19
29 files changed, 729 insertions, 1 deletions
diff --git a/dist/build/config.make b/dist/build/config.make
index 44f3c36..532bdf0 100644
--- a/dist/build/config.make
+++ b/dist/build/config.make
@@ -22,6 +22,8 @@ XSDE_SNPRINTF := $(strip $(XSDE_SNPRINTF))
XSDE_PARSER_VALIDATION := $(strip $(XSDE_PARSER_VALIDATION))
XSDE_SERIALIZER_VALIDATION := $(strip $(XSDE_SERIALIZER_VALIDATION))
XSDE_REUSE_STYLE := $(strip $(XSDE_REUSE_STYLE))
+XSDE_CDR := $(strip $(XSDE_CDR))
+XSDE_XDR := $(strip $(XSDE_XDR))
XSDE_POLYMORPHIC := $(strip $(XSDE_POLYMORPHIC))
XSDE_PARSER_SMAP_BUCKETS := $(strip $(XSDE_PARSER_SMAP_BUCKETS))
XSDE_PARSER_IMAP_BUCKETS := $(strip $(XSDE_PARSER_IMAP_BUCKETS))
diff --git a/dist/config/config.make b/dist/config/config.make
index b6c4212..0602490 100644
--- a/dist/config/config.make
+++ b/dist/config/config.make
@@ -95,6 +95,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/config/config.nmake b/dist/config/config.nmake
index 6279c60..79e68d8 100644
--- a/dist/config/config.nmake
+++ b/dist/config/config.nmake
@@ -94,6 +94,22 @@ XSDE_SERIALIZER_VALIDATION = y
XSDE_REUSE_STYLE = tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR = n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR = n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/evc-4.0/config.nmake b/dist/etc/evc-4.0/config.nmake
index 78d5840..b42a80b 100644
--- a/dist/etc/evc-4.0/config.nmake
+++ b/dist/etc/evc-4.0/config.nmake
@@ -97,6 +97,22 @@ XSDE_SERIALIZER_VALIDATION = y
XSDE_REUSE_STYLE = tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR = n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR = n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/iphone/config-device.make b/dist/etc/iphone/config-device.make
index 84fd828..8fde555 100644
--- a/dist/etc/iphone/config-device.make
+++ b/dist/etc/iphone/config-device.make
@@ -102,6 +102,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/iphone/config-simulator.make b/dist/etc/iphone/config-simulator.make
index fc9ab84..0f2853d 100644
--- a/dist/etc/iphone/config-simulator.make
+++ b/dist/etc/iphone/config-simulator.make
@@ -102,6 +102,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/lynxos/config-4.2.make b/dist/etc/lynxos/config-4.2.make
index 56ff0e1..183566d 100644
--- a/dist/etc/lynxos/config-4.2.make
+++ b/dist/etc/lynxos/config-4.2.make
@@ -101,6 +101,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/qnx/config-6.3-gcc-2.95.make b/dist/etc/qnx/config-6.3-gcc-2.95.make
index 0b4b28d..fe97e86 100644
--- a/dist/etc/qnx/config-6.3-gcc-2.95.make
+++ b/dist/etc/qnx/config-6.3-gcc-2.95.make
@@ -100,6 +100,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/qnx/config-6.3-gcc-3.3.make b/dist/etc/qnx/config-6.3-gcc-3.3.make
index 80343c4..37345f6 100644
--- a/dist/etc/qnx/config-6.3-gcc-3.3.make
+++ b/dist/etc/qnx/config-6.3-gcc-3.3.make
@@ -100,6 +100,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/qnx/config-6.4.make b/dist/etc/qnx/config-6.4.make
index d14e458..3d4f3b6 100644
--- a/dist/etc/qnx/config-6.4.make
+++ b/dist/etc/qnx/config-6.4.make
@@ -100,6 +100,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/vc-8.0/config-max.nmake b/dist/etc/vc-8.0/config-max.nmake
index cd1e4a1..1fb78e5 100644
--- a/dist/etc/vc-8.0/config-max.nmake
+++ b/dist/etc/vc-8.0/config-max.nmake
@@ -98,6 +98,22 @@ XSDE_SERIALIZER_VALIDATION = y
XSDE_REUSE_STYLE = tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR = n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR = n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/vc-8.0/config-min.nmake b/dist/etc/vc-8.0/config-min.nmake
index b2f3c6d..2d4f742 100644
--- a/dist/etc/vc-8.0/config-min.nmake
+++ b/dist/etc/vc-8.0/config-min.nmake
@@ -98,6 +98,22 @@ XSDE_SERIALIZER_VALIDATION = y
XSDE_REUSE_STYLE = tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR = n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR = n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/vc-9.0/config-max.nmake b/dist/etc/vc-9.0/config-max.nmake
index 24bf39b..585ff0e 100644
--- a/dist/etc/vc-9.0/config-max.nmake
+++ b/dist/etc/vc-9.0/config-max.nmake
@@ -98,6 +98,22 @@ XSDE_SERIALIZER_VALIDATION = y
XSDE_REUSE_STYLE = tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR = n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR = n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/vc-9.0/config-min.nmake b/dist/etc/vc-9.0/config-min.nmake
index c085f97..1b141df 100644
--- a/dist/etc/vc-9.0/config-min.nmake
+++ b/dist/etc/vc-9.0/config-min.nmake
@@ -98,6 +98,22 @@ XSDE_SERIALIZER_VALIDATION = y
XSDE_REUSE_STYLE = tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR = n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR = n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/vxworks/config-5.5.1.make b/dist/etc/vxworks/config-5.5.1.make
index 2de4676..65d96ad 100644
--- a/dist/etc/vxworks/config-5.5.1.make
+++ b/dist/etc/vxworks/config-5.5.1.make
@@ -101,6 +101,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/vxworks/config-max-6.4.make b/dist/etc/vxworks/config-6.4-max.make
index 5aa80e8..ac063e4 100644
--- a/dist/etc/vxworks/config-max-6.4.make
+++ b/dist/etc/vxworks/config-6.4-max.make
@@ -112,6 +112,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/etc/vxworks/config-min-6.4.make b/dist/etc/vxworks/config-6.4-min.make
index 522771f..a9f9ba5 100644
--- a/dist/etc/vxworks/config-min-6.4.make
+++ b/dist/etc/vxworks/config-6.4-min.make
@@ -100,6 +100,22 @@ XSDE_SERIALIZER_VALIDATION := y
XSDE_REUSE_STYLE := tiein
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the CDR (Common Data Representation) binary format.
+# This functionality requires the ACE library.
+#
+XSDE_CDR := n
+
+
+# Set to 'y' if you want support for serialization of the C++/Hybrid
+# object model to the XDR (eXternal Data Representation) binary format.
+# This functionality requires the XDR API which is available out of the
+# box on most POSIX systems as part of Sun RPC. On other platforms you
+# may need to install a third-party library which provides the XDR API.
+#
+XSDE_XDR := n
+
+
# Set to 'y' if you need to handle XML vocabularies that use XML Schema
# polymorphism (xsi:type or substitution groups). Also don't forget to
# use either --generate-polymorphic (generates polymorphism-aware code)
diff --git a/dist/examples/cxx/hybrid/binary/cdr/makefile b/dist/examples/cxx/hybrid/binary/cdr/makefile
new file mode 100644
index 0000000..96c6274
--- /dev/null
+++ b/dist/examples/cxx/hybrid/binary/cdr/makefile
@@ -0,0 +1,58 @@
+root := ../../../../..
+
+include $(root)/build/cxx/rules.make
+
+override LIBS += -lACE
+
+# Build.
+#
+EXTRA_CPPFLAGS := -I$(root)/libxsde
+
+ifeq ($(XSDE_STL),n)
+EXTRA_XSDFLAGS += --no-stl
+endif
+
+ifeq ($(XSDE_LONGLONG),n)
+EXTRA_XSDFLAGS += --no-long-long
+endif
+
+ifeq ($(XSDE_PARSER_VALIDATION),n)
+EXTRA_XSDFLAGS += --suppress-validation
+endif
+
+ifeq ($(XSDE_REUSE_STYLE),mixin)
+EXTRA_XSDFLAGS += --reuse-style-mixin
+endif
+
+driver: driver.o library.o library-pskel.o library-pimpl.o \
+library-sskel.o library-simpl.o $(root)/libxsde/xsde/libxsde.a
+
+driver.o: driver.cxx library.hxx library-pimpl.hxx library-simpl.hxx
+library.o: library.cxx library.hxx
+library-pskel.o: library-pskel.cxx
+library-pimpl.o: library-pimpl.cxx
+library-simpl.o: library-simpl.cxx
+library-simpl.o: library-simpl.cxx
+
+.PRECIOUS: %.hxx %.cxx %-pskel.hxx %-pskel.cxx %-pimpl.hxx %-pimpl.cxx \
+%-sskel.hxx %-sskel.cxx %-simpl.hxx %-simpl.cxx
+
+%.hxx %.cxx %-pskel.hxx %-pskel.cxx %-pimpl.hxx %-pimpl.cxx \
+%-sskel.hxx %-sskel.cxx %-simpl.hxx %-simpl.cxx: %.xsd
+ $(root)/bin/xsde cxx-hybrid $(XSDFLAGS) $(EXTRA_XSDFLAGS) \
+--generate-parser --generate-serializer --generate-aggregate \
+--generate-insertion CDR --generate-extraction CDR $<
+
+# Test.
+#
+.PHONY: test
+test: driver library.xml
+ ./driver library.xml
+
+# Clean.
+#
+.PHONY: clean
+clean:
+ rm -f library-pimpl.?xx library-pskel.?xx library-simpl.?xx \
+library-sskel.?xx library.?xx library-pimpl.o library-pskel.o \
+library-simpl.o library-sskel.o library.o driver.o driver
diff --git a/dist/examples/cxx/hybrid/binary/cdr/nmakefile b/dist/examples/cxx/hybrid/binary/cdr/nmakefile
new file mode 100644
index 0000000..a87ded2
--- /dev/null
+++ b/dist/examples/cxx/hybrid/binary/cdr/nmakefile
@@ -0,0 +1,55 @@
+root = ..\..\..\..\..
+
+!include $(root)\build\cxx\rules.nmake
+
+LIBS = $(LIBS) ACE.lib
+
+# Build.
+#
+EXTRA_CPPFLAGS = /I$(root)\libxsde
+
+!if "$(XSDE_STL)" == "n"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --no-stl
+!endif
+
+!if "$(XSDE_LONGLONG)" == "n"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --no-long-long
+!endif
+
+!if "$(XSDE_PARSER_VALIDATION)" == "n"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --suppress-validation
+!endif
+
+!if "$(XSDE_REUSE_STYLE)" == "mixin"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --reuse-style-mixin
+!endif
+
+driver.exe: driver.obj library.obj library-pskel.obj library-pimpl.obj \
+library-sskel.obj library-simpl.obj $(root)\libxsde\xsde\xsde.lib
+
+driver.obj: driver.cxx library.hxx library-pimpl.hxx library-simpl.hxx
+library.obj: library.cxx
+library-pskel.obj: library-pskel.cxx
+library-pimpl.obj: library-pimpl.cxx
+library-sskel.obj: library-sskel.cxx
+library-simpl.obj: library-simpl.cxx
+
+library.cxx library.hxx \
+library-pskel.cxx library-pskel.hxx library-pimpl.cxx library-pimpl.hxx \
+library-sskel.cxx library-sskel.hxx library-simpl.cxx library-simpl.hxx \
+: library.xsd
+ $(root)\bin\xsde.exe cxx-hybrid $(XSDFLAGS) $(EXTRA_XSDFLAGS) \
+--generate-parser --generate-serializer --generate-aggregate \
+--generate-insertion CDR --generate-extraction CDR library.xsd
+
+# Test.
+#
+test: driver.exe library.xml
+ .\driver.exe library.xml
+
+# Clean.
+#
+clean:
+ -del library-pimpl.?xx library-pskel.?xx library-simpl.?xx \
+library-sskel.?xx library.?xx library-pimpl.obj library-pskel.obj \
+library-simpl.obj library-sskel.obj library.obj driver.obj driver.exe
diff --git a/dist/examples/cxx/hybrid/binary/custom/makefile b/dist/examples/cxx/hybrid/binary/custom/makefile
new file mode 100644
index 0000000..c0e57ad
--- /dev/null
+++ b/dist/examples/cxx/hybrid/binary/custom/makefile
@@ -0,0 +1,70 @@
+root := ../../../../..
+
+include $(root)/build/cxx/rules.make
+
+# Build.
+#
+EXTRA_CPPFLAGS := -I$(root)/libxsde
+
+ifeq ($(XSDE_STL),n)
+EXTRA_XSDFLAGS += --no-stl
+endif
+
+ifeq ($(XSDE_LONGLONG),n)
+EXTRA_XSDFLAGS += --no-long-long
+endif
+
+ifeq ($(XSDE_PARSER_VALIDATION),n)
+EXTRA_XSDFLAGS += --suppress-validation
+endif
+
+ifeq ($(XSDE_REUSE_STYLE),mixin)
+EXTRA_XSDFLAGS += --reuse-style-mixin
+endif
+
+driver: driver.o library.o library-pskel.o library-pimpl.o \
+library-sskel.o library-simpl.o exceptions.o orawstream.o \
+irawstream.o $(root)/libxsde/xsde/libxsde.a
+
+driver.o: driver.cxx library.hxx library-pimpl.hxx library-simpl.hxx
+exceptions.o: exceptions.cxx
+orawstream.o: orawstream.cxx xml-schema.hxx
+irawstream.o: irawstream.cxx xml-schema.hxx
+library.o: library.cxx library.hxx
+library-pskel.o: library-pskel.cxx library-pskel.hxx
+library-pimpl.o: library-pimpl.cxx library-pskel.hxx
+library-simpl.o: library-simpl.cxx library-simpl.hxx
+library-simpl.o: library-simpl.cxx library-simpl.hxx
+
+library.hxx: xml-schema.hxx
+library-pskel.hxx: xml-schema-pskel.hxx
+library-pimpl.hxx: xml-schema-pskel.hxx
+library-sskel.hxx: xml-schema-sskel.hxx
+library-simpl.hxx: xml-schema-sskel.hxx
+
+.PRECIOUS: %.hxx %.cxx %-pskel.hxx %-pskel.cxx %-pimpl.hxx %-pimpl.cxx \
+%-sskel.hxx %-sskel.cxx %-simpl.hxx %-simpl.cxx
+
+xml-schema%hxx xml-schema-pskel%hxx xml-schema-sskel%hxx:
+ $(root)/bin/xsde cxx-hybrid $(XSDFLAGS) $(EXTRA_XSDFLAGS) \
+--generate-parser --generate-serializer --generate-xml-schema xml-schema.xsd
+
+%.hxx %.cxx %-pskel.hxx %-pskel.cxx %-pimpl.hxx %-pimpl.cxx \
+%-sskel.hxx %-sskel.cxx %-simpl.hxx %-simpl.cxx: %.xsd
+ $(root)/bin/xsde cxx-hybrid $(XSDFLAGS) $(EXTRA_XSDFLAGS) \
+--options-file options $<
+
+# Test.
+#
+.PHONY: test
+test: driver library.xml
+ ./driver library.xml
+
+# Clean.
+#
+.PHONY: clean
+clean:
+ rm -f xml-schema.hxx xml-schema-pskel.hxx xml-schema-sskel.hxx \
+library-pimpl.?xx library-pskel.?xx library-simpl.?xx library-sskel.?xx \
+library.?xx library-pimpl.o library-pskel.o library-simpl.o library-sskel.o \
+library.o irawstream.o orawstream.o exceptions.o driver.o driver
diff --git a/dist/examples/cxx/hybrid/binary/custom/nmakefile b/dist/examples/cxx/hybrid/binary/custom/nmakefile
new file mode 100644
index 0000000..b53db8e
--- /dev/null
+++ b/dist/examples/cxx/hybrid/binary/custom/nmakefile
@@ -0,0 +1,68 @@
+root = ..\..\..\..\..
+
+!include $(root)\build\cxx\rules.nmake
+
+# Build.
+#
+EXTRA_CPPFLAGS = /I$(root)\libxsde
+
+!if "$(XSDE_STL)" == "n"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --no-stl
+!endif
+
+!if "$(XSDE_LONGLONG)" == "n"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --no-long-long
+!endif
+
+!if "$(XSDE_PARSER_VALIDATION)" == "n"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --suppress-validation
+!endif
+
+!if "$(XSDE_REUSE_STYLE)" == "mixin"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --reuse-style-mixin
+!endif
+
+driver.exe: driver.obj library.obj library-pskel.obj library-pimpl.obj \
+library-sskel.obj library-simpl.obj exceptions.obj orawstream.obj \
+irawstream.obj $(root)\libxsde\xsde\xsde.lib
+
+driver.obj: driver.cxx library.hxx library-pimpl.hxx library-simpl.hxx
+exceptions.obj: exceptions.cxx
+orawstream.obj: orawstream.cxx xml-schema.hxx
+irawstream.obj: irawstream.cxx xml-schema.hxx
+library.obj: library.cxx library.hxx
+library-pskel.obj: library-pskel.cxx library-pskel.hxx
+library-pimpl.obj: library-pimpl.cxx library-pskel.hxx
+library-simpl.obj: library-simpl.cxx library-simpl.hxx
+library-simpl.obj: library-simpl.cxx library-simpl.hxx
+
+library.hxx: xml-schema.hxx
+library-pskel.hxx: xml-schema-pskel.hxx
+library-sskel.hxx: xml-schema-sskel.hxx
+library-sskel.hxx: xml-schema-sskel.hxx
+library-simpl.hxx: xml-schema-sskel.hxx
+
+xml-schema.hxx xml-schema-pskel.hxx xml-schema-sskel.hxx:
+ $(root)\bin\xsde.exe cxx-hybrid $(XSDFLAGS) $(EXTRA_XSDFLAGS) \
+--generate-parser --generate-serializer --generate-xml-schema xml-schema.xsd
+
+library.cxx library.hxx \
+library-pskel.cxx library-pskel.hxx library-pimpl.cxx library-pimpl.hxx \
+library-sskel.cxx library-sskel.hxx library-simpl.cxx library-simpl.hxx \
+: library.xsd
+ $(root)\bin\xsde.exe cxx-hybrid $(XSDFLAGS) $(EXTRA_XSDFLAGS) \
+--options-file options library.xsd
+
+# Test.
+#
+test: driver.exe library.xml
+ .\driver.exe library.xml
+
+# Clean.
+#
+clean:
+ -del xml-schema.hxx xml-schema-pskel.hxx xml-schema-sskel.hxx \
+library-pimpl.?xx library-pskel.?xx library-simpl.?xx library-sskel.?xx \
+library.?xx library-pimpl.obj library-pskel.obj library-simpl.obj \
+library-sskel.obj library.obj irawstream.obj orawstream.obj exceptions.obj \
+driver.obj driver.exe
diff --git a/dist/examples/cxx/hybrid/binary/custom/options b/dist/examples/cxx/hybrid/binary/custom/options
new file mode 100644
index 0000000..f37d345
--- /dev/null
+++ b/dist/examples/cxx/hybrid/binary/custom/options
@@ -0,0 +1,8 @@
+--generate-parser
+--generate-serializer
+--generate-aggregate
+--generate-insertion orawstream
+--hxx-prologue #include "orawstream.hxx"
+--generate-extraction irawstream
+--hxx-prologue #include "irawstream.hxx"
+--extern-xml-schema xml-schema.xsd
diff --git a/dist/examples/cxx/hybrid/binary/makefile b/dist/examples/cxx/hybrid/binary/makefile
new file mode 100644
index 0000000..a683d0e
--- /dev/null
+++ b/dist/examples/cxx/hybrid/binary/makefile
@@ -0,0 +1,33 @@
+root := ../../../..
+
+include $(root)/build/config.make
+
+dirs :=
+
+ifeq ($(XSDE_IOSTREAM),y)
+ifeq ($(XSDE_EXCEPTIONS),y)
+
+dirs += custom
+
+ifeq ($(XSDE_CDR),y)
+dirs += cdr
+endif
+
+ifeq ($(XSDE_XDR),y)
+dirs += xdr
+endif
+
+endif
+endif
+
+.PHONY: all $(dirs)
+
+all: $(dirs)
+
+$(dirs):
+ @$(MAKE) -C $@ $(MAKECMDGOALS)
+
+makefile: ;
+%.make:: ;
+
+%:: $(dirs) ;
diff --git a/dist/examples/cxx/hybrid/binary/nmakefile b/dist/examples/cxx/hybrid/binary/nmakefile
new file mode 100644
index 0000000..384694a
--- /dev/null
+++ b/dist/examples/cxx/hybrid/binary/nmakefile
@@ -0,0 +1,29 @@
+root = ..\..\..\..
+
+!include $(root)\build\config.nmake
+
+dirs =
+
+!if "$(XSDE_IOSTREAM)" == "y"
+!if "$(XSDE_EXCEPTIONS)" == "y"
+
+dirs = $(dirs) custom
+
+!if "$(XSDE_CDR)" == "y"
+dirs = $(dirs) cdr
+!endif
+
+!if "$(XSDE_XDR)" == "y"
+dirs = $(dirs) xdr
+!endif
+
+!endif
+!endif
+
+all:
+ @for %i in ( $(dirs) ) do \
+@cmd /c "cd %i & $(MAKE) /nologo /f nmakefile"
+
+test clean:
+ @for %i in ( $(dirs) ) do \
+@cmd /c "cd %i & $(MAKE) /nologo /f nmakefile $@"
diff --git a/dist/examples/cxx/hybrid/binary/xdr/makefile b/dist/examples/cxx/hybrid/binary/xdr/makefile
new file mode 100644
index 0000000..95ceade
--- /dev/null
+++ b/dist/examples/cxx/hybrid/binary/xdr/makefile
@@ -0,0 +1,58 @@
+root := ../../../../..
+
+include $(root)/build/cxx/rules.make
+
+override LIBS += -lnsl
+
+# Build.
+#
+EXTRA_CPPFLAGS := -I$(root)/libxsde
+
+ifeq ($(XSDE_STL),n)
+EXTRA_XSDFLAGS += --no-stl
+endif
+
+ifeq ($(XSDE_LONGLONG),n)
+EXTRA_XSDFLAGS += --no-long-long
+endif
+
+ifeq ($(XSDE_PARSER_VALIDATION),n)
+EXTRA_XSDFLAGS += --suppress-validation
+endif
+
+ifeq ($(XSDE_REUSE_STYLE),mixin)
+EXTRA_XSDFLAGS += --reuse-style-mixin
+endif
+
+driver: driver.o library.o library-pskel.o library-pimpl.o \
+library-sskel.o library-simpl.o $(root)/libxsde/xsde/libxsde.a
+
+driver.o: driver.cxx library.hxx library-pimpl.hxx library-simpl.hxx
+library.o: library.cxx library.hxx
+library-pskel.o: library-pskel.cxx
+library-pimpl.o: library-pimpl.cxx
+library-simpl.o: library-simpl.cxx
+library-simpl.o: library-simpl.cxx
+
+.PRECIOUS: %.hxx %.cxx %-pskel.hxx %-pskel.cxx %-pimpl.hxx %-pimpl.cxx \
+%-sskel.hxx %-sskel.cxx %-simpl.hxx %-simpl.cxx
+
+%.hxx %.cxx %-pskel.hxx %-pskel.cxx %-pimpl.hxx %-pimpl.cxx \
+%-sskel.hxx %-sskel.cxx %-simpl.hxx %-simpl.cxx: %.xsd
+ $(root)/bin/xsde cxx-hybrid $(XSDFLAGS) $(EXTRA_XSDFLAGS) \
+--generate-parser --generate-serializer --generate-aggregate \
+--generate-insertion XDR --generate-extraction XDR $<
+
+# Test.
+#
+.PHONY: test
+test: driver library.xml
+ ./driver library.xml
+
+# Clean.
+#
+.PHONY: clean
+clean:
+ rm -f library-pimpl.?xx library-pskel.?xx library-simpl.?xx \
+library-sskel.?xx library.?xx library-pimpl.o library-pskel.o \
+library-simpl.o library-sskel.o library.o driver.o driver
diff --git a/dist/examples/cxx/hybrid/binary/xdr/nmakefile b/dist/examples/cxx/hybrid/binary/xdr/nmakefile
new file mode 100644
index 0000000..f71e178
--- /dev/null
+++ b/dist/examples/cxx/hybrid/binary/xdr/nmakefile
@@ -0,0 +1,53 @@
+root = ..\..\..\..\..
+
+!include $(root)\build\cxx\rules.nmake
+
+# Build.
+#
+EXTRA_CPPFLAGS = /I$(root)\libxsde
+
+!if "$(XSDE_STL)" == "n"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --no-stl
+!endif
+
+!if "$(XSDE_LONGLONG)" == "n"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --no-long-long
+!endif
+
+!if "$(XSDE_PARSER_VALIDATION)" == "n"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --suppress-validation
+!endif
+
+!if "$(XSDE_REUSE_STYLE)" == "mixin"
+EXTRA_XSDFLAGS = $(EXTRA_XSDFLAGS) --reuse-style-mixin
+!endif
+
+driver.exe: driver.obj library.obj library-pskel.obj library-pimpl.obj \
+library-sskel.obj library-simpl.obj $(root)\libxsde\xsde\xsde.lib
+
+driver.obj: driver.cxx library.hxx library-pimpl.hxx library-simpl.hxx
+library.obj: library.cxx
+library-pskel.obj: library-pskel.cxx
+library-pimpl.obj: library-pimpl.cxx
+library-sskel.obj: library-sskel.cxx
+library-simpl.obj: library-simpl.cxx
+
+library.cxx library.hxx \
+library-pskel.cxx library-pskel.hxx library-pimpl.cxx library-pimpl.hxx \
+library-sskel.cxx library-sskel.hxx library-simpl.cxx library-simpl.hxx \
+: library.xsd
+ $(root)\bin\xsde.exe cxx-hybrid $(XSDFLAGS) $(EXTRA_XSDFLAGS) \
+--generate-parser --generate-serializer --generate-aggregate \
+--generate-insertion XDR --generate-extraction XDR library.xsd
+
+# Test.
+#
+test: driver.exe library.xml
+ .\driver.exe library.xml
+
+# Clean.
+#
+clean:
+ -del library-pimpl.?xx library-pskel.?xx library-simpl.?xx \
+library-sskel.?xx library.?xx library-pimpl.obj library-pskel.obj \
+library-simpl.obj library-sskel.obj library.obj driver.obj driver.exe
diff --git a/dist/examples/cxx/hybrid/makefile b/dist/examples/cxx/hybrid/makefile
index fdcec1d..38ccd04 100644
--- a/dist/examples/cxx/hybrid/makefile
+++ b/dist/examples/cxx/hybrid/makefile
@@ -2,7 +2,7 @@ root := ../../..
include $(root)/build/config.make
-dirs := compositors
+dirs := binary compositors
ifeq ($(XSDE_IOSTREAM),y)
ifeq ($(XSDE_EXCEPTIONS),y)
diff --git a/dist/libxsde/xsde/makefile b/dist/libxsde/xsde/makefile
index 7ce4bdc..9120561 100644
--- a/dist/libxsde/xsde/makefile
+++ b/dist/libxsde/xsde/makefile
@@ -49,6 +49,25 @@ endif
##
src += cxx/hybrid/sequence.cxx
+ifeq ($(XSDE_CDR),y)
+src += \
+cxx/hybrid/cdr/exceptions.cxx \
+cxx/hybrid/cdr/istream.cxx \
+cxx/hybrid/cdr/ostream.cxx \
+cxx/hybrid/cdr/qname.cxx \
+cxx/hybrid/cdr/date-time.cxx \
+cxx/hybrid/cdr/string-sequence.cxx
+endif
+
+ifeq ($(XSDE_XDR),y)
+src += \
+cxx/hybrid/xdr/exceptions.cxx \
+cxx/hybrid/xdr/istream.cxx \
+cxx/hybrid/xdr/ostream.cxx \
+cxx/hybrid/xdr/qname.cxx \
+cxx/hybrid/xdr/date-time.cxx \
+cxx/hybrid/xdr/string-sequence.cxx
+endif
## C++/Parser
##
diff --git a/dist/libxsde/xsde/nmakefile b/dist/libxsde/xsde/nmakefile
index 5588d57..2e7e11a 100644
--- a/dist/libxsde/xsde/nmakefile
+++ b/dist/libxsde/xsde/nmakefile
@@ -51,6 +51,25 @@ src = $(src) cxx\xml\char-table.cxx cxx\xml\ncname.cxx
##
src = $(src) cxx\hybrid\sequence.cxx
+!if "$(XSDE_CDR)" == "y"
+src = $(src) \
+cxx\hybrid\cdr\exceptions.cxx \
+cxx\hybrid\cdr\istream.cxx \
+cxx\hybrid\cdr\ostream.cxx \
+cxx\hybrid\cdr\qname.cxx \
+cxx\hybrid\cdr\date-time.cxx \
+cxx\hybrid\cdr\string-sequence.cxx
+!endif
+
+!if "$(XSDE_XDR)" == "y"
+src = $(src) \
+cxx\hybrid\xdr\exceptions.cxx \
+cxx\hybrid\xdr\istream.cxx \
+cxx\hybrid\xdr\ostream.cxx \
+cxx\hybrid\xdr\qname.cxx \
+cxx\hybrid\xdr\date-time.cxx \
+cxx\hybrid\xdr\string-sequence.cxx
+!endif
## C++/Parser
##