From 0bce70a0e483294b83b8bf9d5468838a63405612 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sun, 8 Mar 2009 17:23:30 +0200 Subject: 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 --- dist/build/config.make | 2 + dist/config/config.make | 16 +++ dist/config/config.nmake | 16 +++ dist/etc/evc-4.0/config.nmake | 16 +++ dist/etc/iphone/config-device.make | 16 +++ dist/etc/iphone/config-simulator.make | 16 +++ dist/etc/lynxos/config-4.2.make | 16 +++ dist/etc/qnx/config-6.3-gcc-2.95.make | 16 +++ dist/etc/qnx/config-6.3-gcc-3.3.make | 16 +++ dist/etc/qnx/config-6.4.make | 16 +++ dist/etc/vc-8.0/config-max.nmake | 16 +++ dist/etc/vc-8.0/config-min.nmake | 16 +++ dist/etc/vc-9.0/config-max.nmake | 16 +++ dist/etc/vc-9.0/config-min.nmake | 16 +++ dist/etc/vxworks/config-5.5.1.make | 16 +++ dist/etc/vxworks/config-6.4-max.make | 168 +++++++++++++++++++++++ dist/etc/vxworks/config-6.4-min.make | 156 +++++++++++++++++++++ dist/etc/vxworks/config-max-6.4.make | 152 -------------------- dist/etc/vxworks/config-min-6.4.make | 140 ------------------- dist/examples/cxx/hybrid/binary/cdr/makefile | 58 ++++++++ dist/examples/cxx/hybrid/binary/cdr/nmakefile | 55 ++++++++ dist/examples/cxx/hybrid/binary/custom/makefile | 70 ++++++++++ dist/examples/cxx/hybrid/binary/custom/nmakefile | 68 +++++++++ dist/examples/cxx/hybrid/binary/custom/options | 8 ++ dist/examples/cxx/hybrid/binary/makefile | 33 +++++ dist/examples/cxx/hybrid/binary/nmakefile | 29 ++++ dist/examples/cxx/hybrid/binary/xdr/makefile | 58 ++++++++ dist/examples/cxx/hybrid/binary/xdr/nmakefile | 53 +++++++ dist/examples/cxx/hybrid/makefile | 2 +- dist/libxsde/xsde/makefile | 19 +++ dist/libxsde/xsde/nmakefile | 19 +++ 31 files changed, 1021 insertions(+), 293 deletions(-) create mode 100644 dist/etc/vxworks/config-6.4-max.make create mode 100644 dist/etc/vxworks/config-6.4-min.make delete mode 100644 dist/etc/vxworks/config-max-6.4.make delete mode 100644 dist/etc/vxworks/config-min-6.4.make create mode 100644 dist/examples/cxx/hybrid/binary/cdr/makefile create mode 100644 dist/examples/cxx/hybrid/binary/cdr/nmakefile create mode 100644 dist/examples/cxx/hybrid/binary/custom/makefile create mode 100644 dist/examples/cxx/hybrid/binary/custom/nmakefile create mode 100644 dist/examples/cxx/hybrid/binary/custom/options create mode 100644 dist/examples/cxx/hybrid/binary/makefile create mode 100644 dist/examples/cxx/hybrid/binary/nmakefile create mode 100644 dist/examples/cxx/hybrid/binary/xdr/makefile create mode 100644 dist/examples/cxx/hybrid/binary/xdr/nmakefile (limited to 'dist') 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-6.4-max.make b/dist/etc/vxworks/config-6.4-max.make new file mode 100644 index 0000000..ac063e4 --- /dev/null +++ b/dist/etc/vxworks/config-6.4-max.make @@ -0,0 +1,168 @@ +# Sample configuration file for VxWorks 6.4 on Pentium using the +# GNU toolchain. This configuration enables STL, iostream, and +# C++ exceptions which can be disabled if not required. +# +# Note that iostream support requires static initialization so +# you will need to 'munch' the examples (and your application) +# before you can run them. Here are the sample step that are +# needed to run the C++/Hybrid 'library' example: +# +# $ cd examples/cxx/hybrid/library/ +# $ make +# $ mv driver partial-image.o +# $ nmpentium *.o | tclsh .../vxworks-6.4/host/resource/hutils/tcl/munch.tcl -c pentium > ctdt.c +# $ ccpentium -O3 -c -fdollars-in-identifiers -fno-zero-initialized-in-bss ctdt.c -o ctdt.o +# $ ccpentium -O3 partial-image.o ctdt.o -o driver +# + +# Toolchain. +# +CC := ccpentium +CFLAGS := -W -Wall -O3 +CPPFLAGS := + +CXX := ccpentium +CXXFLAGS := -W -Wall -O3 + +LD := $(CXX) +LDFLAGS := $(CXXFLAGS) +LIBS := + +# Set RANLIB to empty if your system does not need ranlib. +# +AR := arpentium +ARFLAGS := rc +RANLIB := ranlibpentium + + +# Common XSD/e flags. +# +XSDFLAGS := --generate-inline + + +# Platform. Valid values are: +# +# 'wince' - Windows CE +# 'win32' - Windows 2000, XP, etc. +# 'posix' - POSIX OS, including UNIX/Linux, VxWorks, etc. +# +XSDE_PLATFORM := posix + + +# Platform architecture width in bits. +# +XSDE_ARCH_WIDTH := 32 + + +# Platform byte order. Valid values are 'b' for big-endian +# and 'l' for little-endian. +# +XSDE_BYTEORDER := l + + +# Set to 'n' if you don't have STL (std::string, etc.). Also don't +# forget to use the --no-stl option when compiling your schemas. +# +XSDE_STL := y + + +# Set to 'n' if you don't have iostream. +# +XSDE_IOSTREAM := y + + +# Set to 'n' if you don't have C++ exceptions. Also don't forget to +# use the --no-exceptions option when compiling your schemas. +# +XSDE_EXCEPTIONS := y + + +# Set to 'n' if your platform doesn't have the "long long int" type or +# the strtoull function. Also don't forget to use the --no-long-long +# option when compiling your schemas. +# +XSDE_LONGLONG := n + + +# Set to 'n' if your platform doesn't have the snprintf function. +# +XSDE_SNPRINTF := n + + +# Set to 'n' if you don't want support for XML Schema validation in +# C++/Parser. Also don't forget to use the --suppress-validation +# option when compiling your schemas. +# +XSDE_PARSER_VALIDATION := y + + +# Set to 'n' if you don't want support for XML Schema validation in +# C++/Serializer. Also don't forget to use the --suppress-validation +# option when compiling your schemas. +# +XSDE_SERIALIZER_VALIDATION := y + + +# Base parser/serializer implementation reuse style. Valid values are: +# +# 'mixin' - virtual inheritance-based reuse (specify --reuse-style-mixin) +# 'tiein' - delegation-based reuse (recommended) +# 'none' - no reuse support (specify --reuse-style-none) +# +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) +# or --runtime-polymorphic (generates non-polymorphic code that uses the +# runtime library configured with polymorphism support). Note that support +# for XML Schema polymorphism requires runtime static initialization +# support in the C++ compiler (that is, support for automatic calling +# of constructors for static objects). Furthermore, if the mixin reuse +# style is used (XSDE_REUSE_STYLE) then the generated code requires +# support for dynamic_cast. +# +XSDE_POLYMORPHIC := n + + +# When polymorphism support is enabled (XSDE_POLYMORPHIC), the following +# parameters control the substitution and inheritance hashmaps bucket +# allocation. Because the number of elements in these hashmaps depends +# on the schemas being compiled and thus is fairly static, these hashmaps +# do not perform automatic table resizing. To obtain good performance the +# elements to buckets ratio should be between 0.7 and 0.9. The recommended +# way to ensure this range is to add diagnostics code to your application +# as shown in the documentation and examples. It is also a good idea to +# use prime numbers for bucket counts: 53 97 193 389 769 1543 3079 6151 +# 12289 24593 49157 98317 196613 393241. Inheritance hashmaps are only +# used when validation is enabled. +# +XSDE_PARSER_SMAP_BUCKETS := 53 +XSDE_PARSER_IMAP_BUCKETS := 97 +XSDE_SERIALIZER_SMAP_BUCKETS := 53 +XSDE_SERIALIZER_SMAP_BUCKET_BUCKETS := 53 +XSDE_SERIALIZER_IMAP_BUCKETS := 97 + + +# Options tuning depending on the features selected. +# +ifeq ($(XSDE_EXCEPTIONS),y) +CFLAGS += -fexceptions +endif diff --git a/dist/etc/vxworks/config-6.4-min.make b/dist/etc/vxworks/config-6.4-min.make new file mode 100644 index 0000000..a9f9ba5 --- /dev/null +++ b/dist/etc/vxworks/config-6.4-min.make @@ -0,0 +1,156 @@ +# Sample configuration file for VxWorks 6.4 on Pentium using the +# GNU toolchain. This configuration disables STL, iostream, and +# C++ exceptions which can be enabled if required. +# + +# Toolchain. +# +CC := ccpentium +CFLAGS := -W -Wall -O3 +CPPFLAGS := + +CXX := ccpentium +CXXFLAGS := -W -Wall -O3 + +LD := $(CXX) +LDFLAGS := $(CXXFLAGS) +LIBS := + +# Set RANLIB to empty if your system does not need ranlib. +# +AR := arpentium +ARFLAGS := rc +RANLIB := ranlibpentium + + +# Common XSD/e flags. +# +XSDFLAGS := --generate-inline + + +# Platform. Valid values are: +# +# 'wince' - Windows CE +# 'win32' - Windows 2000, XP, etc. +# 'posix' - POSIX OS, including UNIX/Linux, VxWorks, etc. +# +XSDE_PLATFORM := posix + + +# Platform architecture width in bits. +# +XSDE_ARCH_WIDTH := 32 + + +# Platform byte order. Valid values are 'b' for big-endian +# and 'l' for little-endian. +# +XSDE_BYTEORDER := l + + +# Set to 'n' if you don't have STL (std::string, etc.). Also don't +# forget to use the --no-stl option when compiling your schemas. +# +XSDE_STL := n + + +# Set to 'n' if you don't have iostream. +# +XSDE_IOSTREAM := n + + +# Set to 'n' if you don't have C++ exceptions. Also don't forget to +# use the --no-exceptions option when compiling your schemas. +# +XSDE_EXCEPTIONS := n + + +# Set to 'n' if your platform doesn't have the "long long int" type or +# the strtoull function. Also don't forget to use the --no-long-long +# option when compiling your schemas. +# +XSDE_LONGLONG := n + + +# Set to 'n' if your platform doesn't have the snprintf function. +# +XSDE_SNPRINTF := n + + +# Set to 'n' if you don't want support for XML Schema validation in +# C++/Parser. Also don't forget to use the --suppress-validation +# option when compiling your schemas. +# +XSDE_PARSER_VALIDATION := y + + +# Set to 'n' if you don't want support for XML Schema validation in +# C++/Serializer. Also don't forget to use the --suppress-validation +# option when compiling your schemas. +# +XSDE_SERIALIZER_VALIDATION := y + + +# Base parser/serializer implementation reuse style. Valid values are: +# +# 'mixin' - virtual inheritance-based reuse (specify --reuse-style-mixin) +# 'tiein' - delegation-based reuse (recommended) +# 'none' - no reuse support (specify --reuse-style-none) +# +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) +# or --runtime-polymorphic (generates non-polymorphic code that uses the +# runtime library configured with polymorphism support). Note that support +# for XML Schema polymorphism requires runtime static initialization +# support in the C++ compiler (that is, support for automatic calling +# of constructors for static objects). Furthermore, if the mixin reuse +# style is used (XSDE_REUSE_STYLE) then the generated code requires +# support for dynamic_cast. +# +XSDE_POLYMORPHIC := n + + +# When polymorphism support is enabled (XSDE_POLYMORPHIC), the following +# parameters control the substitution and inheritance hashmaps bucket +# allocation. Because the number of elements in these hashmaps depends +# on the schemas being compiled and thus is fairly static, these hashmaps +# do not perform automatic table resizing. To obtain good performance the +# elements to buckets ratio should be between 0.7 and 0.9. The recommended +# way to ensure this range is to add diagnostics code to your application +# as shown in the documentation and examples. It is also a good idea to +# use prime numbers for bucket counts: 53 97 193 389 769 1543 3079 6151 +# 12289 24593 49157 98317 196613 393241. Inheritance hashmaps are only +# used when validation is enabled. +# +XSDE_PARSER_SMAP_BUCKETS := 53 +XSDE_PARSER_IMAP_BUCKETS := 97 +XSDE_SERIALIZER_SMAP_BUCKETS := 53 +XSDE_SERIALIZER_SMAP_BUCKET_BUCKETS := 53 +XSDE_SERIALIZER_IMAP_BUCKETS := 97 + + +# Options tuning depending on the features selected. +# +ifeq ($(XSDE_EXCEPTIONS),y) +CFLAGS += -fexceptions +endif diff --git a/dist/etc/vxworks/config-max-6.4.make b/dist/etc/vxworks/config-max-6.4.make deleted file mode 100644 index 5aa80e8..0000000 --- a/dist/etc/vxworks/config-max-6.4.make +++ /dev/null @@ -1,152 +0,0 @@ -# Sample configuration file for VxWorks 6.4 on Pentium using the -# GNU toolchain. This configuration enables STL, iostream, and -# C++ exceptions which can be disabled if not required. -# -# Note that iostream support requires static initialization so -# you will need to 'munch' the examples (and your application) -# before you can run them. Here are the sample step that are -# needed to run the C++/Hybrid 'library' example: -# -# $ cd examples/cxx/hybrid/library/ -# $ make -# $ mv driver partial-image.o -# $ nmpentium *.o | tclsh .../vxworks-6.4/host/resource/hutils/tcl/munch.tcl -c pentium > ctdt.c -# $ ccpentium -O3 -c -fdollars-in-identifiers -fno-zero-initialized-in-bss ctdt.c -o ctdt.o -# $ ccpentium -O3 partial-image.o ctdt.o -o driver -# - -# Toolchain. -# -CC := ccpentium -CFLAGS := -W -Wall -O3 -CPPFLAGS := - -CXX := ccpentium -CXXFLAGS := -W -Wall -O3 - -LD := $(CXX) -LDFLAGS := $(CXXFLAGS) -LIBS := - -# Set RANLIB to empty if your system does not need ranlib. -# -AR := arpentium -ARFLAGS := rc -RANLIB := ranlibpentium - - -# Common XSD/e flags. -# -XSDFLAGS := --generate-inline - - -# Platform. Valid values are: -# -# 'wince' - Windows CE -# 'win32' - Windows 2000, XP, etc. -# 'posix' - POSIX OS, including UNIX/Linux, VxWorks, etc. -# -XSDE_PLATFORM := posix - - -# Platform architecture width in bits. -# -XSDE_ARCH_WIDTH := 32 - - -# Platform byte order. Valid values are 'b' for big-endian -# and 'l' for little-endian. -# -XSDE_BYTEORDER := l - - -# Set to 'n' if you don't have STL (std::string, etc.). Also don't -# forget to use the --no-stl option when compiling your schemas. -# -XSDE_STL := y - - -# Set to 'n' if you don't have iostream. -# -XSDE_IOSTREAM := y - - -# Set to 'n' if you don't have C++ exceptions. Also don't forget to -# use the --no-exceptions option when compiling your schemas. -# -XSDE_EXCEPTIONS := y - - -# Set to 'n' if your platform doesn't have the "long long int" type or -# the strtoull function. Also don't forget to use the --no-long-long -# option when compiling your schemas. -# -XSDE_LONGLONG := n - - -# Set to 'n' if your platform doesn't have the snprintf function. -# -XSDE_SNPRINTF := n - - -# Set to 'n' if you don't want support for XML Schema validation in -# C++/Parser. Also don't forget to use the --suppress-validation -# option when compiling your schemas. -# -XSDE_PARSER_VALIDATION := y - - -# Set to 'n' if you don't want support for XML Schema validation in -# C++/Serializer. Also don't forget to use the --suppress-validation -# option when compiling your schemas. -# -XSDE_SERIALIZER_VALIDATION := y - - -# Base parser/serializer implementation reuse style. Valid values are: -# -# 'mixin' - virtual inheritance-based reuse (specify --reuse-style-mixin) -# 'tiein' - delegation-based reuse (recommended) -# 'none' - no reuse support (specify --reuse-style-none) -# -XSDE_REUSE_STYLE := tiein - - -# 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) -# or --runtime-polymorphic (generates non-polymorphic code that uses the -# runtime library configured with polymorphism support). Note that support -# for XML Schema polymorphism requires runtime static initialization -# support in the C++ compiler (that is, support for automatic calling -# of constructors for static objects). Furthermore, if the mixin reuse -# style is used (XSDE_REUSE_STYLE) then the generated code requires -# support for dynamic_cast. -# -XSDE_POLYMORPHIC := n - - -# When polymorphism support is enabled (XSDE_POLYMORPHIC), the following -# parameters control the substitution and inheritance hashmaps bucket -# allocation. Because the number of elements in these hashmaps depends -# on the schemas being compiled and thus is fairly static, these hashmaps -# do not perform automatic table resizing. To obtain good performance the -# elements to buckets ratio should be between 0.7 and 0.9. The recommended -# way to ensure this range is to add diagnostics code to your application -# as shown in the documentation and examples. It is also a good idea to -# use prime numbers for bucket counts: 53 97 193 389 769 1543 3079 6151 -# 12289 24593 49157 98317 196613 393241. Inheritance hashmaps are only -# used when validation is enabled. -# -XSDE_PARSER_SMAP_BUCKETS := 53 -XSDE_PARSER_IMAP_BUCKETS := 97 -XSDE_SERIALIZER_SMAP_BUCKETS := 53 -XSDE_SERIALIZER_SMAP_BUCKET_BUCKETS := 53 -XSDE_SERIALIZER_IMAP_BUCKETS := 97 - - -# Options tuning depending on the features selected. -# -ifeq ($(XSDE_EXCEPTIONS),y) -CFLAGS += -fexceptions -endif diff --git a/dist/etc/vxworks/config-min-6.4.make b/dist/etc/vxworks/config-min-6.4.make deleted file mode 100644 index 522771f..0000000 --- a/dist/etc/vxworks/config-min-6.4.make +++ /dev/null @@ -1,140 +0,0 @@ -# Sample configuration file for VxWorks 6.4 on Pentium using the -# GNU toolchain. This configuration disables STL, iostream, and -# C++ exceptions which can be enabled if required. -# - -# Toolchain. -# -CC := ccpentium -CFLAGS := -W -Wall -O3 -CPPFLAGS := - -CXX := ccpentium -CXXFLAGS := -W -Wall -O3 - -LD := $(CXX) -LDFLAGS := $(CXXFLAGS) -LIBS := - -# Set RANLIB to empty if your system does not need ranlib. -# -AR := arpentium -ARFLAGS := rc -RANLIB := ranlibpentium - - -# Common XSD/e flags. -# -XSDFLAGS := --generate-inline - - -# Platform. Valid values are: -# -# 'wince' - Windows CE -# 'win32' - Windows 2000, XP, etc. -# 'posix' - POSIX OS, including UNIX/Linux, VxWorks, etc. -# -XSDE_PLATFORM := posix - - -# Platform architecture width in bits. -# -XSDE_ARCH_WIDTH := 32 - - -# Platform byte order. Valid values are 'b' for big-endian -# and 'l' for little-endian. -# -XSDE_BYTEORDER := l - - -# Set to 'n' if you don't have STL (std::string, etc.). Also don't -# forget to use the --no-stl option when compiling your schemas. -# -XSDE_STL := n - - -# Set to 'n' if you don't have iostream. -# -XSDE_IOSTREAM := n - - -# Set to 'n' if you don't have C++ exceptions. Also don't forget to -# use the --no-exceptions option when compiling your schemas. -# -XSDE_EXCEPTIONS := n - - -# Set to 'n' if your platform doesn't have the "long long int" type or -# the strtoull function. Also don't forget to use the --no-long-long -# option when compiling your schemas. -# -XSDE_LONGLONG := n - - -# Set to 'n' if your platform doesn't have the snprintf function. -# -XSDE_SNPRINTF := n - - -# Set to 'n' if you don't want support for XML Schema validation in -# C++/Parser. Also don't forget to use the --suppress-validation -# option when compiling your schemas. -# -XSDE_PARSER_VALIDATION := y - - -# Set to 'n' if you don't want support for XML Schema validation in -# C++/Serializer. Also don't forget to use the --suppress-validation -# option when compiling your schemas. -# -XSDE_SERIALIZER_VALIDATION := y - - -# Base parser/serializer implementation reuse style. Valid values are: -# -# 'mixin' - virtual inheritance-based reuse (specify --reuse-style-mixin) -# 'tiein' - delegation-based reuse (recommended) -# 'none' - no reuse support (specify --reuse-style-none) -# -XSDE_REUSE_STYLE := tiein - - -# 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) -# or --runtime-polymorphic (generates non-polymorphic code that uses the -# runtime library configured with polymorphism support). Note that support -# for XML Schema polymorphism requires runtime static initialization -# support in the C++ compiler (that is, support for automatic calling -# of constructors for static objects). Furthermore, if the mixin reuse -# style is used (XSDE_REUSE_STYLE) then the generated code requires -# support for dynamic_cast. -# -XSDE_POLYMORPHIC := n - - -# When polymorphism support is enabled (XSDE_POLYMORPHIC), the following -# parameters control the substitution and inheritance hashmaps bucket -# allocation. Because the number of elements in these hashmaps depends -# on the schemas being compiled and thus is fairly static, these hashmaps -# do not perform automatic table resizing. To obtain good performance the -# elements to buckets ratio should be between 0.7 and 0.9. The recommended -# way to ensure this range is to add diagnostics code to your application -# as shown in the documentation and examples. It is also a good idea to -# use prime numbers for bucket counts: 53 97 193 389 769 1543 3079 6151 -# 12289 24593 49157 98317 196613 393241. Inheritance hashmaps are only -# used when validation is enabled. -# -XSDE_PARSER_SMAP_BUCKETS := 53 -XSDE_PARSER_IMAP_BUCKETS := 97 -XSDE_SERIALIZER_SMAP_BUCKETS := 53 -XSDE_SERIALIZER_SMAP_BUCKET_BUCKETS := 53 -XSDE_SERIALIZER_IMAP_BUCKETS := 97 - - -# Options tuning depending on the features selected. -# -ifeq ($(XSDE_EXCEPTIONS),y) -CFLAGS += -fexceptions -endif 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 ## -- cgit v1.1